00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _Path_incl_
00021 #define _Path_incl_
00022
00023 #include <rel/TypeStream.h>
00024 #include <rel/StringIODevice.h>
00025
00026
00027 namespace rel
00028 {
00029
00030
00031
00032
00033 class Path : public TypeStream
00034 {
00035 public:
00036 Path(const std::string &path, char separator = '/');
00037 Path(const char *path, char separator = '/');
00038 Path(const Path &src);
00039 Path();
00040 virtual ~Path();
00041
00042 Path &operator = (const Path &src);
00043
00044
00045 bool append(const string &name);
00046
00047 bool append(const string &name, char separator);
00048 bool append(const char *name, char separator = '/');
00049
00050
00051 static OpaqueValue New(const TypeStream *);
00052
00053
00054 void clear();
00055
00056
00057
00058 void Encode(TypeStream &) const;
00059 void Decode(const TypeStream &);
00060 private:
00061
00062 StreamCoder fCoder;
00063 StringIODevice fBuffer;
00064 };
00065
00066 }
00067
00068 rel::TypeStream &operator << (rel::TypeStream &output, const rel::Path &src);
00069
00070 #endif
00071