00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <vector>
00028 #include <iostream>
00029
00030 #include <ost/base.hh>
00031
00032 #include <ost/info/module_config.hh>
00033
00034
00035 namespace ost { namespace info {
00036
00038
00044 class DLLEXPORT_OST_INFO InfoPath {
00045 friend InfoPath operator+(const InfoPath& p1, const InfoPath& p2);
00046 public:
00048 InfoPath(const String& p);
00049 InfoPath(const char* cp);
00050
00052 std::vector<String> GetList() const {return list_;}
00053
00055 bool IsRelative() const {return relative_flag_;}
00056
00058 String Leaf() const { return list_.empty() ? "" : list_.back(); }
00059
00061 InfoPath Strip() const;
00062
00063 private:
00064 InfoPath(const std::vector<String> lst,bool rf);
00065
00066 std::vector<String> list_;
00067 bool relative_flag_;
00068
00069 void init(const String& path);
00070 };
00071
00072 DLLEXPORT_OST_INFO std::ostream& operator<<(std::ostream&, const InfoPath& p);
00073 #ifndef _MSC_VER
00074 DLLEXPORT_OST_INFO InfoPath operator+(const InfoPath& p1, const InfoPath& p2);
00075 #endif
00076
00077 }}