#include <cstdint>
+#include <unordered_set>
#include <unordered_map>
-#include <bp/bp.h>
-#include <bp/bp-darray.h>
+#include <libbp/bp.h>
+#include <libbp/bp-darray.h>
#include <libcds/includes/basics.h>
#include <libcds/includes/static_bitsequence.h>
#include <libcds/includes/alphabet_mapper.h>
inline uint32_t num_tags() const;
inline uint32_t subtree_size(node_t) const;
inline uint32_t subtree_tags(node_t, tag_t) const;
- inline uint32_t subtree_elements(node_t, tag_t*) const;
+ inline uint32_t subtree_elements(node_t) const;
uint32_t num_children(node_t) const;
uint32_t child_pos(node_t) const;
SXSI::TextCollection::document_result contains(uchar const *s) const;
SXSI::TextCollection::document_result less_than(uchar const *s) const;
+
+ bool naive_contains(node_t, uchar const *s) const;
+
//I/O functions
void save(int, char*);
static xml_tree* load(int, char*, bool, int);
//Mapping from tag_t identifiers to/from tagnames
std::vector<std::string> *tag_names;
std::unordered_map<std::string, tag_t> *tag_ids;
+ //Set of tag ids that map to attribute nodes
+ std::unordered_set<tag_t> *attribute_ids;
//Text index
SXSI::TextCollection *text_collection;
static_bitsequence *text_positions;