00001
#ifndef TAGCOLL_TAG_H
00002
#define TAGCOLL_TAG_H
00003
00004
#pragma interface
00005
00006
#include <string>
00007
00008
namespace Tagcoll
00009 {
00010
00011
class Facet;
00012
class FacetImpl;
00013
class TagImpl;
00014
class TagSet;
00015
class FacetSet;
00016
00035 class Tag
00036 {
00037
protected:
00038 TagImpl*
impl;
00039
00040
Tag(FacetImpl* facet,
const std::string& name)
throw ();
00041
00042
public:
00043
Tag() throw ();
00044
Tag(const
Tag& f) throw ();
00045 ~
Tag() throw ();
00046
Tag& operator=(const
Tag& f) throw ();
00047
00048
bool operator==(const
Tag& f) const throw ();
00049
bool operator<(const
Tag& f) const throw ();
00050
00051 operator
bool() const throw ();
00052
00053
Facet facet() const throw ();
00054
00055 const std::string& name() const throw ();
00056 std::string fullname() const throw ();
00057
00058 const std::string& sdesc() const throw ();
00059 const std::string& ldesc() const throw ();
00060 const std::string& fulldata() const throw ();
00061
00062
void sdesc(const std::string& desc) throw ();
00063
void ldesc(const std::string& desc) throw ();
00064
void fulldata(const std::string& desc) throw ();
00065
00066 friend class FacetImpl;
00067 friend class
TagSet;
00068 };
00069
00070 class
Facet
00071 {
00072
protected:
00073 FacetImpl* impl;
00074
00075 Facet(FacetImpl* impl)
throw ();
00076
00077
public:
00078
explicit Facet(
const std::string& name)
throw ();
00079 Facet() throw ();
00080 Facet(const Facet& f) throw ();
00081 ~Facet() throw ();
00082 Facet& operator=(const Facet& f) throw ();
00083
00084
bool operator==(const Facet& f) const throw ();
00085
bool operator<(const Facet& f) const throw ();
00086
00087 operator
bool() const throw ();
00088
00089 const std::string& name() const throw ();
00090
00091 const std::string& sdesc() const throw ();
00092 const std::string& ldesc() const throw ();
00093 const std::string& fulldata() const throw ();
00094
00095
void sdesc(const std::string& desc) throw ();
00096
void ldesc(const std::string& desc) throw ();
00097
void fulldata(const std::string& desc) throw ();
00098
00099
Tag obtainTag(const std::string& name) throw ();
00100
00101
bool hasTag(const std::string& name) const throw ();
00102
Tag getTag(const std::string& name) const throw ();
00103 const TagSet& tags() const throw ();
00104
00105 friend class
Tag;
00106 friend class
FacetSet;
00107 };
00108
00109 };
00110
00111
00112 #endif