00001 #ifndef DEBTAGS_TAG_H
00002 #define DEBTAGS_TAG_H
00003
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <string>
00027 #include <debtags/fdecls.h>
00028
00029 namespace Debtags
00030 {
00031
00055 class Facet
00056 {
00057 protected:
00058 FacetImpl* impl;
00059
00060 Facet(FacetImpl* impl) throw ();
00061
00062 public:
00063 Facet() throw ();
00064 Facet(const Facet& f) throw ();
00065 ~Facet() throw ();
00066 Facet& operator=(const Facet& f) throw ();
00067
00068 bool operator==(const Facet& f) const throw ();
00069 bool operator<(const Facet& f) const throw ();
00070
00074 operator bool() const throw ();
00075
00079 std::string name() const throw ();
00080
00084 std::string sdesc() const throw ();
00085
00089 std::string ldesc() const throw ();
00090
00094 std::string fulldata() const throw ();
00095
00099 std::string field(const std::string& name) const throw();
00100
00104 bool hasTag(const std::string& name) const throw ();
00105
00109 Tagcoll::OpSet<Tag> tags() const throw ();
00110
00111 #if 0
00112 Tag obtainTag(const std::string& name) throw ();
00113 Tag getTag(const std::string& name) const throw ();
00114 #endif
00115
00116 friend class Tag;
00117 friend class Vocabulary;
00118 };
00119
00142 class Tag
00143 {
00144 protected:
00145 TagImpl* impl;
00146
00147 Tag(TagImpl* tag) throw ();
00148
00149 public:
00150 Tag() throw ();
00151 Tag(const Tag& f) throw ();
00152 ~Tag() throw ();
00153 Tag& operator=(const Tag& f) throw ();
00154
00155 bool operator==(const Tag& f) const throw ();
00156 bool operator<(const Tag& f) const throw ();
00157
00158 operator bool() const throw ();
00159
00160 Facet facet() const throw ();
00161
00165 std::string name() const throw ();
00166
00170 std::string fullname() const throw ();
00171
00175 std::string sdesc() const throw ();
00176
00180 std::string ldesc() const throw ();
00181
00185 std::string fulldata() const throw ();
00186
00190 std::string field(const std::string& name) const throw();
00191
00192 friend class Vocabulary;
00193 };
00194
00195 };
00196
00197
00198 #endif