00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef HxTag_h
00012 #define HxTag_h
00013
00014 #include "HxStd.h"
00015 #include "HxIoFwd.h"
00016 #include "HxString.h"
00017
00018
00021 class L_HXBASIS HxTag {
00022 public:
00024 HxTag(HxString name);
00025
00027 virtual ~HxTag();
00028
00030 virtual HxTag* clone() const = 0;
00031
00033 HxString getName() const;
00034
00036 virtual STD_OSTREAM& put(STD_OSTREAM&) const = 0;
00037
00038 protected:
00040 HxTag(const HxTag&);
00041 private:
00042 HxTag();
00043 HxString _name;
00044 };
00045
00046 inline STD_OSTREAM&
00047 operator<<(STD_OSTREAM& os, HxTag* tag)
00048 {
00049 return tag->put(os);
00050 }
00051
00052 inline
00053 HxTag::HxTag()
00054 {
00055 }
00056
00057 inline
00058 HxTag::HxTag(const HxTag& rhs)
00059 : _name(rhs._name)
00060 {
00061 }
00062
00063 inline
00064 HxTag::HxTag(HxString name)
00065 : _name(name)
00066 {
00067 }
00068
00069 inline HxString
00070 HxTag::getName() const
00071 {
00072 return _name;
00073 }
00074
00075 #endif