,
[SXSI/xpathcomp.git] / SXSIStorageInterface.cpp
1 /*******************************************
2  * SXSIStorageInterface.cpp
3  * ------------------------
4  *
5  * 
6  * Author: Kim Nguyen
7  * Date: 04/11/08
8  */
9
10
11 #include "SXSIStorageInterface.h"
12 #include "Utils.h"
13
14
15 SXSIStorageInterface::SXSIStorageInterface()
16 {
17   tree = new XMLTree();
18   tree->OpenDocument(true,64);
19   
20 }
21
22 SXSIStorageInterface::~SXSIStorageInterface()
23 {
24 }
25
26 void SXSIStorageInterface::newChild(string name)
27
28   _new_child++;
29   tree->NewOpenTag((unsigned char*) name.c_str());
30 }
31
32
33 void SXSIStorageInterface::newText(string text)
34 {
35
36   if (text.empty()) {
37     _new_empty_text++;
38     tree->NewEmptyText();
39   }
40   else {
41     _new_text++;
42     _length_text += text.size();
43     tree->NewText((unsigned char*) text.c_str());  
44   }
45 }
46         
47
48
49 void SXSIStorageInterface::nodeFinished(string name)
50 {  
51   tree->NewClosingTag((unsigned char*) name.c_str());
52  }            
53               
54   void SXSIStorageInterface::parsingFinished()
55 {
56
57   tree->CloseDocument();
58         
59 }
60
61 void *SXSIStorageInterface::returnDocument(){
62
63   printStats();
64   return ((void *) tree);
65   
66 }
67 void SXSIStorageInterface::printStats(){
68   std::cerr << "Parsing stats :  \n";
69   std::cerr << _new_child << " calls to newOpenTag/newClosingTag\n";
70   std::cerr << _new_text << " calls to newText\n";
71   std::cerr << _new_empty_text << " calls to newEmptyText\n";
72   std::cerr << _length_text << " bytes (=" << _length_text/1024 << "kb ) added to TextCollection\n";
73   std::cerr << _heap_base << " bytes of memory (initial)\n";
74   std::cerr << _heap_parsing << " bytes of memory (during parsing)\n";
75   std::cerr << _heap_done << " bytes of memory (final)\n";
76   return;
77 }