ddc
graline.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 Graphematical Module (www.aot.ru)
18 // ========== Copyright by Alexey Sokirko (1996-2001), Bryan Jurish (2011)
19 
20 
21 #ifndef graline_h
22 #define graline_h
23 #include "../CommonLib/utilit.h"
24 #include "gra_descr.h"
25 
26 
27 
28 
29 const WORD stSpace = 1;
30 const WORD stEOLN = 2;
31 const WORD stGrouped = 4;
32 const WORD stAbbreviation = 8;
33 const WORD stNotPrint = 16;
34 const WORD stParagraphChar = 64;
35 const WORD stEnglishName = 128;
36 
37 const WORD stKeyModifier = 256;
38 const WORD stPunct = 512;
40 
41 const WORD stTextAreaEnd = 2048;
42 const WORD stSingleSpaceAfter = 4096;
43 const WORD stIdent = 8192 ;
44 const WORD stParagraphTag = 8192*2 ;
45 const WORD stPageBreak = 8192*4 ;
46 
47 
48 class CGraphmatFile;
49 
50 
52  string m_UnitStr;
54  vector<WORD> m_TokenIds;
55 
56  bool operator == (const string& s)
57  {
58  return s == m_UnitStr;
59  };
60 };
61 
62 
63 
64 const DWORD UnknownPageNumber = 0xffffffff;
65 
66 class CGraLine
67 {
68  // a pointer to tokens (not null-terminated)
69  const char* unit;
70 
71  // screen length (multiply tabulation char)
73 
74  // unit length
79 
80  size_t LengthUntilDelimiters (const char *s, const CGraphmatFile* G);
81 
82 public:
83 
84  CGraLine();
85  BYTE GetTokenLength() const { return ulen; };
86  const char* GetToken() const {return unit; };
87  BYTE GetScreenLength() const {return slen;};
88  DWORD GetInputOffset() const {return m_InputOffset;};
89  QWORD GetDescriptors() const {return m_Descriptors; };
90 
91  bool IsNotPrint () const;
92  // we leave these function in the header, since VC doesn't want to make them inline
93  bool IsSpace () const {return (m_Status & stSpace) != 0; };
94  bool IsEOLN () const {return (m_Status & stEOLN) != 0; };
95  bool IsSoft () const {return IsSpace() || IsEOLN();};
96  bool IsPunct () const {return (m_Status & stPunct) != 0;};
97 
98  bool IsIdent () const;
99  ;
100  bool IsEnglishName () const;
101  bool IsGrouped () const;
102 
103  bool IsAbbreviation () const;
104  bool IsParagraphChar () const;
105  bool IsPageBreak() const;
106  bool IsTextAreaEnd() const;
107  bool IsElectronicAddress() const;
108  bool IsParagraphTag () const;
109  bool IsKeyModifier() const;
110  bool IsChar (int c) const;
111  bool IsAsterisk () const;
112  bool HasSingleSpaceAfter() const;
113  bool HasMacroSyntaxDelimiter () const;
114  bool IsWordOrNumberOrAbbr() const;
115 
116 
117  void SetSpace ();
118  void SetPunct ();
119  void SetEOLN ();
120  void SetNotPrint();
121  void SetParagraphChar();
122  void SetParagraphTag();
123  void SetKeyModifier();
124  void SetSingleSpaceAfter();
125  void SetIdent();
126  void SetElectronicAddress();
127  void SetPageBreak();
128  void SetTextAreaEnd();
129  void SetEnglishName ();
130  void DelDes(Descriptors d);
131  void SetDes(Descriptors d);
132  void AddStatus(WORD add_state);
133  void SetToken(const char*);
134  size_t ReadWord (size_t Offset, const CGraphmatFile* G, DWORD& PageNumber);
135  bool IsSingleSpaceToDelete() const;
136 };
137 
138 
139 #endif
140 
141 /*--- emacs style variables ---
142  * Local Variables:
143  * mode: C++
144  * c-file-style: "ellemtel"
145  * c-basic-offset: 4
146  * tab-width: 8
147  * indent-tabs-mode: nil
148  * End:
149  */
bool operator==(const string &s)
Definition: graline.h:56
const WORD stParagraphTag
Definition: graline.h:44
WORD m_Status
Definition: graline.h:77
const WORD stPunct
Definition: graline.h:38
BYTE slen
Definition: graline.h:72
uint64_t QWORD
Definition: utilit.h:107
const WORD stSpace
Definition: graline.h:29
BYTE ulen
Definition: graline.h:75
Definition: graline.h:66
bool IsPunct() const
Definition: graline.h:96
const WORD stElectronicAddress
Definition: graline.h:39
QWORD m_Descriptors
Definition: graline.h:76
const WORD stSingleSpaceAfter
Definition: graline.h:42
const WORD stNotPrint
Definition: graline.h:33
uint16_t WORD
Definition: utilit.h:106
Descriptors
Definition: gra_descr.h:26
DWORD GetInputOffset() const
Definition: graline.h:88
const WORD stPageBreak
Definition: graline.h:45
const WORD stAbbreviation
Definition: graline.h:32
bool IsEOLN() const
Definition: graline.h:94
BYTE GetTokenLength() const
Definition: graline.h:85
Definition: graline.h:51
BYTE GetScreenLength() const
Definition: graline.h:87
const WORD stKeyModifier
Definition: graline.h:37
bool IsSpace() const
Definition: graline.h:93
const WORD stEnglishName
Definition: graline.h:35
const DWORD UnknownPageNumber
Definition: graline.h:64
bool IsSoft() const
Definition: graline.h:95
string m_UnitStr
Definition: graline.h:52
const WORD stIdent
Definition: graline.h:43
const WORD stParagraphChar
Definition: graline.h:34
unsigned char BYTE
Definition: utilit.h:94
QWORD GetDescriptors() const
Definition: graline.h:89
const WORD stTextAreaEnd
Definition: graline.h:41
vector< WORD > m_TokenIds
Definition: graline.h:54
const WORD stEOLN
Definition: graline.h:30
WORD m_UnitNo
Definition: graline.h:53
const WORD stGrouped
Definition: graline.h:31
const char * unit
Definition: graline.h:69
uint32_t DWORD
Definition: utilit.h:105
Definition: GraphmatFile.h:28
DWORD m_InputOffset
Definition: graline.h:78
const char * GetToken() const
Definition: graline.h:86