ddc
FreeBiblIndex.h
Go to the documentation of this file.
1 //
2 // Created by sokirko on 10.10.19.
3 //
4 
5 #ifndef PROJECT_FREEBIBLINDEX_H
6 #define PROJECT_FREEBIBLINDEX_H
7 
8 
9 #include "ConcCommon.h"
10 #include "../CommonLib/ddcMMap.h"
11 #include "../CommonLib/ddcStringEnum.h"
12 #include "../PCRE/pcre_rml.h"
13 
15 typedef enum {
19  cfbiIntegerConstant, //-- unused
24 
25 
26 const string FreeBiblAttribOptionFieldName = "Bibl";
27 const string TextAreaOptionFieldName = "textarea";
28 const char IntegerTypeStr[] = "integer";
29 const char StringTypeStr[] = "string";
30 const char StringConstantTypeStr[] = "constant";
31 const char StringAliasTypeStr[] = "alias";
32 
34 protected:
35  string GetIndexFileName(string Path) const;
36 
37 public:
39  string m_Name;
40 
42  string m_Xpath;
43 
46 
49 
52 
53 public:
55 
56  virtual ~CFreeBiblIndex();
57 
58  string GetDescriptionStr() const;
59 
60  virtual int GetIntegerValue(DWORD FileNo) const;
61 
62  virtual void clear();
63 
64  virtual string GetStringValue(DWORD FileNo) const;
65 
66  virtual void ReadFromDisk(string Path, DWORD FileBreaksSize, bool useMMap = false);
67 
68  virtual void CreateUnion(const string &Path, const vector<const CFreeBiblIndex *> &Indices,
69  const vector<size_t> &FileCounts);
70 
71  virtual void CreatePartitions(vector<CFreeBiblIndex *> &Parts, const vector<string> &Paths,
72  const vector<DWORD> &EndFileNo) const;
73 
74  virtual void RegisterBiblStringItemId(const string &Value);
75 
76  virtual bool DeleteBiblFiles(string Path) const;
77 
78  virtual bool ConvertAndSaveToDiskAfterIndexing(string Path);
79 
80  virtual string GetTypeStr() const;
81 
82  virtual const string &GetXpathStr() const;
83 
85  virtual CFreeBiblIndexTypeId GetTypeId() const;
86 
91  virtual bool GetFilterBounds(CDDCFilterWithBounds &Filter, const string &LoValue, const string &HiValue) const;
92 
97  virtual bool GetFilterValue(CDDCFilterWithBounds &Filter, const string &Value) const;
98 
101  virtual bool GetFilterValues(CDDCFilterWithBounds &Filter, const string &Regex) const;
102 
104  virtual bool GetFilterValues(CDDCFilterWithBounds &Filter, const set<string> &Values) const;
105 
107  virtual bool FileMatches(DWORD FileNo, const CDDCFilterWithBounds &Filter) const;
108 
110  virtual size_t size(void) const { return 0; };
111 
114  virtual DWORD GetIntegerLowerBound(const string &Value) const;
115 };
116 
118 protected:
119  struct CStringItem {
120  string m_BiblString;
122 
123  bool operator<(const CStringItem &X) const {
124  return m_BiblString < X.m_BiblString;
125  };
126 
127  bool operator==(const CStringItem &X) const {
128  return m_BiblString == X.m_BiblString;
129  };
130 
131  };
132 
135  //list<CStringItem> m_BuildStringItems;
136  typedef map<string,DWORD> BuildStringItemsMapT;
137  BuildStringItemsMapT m_BuildStringItemsMap;
139 
141  //vector<string> m_Values;
143 
144  string GetStringFileName(string Path) const;
145 
146  void ReadBiblStringItems(string FileName, bool useMMap = false);
147 
148  bool WriteBiblStringItems(const vector<string> &Set, string FileName) const;
149 
150 
151 public:
153 
154  virtual ~CFreeBiblStringIndex();
155 
156  virtual void clear();
157 
158  virtual string GetTypeStr() const;
159 
160  virtual CFreeBiblIndexTypeId GetTypeId() const;
161 
162  virtual string GetStringValue(DWORD FileNo) const;
163 
164  virtual void CreateUnion(const string &Path, const vector<const CFreeBiblIndex *> &Indices,
165  const vector<size_t> &FileCounts);
166 
167  virtual void CreatePartitions(vector<CFreeBiblIndex *> &Parts, const vector<string> &Paths,
168  const vector<DWORD> &EndFileNo) const;
169 
170  virtual void RegisterBiblStringItemId(const string &Value);
171 
172  bool DeleteBiblFiles(string Path) const;
173 
174  virtual void ReadFromDisk(string Path, DWORD FileBreaksSize, bool useMMap = false);
175 
176  virtual bool ConvertAndSaveToDiskAfterIndexing(string Path);
177 
182  virtual bool GetFilterBounds(CDDCFilterWithBounds &Filter, const string &LoValue, const string &HiValue) const;
183 
188  virtual bool GetFilterValue(CDDCFilterWithBounds &Filter, const string &Value) const;
189 
192  virtual bool GetFilterValues(CDDCFilterWithBounds &Filter, const string &Regex) const;
193 
195  virtual bool GetFilterValues(CDDCFilterWithBounds &Filter, const set<string> &Values) const;
196 
198  virtual size_t size(void) const { return m_ValuesE.size(); };
199 
201  virtual DWORD GetIntegerLowerBound(const string &Value) const;
202 };
203 
204 //--------------------------------------------------------------
206 protected:
207  string m_Value;
208 public:
209  CFreeBiblStringConstant(const string &value = "");
210 
211  virtual ~CFreeBiblStringConstant();
212 
213  virtual void clear();
214 
215  virtual string GetTypeStr() const;
216 
217  virtual CFreeBiblIndexTypeId GetTypeId() const;
218 
219  virtual const string &GetXpathStr() const;
220 
221  virtual string GetStringValue(DWORD FileNo) const;
222 
223  virtual int GetIntegerValue(DWORD FileNo) const;
224 
225  virtual void ReadFromDisk(string Path, DWORD FileBreaksSize, bool useMMap = false);
226 
227  virtual bool ConvertAndSaveToDiskAfterIndexing(string Path);
228 
229  virtual void CreateUnion(const string &Path, const vector<const CFreeBiblIndex *> &Indices,
230  const vector<size_t> &FileCounts);
231 
232  virtual void CreatePartitions(vector<CFreeBiblIndex *> &Parts, const vector<string> &Paths,
233  const vector<DWORD> &EndFileNo) const;
234 
235 public:
236  //-- set constant value
237  void setValue(const string &value);
238 };
239 
240 #endif //PROJECT_FREEBIBLINDEX_H
241 
242 /*--- emacs style variables ---
243  * Local Variables:
244  * mode: C++
245  * c-file-style: "ellemtel"
246  * c-basic-offset: 4
247  * tab-width: 8
248  * indent-tabs-mode: nil
249  * End:
250  */
const char StringTypeStr[]
Definition: FreeBiblIndex.h:29
virtual size_t size(void) const
for server info
Definition: FreeBiblIndex.h:110
Definition: FreeBiblIndex.h:33
bool m_bShowInHeader
should DDC show this field for each header?
Definition: FreeBiblIndex.h:48
bool operator==(const CStringItem &X) const
Definition: FreeBiblIndex.h:127
virtual CFreeBiblIndexTypeId GetTypeId() const
return bibl-field subtype identifier
Definition: FreeBiblIndex.cpp:138
Definition: FreeBiblIndex.h:16
Definition: FreeBiblIndex.h:205
virtual bool GetFilterValues(CDDCFilterWithBounds &Filter, const string &Regex) const
Definition: FreeBiblIndex.cpp:95
Definition: pcre_rml.h:46
string m_Value
Definition: FreeBiblIndex.h:207
virtual bool GetFilterValue(CDDCFilterWithBounds &Filter, const string &Value) const
Definition: FreeBiblIndex.cpp:87
virtual string GetTypeStr() const
Definition: FreeBiblIndex.cpp:134
Definition: FreeBiblIndex.h:117
const char StringAliasTypeStr[]
Definition: FreeBiblIndex.h:31
Definition: FreeBiblIndex.h:21
virtual bool ConvertAndSaveToDiskAfterIndexing(string Path)
Definition: FreeBiblIndex.cpp:129
string m_BiblString
Definition: FreeBiblIndex.h:120
virtual void CreatePartitions(vector< CFreeBiblIndex *> &Parts, const vector< string > &Paths, const vector< DWORD > &EndFileNo) const
Definition: FreeBiblIndex.cpp:63
A file for globally defined constants and classes.
virtual void RegisterBiblStringItemId(const string &Value)
Definition: FreeBiblIndex.cpp:118
virtual bool GetFilterBounds(CDDCFilterWithBounds &Filter, const string &LoValue, const string &HiValue) const
Definition: FreeBiblIndex.cpp:78
string m_Name
the name of the index (from options file)
Definition: FreeBiblIndex.h:39
Definition: ConcCommon.h:248
size_t size() const
returns the number of enumerated strings
Definition: ddcStringEnum.h:75
string GetDescriptionStr() const
Definition: FreeBiblIndex.cpp:37
CFreeBiblIndexTypeId
Definition: FreeBiblIndex.h:15
const char IntegerTypeStr[]
Definition: FreeBiblIndex.h:28
map< string, DWORD > BuildStringItemsMapT
Definition: FreeBiblIndex.h:136
ddcStringEnum m_ValuesE
a set of all possible string values for this index
Definition: FreeBiblIndex.h:142
virtual const string & GetXpathStr() const
Definition: FreeBiblIndex.cpp:142
string m_Xpath
the XPath to this information (from options file)
Definition: FreeBiblIndex.h:42
Definition: FreeBiblIndex.h:17
ddcVecFile< DWORD > m_ValuesForEachFile
integer references to m_Values for each corpus file
Definition: FreeBiblIndex.h:45
bool operator<(const CStringItem &X) const
Definition: FreeBiblIndex.h:123
const string FreeBiblAttribOptionFieldName
Definition: FreeBiblIndex.h:26
Definition: FreeBiblIndex.h:119
virtual ~CFreeBiblIndex()
Definition: FreeBiblIndex.cpp:10
BuildStringItemsMapT m_BuildStringItemsMap
Definition: FreeBiblIndex.h:137
virtual void CreateUnion(const string &Path, const vector< const CFreeBiblIndex *> &Indices, const vector< size_t > &FileCounts)
Definition: FreeBiblIndex.cpp:47
Definition: FreeBiblIndex.h:19
const string TextAreaOptionFieldName
Definition: FreeBiblIndex.h:27
string GetIndexFileName(string Path) const
Definition: FreeBiblIndex.cpp:43
DWORD m_BiblId
Definition: FreeBiblIndex.h:121
virtual string GetStringValue(DWORD FileNo) const
Definition: FreeBiblIndex.cpp:17
Definition: FreeBiblIndex.h:18
size_t m_BuildStringItemsSize
Definition: FreeBiblIndex.h:138
virtual bool DeleteBiblFiles(string Path) const
Definition: FreeBiblIndex.cpp:124
Definition: FreeBiblIndex.h:22
Definition: ConcCommon.h:318
virtual bool FileMatches(DWORD FileNo, const CDDCFilterWithBounds &Filter) const
test whether a given file matches the filter condition (for count(*) queries)
Definition: FreeBiblIndex.cpp:107
const char StringConstantTypeStr[]
Definition: FreeBiblIndex.h:30
virtual size_t size(void) const
for server info
Definition: FreeBiblIndex.h:198
CFreeBiblIndex()
Definition: FreeBiblIndex.cpp:8
Definition: ddcStringEnum.h:31
virtual int GetIntegerValue(DWORD FileNo) const
Definition: FreeBiblIndex.cpp:21
virtual DWORD GetIntegerLowerBound(const string &Value) const
Definition: FreeBiblIndex.cpp:146
Definition: FreeBiblIndex.h:20
uint32_t DWORD
Definition: utilit.h:105
virtual void ReadFromDisk(string Path, DWORD FileBreaksSize, bool useMMap=false)
Definition: FreeBiblIndex.cpp:26
virtual void clear()
Definition: FreeBiblIndex.cpp:12
RML_RE::Options * m_pRegexOpts
regex options
Definition: FreeBiblIndex.h:51