00001 #ifndef TAGCOLL_TAG_SET_H
00002 #define TAGCOLL_TAG_SET_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #pragma interface
00025
00026 #include <tagcoll/Tag.h>
00027
00028 #include <tagcoll/OpSet.h>
00029
00030 namespace Tagcoll
00031 {
00032
00033 class FacetSet;
00034 class TagMatcher;
00035 class TagConsumer;
00036 class FacetMatcher;
00037 class FacetConsumer;
00038
00039 class TagSet : public OpSet<Tag>
00040 {
00041 public:
00042 using OpSet<Tag>::find;
00043
00044 TagSet() throw ();
00045 TagSet(const OpSet<Tag>&) throw ();
00046 ~TagSet() throw ();
00047
00048 FacetSet getFacets() const throw ();
00049
00050
00051 bool has(const std::string& tag) const throw ();
00052
00053
00054 Tag find(const std::string& name) const throw ();
00055
00056 TagSet getFiltered(const TagMatcher& filter) const throw ();
00057 void output(TagConsumer& cons) const throw ();
00058 void output(TagConsumer& cons, TagMatcher& filter) const throw ();
00059 };
00060
00061 class FacetSet : public OpSet<Facet>
00062 {
00063 public:
00064 using OpSet<Facet>::find;
00065
00066 FacetSet() throw ();
00067 FacetSet(const OpSet<Facet>&) throw ();
00068 ~FacetSet() throw ();
00069
00072 Facet obtainFacet(const std::string& name) throw ();
00073
00076 Tag obtainTag(const std::string& fullname) throw ();
00077
00078
00079 TagSet getTags() const throw ();
00080
00081
00082 bool has(const std::string& facet) const throw ();
00083
00084
00085
00086 bool hasTag(const std::string& tag) const throw ();
00087
00088
00089 Facet find(const std::string& name) const throw ();
00090
00091
00092 Tag findTag(const std::string& tag) const throw ();
00093
00094 FacetSet getFiltered(const FacetMatcher& filter) const throw ();
00095 void output(FacetConsumer& cons) const throw ();
00096 void output(FacetConsumer& cons, FacetMatcher& filter) const throw ();
00097
00098
00099 TagSet getFiltered(const TagMatcher& filter) const throw ();
00100 void output(TagConsumer& cons) const throw ();
00101 void output(TagConsumer& cons, TagMatcher& filter) const throw ();
00102 };
00103
00104 };
00105
00106
00107 #endif