ddc
ItemsContainer.h
Go to the documentation of this file.
1 //
2 // This file is part of DDC.
3 //
4 // DDC is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Lesser General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // DDC is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Lesser General Public License for more details.
13 //
14 // You should have received a copy of the GNU Lesser General Public License
15 // along with DDC. If not, see <http://www.gnu.org/licenses/>.
16 //
17 // ========== Dialing Structural Dictionary (www.aot.ru)
18 // ========== Copyright by Alexey Sokirko (1998-2002), Bryan Jurish (2011)
19 
20 #ifndef ItemsContainer
21 #define ItemsContainer
22 
23 #include "Domen.h"
24 #include "Field.h"
25 
26 #include "../CommonLib/utilit.h"
27 #include "../CommonLib/cortege.h"
28 #include "../CommonLib/bserialize.h"
29 
30 
31 
32 
33 struct TDomNoItemStr {
34  char ItemStr[100];
36 };
37 
38 
39 struct TDomItem
40 {
43 
45  {
46  return m_Data & ~(0xff<<24);
47  };
48  void SetItemStrNo(DWORD Value)
49  {
50  m_Data &= (0xff<<24);
51  m_Data |= Value;
52  };
54  {
55  return m_Data>>24;
56  };
57  void SetItemStrLen(BYTE Value)
58  {
59  m_Data &= ~(0xff<<24);
60  m_Data |= ((size_t)Value<<24);
61  };
62 
63  BYTE GetDomNo() const
64  {
65  return m_DomNo;
66  };
67  void SetDomNo(BYTE Value)
68  {
69  m_DomNo = Value;
70  };
71 };
72 
73 
74 
75 
77 {
78 public :
80  char RossPath[_MAX_PATH];
81  vector<TDomItem> m_DomItems;
82  char DomItemsFile[_MAX_PATH];
83  char DomItemsTextFile[_MAX_PATH];
84  char ItemsFile[_MAX_PATH];
85  vector <CDomen> m_Domens;
86  char DomensFile[_MAX_PATH];
87  vector<CField> Fields;
88  char FieldsFile[_MAX_PATH];
90  map<string,string> m_Russian2EnglishFields;
91 
92 
104  string m_LastError;
105 
106 
107  TItemContainer();
108  virtual ~TItemContainer() {};
109 
110  const char* GetDomItemStr(const TDomItem& Item) const
111  {
112  assert (!m_Domens[Item.GetDomNo()].m_bFreed);
113  return m_Domens[Item.GetDomNo()].m_Items+Item.GetItemStrNo();
114  };
115 
116  void ErrorMessage (string s ) const;
117  bool InitDomensConsts();
118  int GetItemNoByItemStr (const char* ItemStr, BYTE DomNo) const;
119  int GetItemNoByItemStr (const char* ItemStr, const char* DomStr) const;
120  BYTE GetDomenNoByDomStr (const char* DomStr) const;
121  bool AreEqualDomItems(const TDomItem& Item1, const TDomNoItemStr& Item2) const;
122 
123  void UpdateConstDomens();
124  bool BuildDomens (char* LastReadLine);
125  bool BuildDomItems ();
126  BYTE GetDomNoForLePlus ( const char* s) const;
127  bool IsStandardRusLexeme (const char* s) const;
128 
129  bool CanBeRusAbbr (const char* s) const;
130  bool CanBeRusColloc (const char* s) const;
131  BYTE GetFieldNoByFieldStrInner (const char* FieldStr) const;
132  bool ClearFields ();
133  bool BuildFields(BYTE MaxNumDom);
134  bool WriteFields() const;
135  bool BuildFormats(BYTE MaxNumDom);
136  bool BuildOneFieldFormat (CSignat& Sgn, char* Frmt, char* Name, BYTE MaxNumDom);
137  virtual bool UpdateSignatsOfTheFieldInCorteges (BYTE FieldNo, vector<CSignat>& Signats)= 0;
138  bool WriteDomens () const;
139  size_t GetDomItemsSize() const {return m_DomItems.size();};
140  bool WriteDomItems() const ;
141 
142 
143 
144 };
145 
146 
147 
148 #endif
149 
150 /*--- emacs style variables ---
151  * Local Variables:
152  * mode: C++
153  * c-file-style: "ellemtel"
154  * c-basic-offset: 4
155  * tab-width: 8
156  * indent-tabs-mode: nil
157  * End:
158  */
BYTE ActantsDomNo
Definition: ItemsContainer.h:93
BYTE LexPlusDomNo
Definition: ItemsContainer.h:95
void SetItemStrNo(DWORD Value)
Definition: ItemsContainer.h:48
Definition: ItemsContainer.h:76
BYTE FieldDomNo
Definition: ItemsContainer.h:99
DWORD m_Data
Definition: ItemsContainer.h:41
Definition: Signat.h:43
MorphLanguageEnum m_Language
Definition: ItemsContainer.h:79
int WildCardDomItemNo
Definition: ItemsContainer.h:103
BYTE IllDomNo
Definition: ItemsContainer.h:101
BYTE AbbrDomNo
Definition: ItemsContainer.h:98
BYTE TitleDomNo
Definition: ItemsContainer.h:96
string m_LastError
Definition: ItemsContainer.h:104
virtual ~TItemContainer()
Definition: ItemsContainer.h:108
vector< CField > Fields
Definition: ItemsContainer.h:87
const unsigned int _MAX_PATH
Definition: utilit.h:109
Definition: ItemsContainer.h:39
size_t GetDomItemsSize() const
Definition: ItemsContainer.h:139
DWORD GetItemStrNo() const
Definition: ItemsContainer.h:44
void ErrorMessage(const string &label, const string &message)
Definition: utilit.cpp:400
bool m_bDontLoadExamples
Definition: ItemsContainer.h:89
BYTE DomNo
Definition: ItemsContainer.h:35
vector< CDomen > m_Domens
Definition: ItemsContainer.h:85
BYTE EmptyDomNo
Definition: ItemsContainer.h:100
BYTE m_DomNo
Definition: ItemsContainer.h:42
Definition: morph_const.h:107
BYTE CollocDomNo
Definition: ItemsContainer.h:97
unsigned char BYTE
Definition: utilit.h:94
void SetItemStrLen(BYTE Value)
Definition: ItemsContainer.h:57
BYTE LexDomNo
Definition: ItemsContainer.h:94
MorphLanguageEnum
Definition: utilit.h:162
void SetDomNo(BYTE Value)
Definition: ItemsContainer.h:67
BYTE GetDomNo() const
Definition: ItemsContainer.h:63
BYTE IntegerDomNo
Definition: ItemsContainer.h:102
uint32_t DWORD
Definition: utilit.h:105
vector< TDomItem > m_DomItems
Definition: ItemsContainer.h:81
map< string, string > m_Russian2EnglishFields
Definition: ItemsContainer.h:90
char ItemStr[100]
Definition: ItemsContainer.h:34
const char * GetDomItemStr(const TDomItem &Item) const
Definition: ItemsContainer.h:110
Definition: ItemsContainer.h:33
BYTE GetItemStrLen() const
Definition: ItemsContainer.h:53