1 #ifndef EPT_DEBTAGS_VOCABULARY_H
2 #define EPT_DEBTAGS_VOCABULARY_H
28 #include <tagcoll/diskindex/mmap.h>
53 if (
id >= 0 && (
unsigned)
id <
size())
54 return (
Item*)(m_buf + ((
int*)m_buf)[
id]);
60 FacetIndex(
const tagcoll::diskindex::MasterMMap& master,
size_t idx)
61 : tagcoll::diskindex::MMap(master, idx) {}
64 size_t size()
const {
return m_size == 0 ? 0 : *(
int*)m_buf /
sizeof(
int); }
74 const char*
name(
int id)
const {
Item* i =
item(
id);
return i == NULL ?
"" : i->
name; }
76 int id(
const char*
name)
const;
77 int id(
const std::string&
name)
const {
return id(name.c_str()); }
80 class TagIndex :
public tagcoll::diskindex::MMap
92 if (
id >= 0 && (
unsigned)
id <
size())
93 return (
Item*)(m_buf + ((
int*)m_buf)[
id]);
99 TagIndex(
const tagcoll::diskindex::MasterMMap& master,
size_t idx)
100 : tagcoll::diskindex::MMap(master, idx) {}
103 size_t size()
const {
return m_size == 0 ? 0 : *(
int*)m_buf /
sizeof(
int); }
113 int id(
const char*
name)
const;
114 int id(
const std::string&
name)
const {
return id(name.c_str()); }
134 mutable std::vector< std::map<std::string, std::string> >
m_facetData;
135 mutable std::vector< std::map<std::string, std::string> >
m_tagData;
139 void parseVocBuf(std::map<std::string, std::string>& res,
size_t ofs,
size_t len)
const;
159 return findex.
id(name.c_str()) != -1;
165 bool hasTag(
const std::string& fullname)
const
167 return tindex.
id(fullname.c_str()) != -1;
180 template<
typename IDS>
184 for (
typename IDS::const_iterator i = ids.begin();
210 std::set< Facet > res;
230 std::set< Tag >
tags(
int facet)
const
249 const DerivedTagList& getEquations()
const throw () {
return equations; }
253 FacetSet
facets(
const FacetMatcher& filter)
const throw () {
return getFiltered(filter); }
261 const Facet::Data&
facetData(
int idx) {
return m_facets[idx]; }
262 const Tag::Data&
tagData(
int idx) {
return m_tags[idx]; }
274 const std::map<std::string, std::string>&
facetData(
int id)
const;
275 const std::map<std::string, std::string>&
tagData(
int id)
const;