Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef consent_h
00017 #define consent_h
00018
00019 #include "StdGraph.h"
00020 #include "graline.h"
00021
00022 class CGraphmatFile;
00023
00024
00025 enum RubiconEnum { rUndef, rELine, rPar, rPoint, rBeg, rEnd, rQQ1,
00026 rQQ2, rMaxLimit
00027 };
00028
00029 inline const char* GetStrByRubiconType (RubiconEnum t )
00030 {
00031 switch (t) {
00032 case rUndef : return "????";
00033 case rELine : return "Пустая строка";
00034 case rPar : return "Отступ";
00035 case rPoint : return "Начало пункта";
00036 case rBeg : return "Начало текста";
00037 case rEnd : return "Конец текста";
00038 case rQQ1 : return "Начало кукушки";
00039 case rQQ2 : return "Конец кукушки";
00040 default : return "Конец УП (превышение по длине)";
00041 };
00042
00043 };
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 const long UnGroundNo = 0;
00055
00056 struct CConSent {
00057
00058
00059 enum BulletLastDelimEnum {
00060 Bracket,
00061 FullStop,
00062 Other
00063 };
00064
00065
00066 enum CUsualLawDocumentDivision {
00067 None = 0,
00068 Chapter = 1,
00069 Article = 2,
00070 Section = 3,
00071 SubSection = 4,
00072 Part = 5,
00073 };
00074
00075
00076 const CGraphmatFile* m_GraFile;
00077
00078 const CGraLine& GetUnit(size_t i) const;
00079
00080
00081 size_t m_StartNo;
00082 size_t m_EndNo;
00083
00084 size_t m_HardGraphStartNo;
00085 size_t m_HardGraphEndNo;
00086
00087
00088 size_t m_GraLineNoToMark;
00089
00090
00091 int m_HostNo;
00092
00093 int m_ParatNo;
00094
00095
00096
00097 size_t m_NumberOfLines;
00098
00099
00100 Descriptors m_Type;
00101
00102
00103
00104 RubiconEnum m_UpperRubiconType;
00105
00106 RubiconEnum m_LowerRubiconType;
00107
00108
00109
00110 bool m_bFirstUpper;
00111
00112
00113 short m_CountFullStops;
00114
00115
00116
00117 bool m_bConnected;
00118
00119
00120
00121
00122 int m_SimilarFieldNo;
00123
00124
00125 short m_BulletDepth;
00126
00127
00128
00129 bool m_bForceConnected;
00130
00131
00132 BulletLastDelimEnum m_BulletLastDelim;
00133
00134 CUsualLawDocumentDivision m_UsualLawDocumentDivision;
00135
00136 void SetEmpty ()
00137 {
00138 m_GraFile = 0;
00139 m_bFirstUpper = false;
00140 m_HostNo = m_ParatNo = -1;
00141 m_bConnected = false;
00142 m_UpperRubiconType = m_LowerRubiconType = rUndef;
00143 m_SimilarFieldNo = 0;
00144 m_Type = CS_Undef;
00145 m_bForceConnected = false;
00146 m_BulletLastDelim = Other;
00147 };
00148
00149 CConSent ()
00150 {
00151 SetEmpty();
00152
00153 };
00154 CConSent (const CGraphmatFile* _GraFile)
00155 {
00156 SetEmpty();
00157 m_GraFile = _GraFile;
00158 };
00159
00160 BYTE LastChar () const { return GetUnit(m_HardGraphEndNo).GetToken()[GetUnit(m_HardGraphEndNo).GetTokenLength()-1]; };
00161 BYTE FirstChar () const { return GetUnit(m_HardGraphStartNo).GetToken()[0]; };
00162 const CGraLine& FirstUnit () const { return GetUnit(m_HardGraphStartNo); };
00163 bool IsFirstWord(const char* s) const;
00164 const CGraLine& LastUnit () const { return GetUnit(m_HardGraphEndNo); };
00165
00166 bool IsGround() const {return m_StartNo != UnGroundNo;};
00167
00168 bool IsBullet () const;
00169 bool IsParag () const;
00170 bool IsSoft() const;
00171
00172
00173
00174 bool SetUsualLawDocumentDivision ();
00175 bool InitBasicInformation ();
00176 string GetString() const;
00177
00178
00179 };
00180
00181
00182 typedef vector<CConSent> CSList;
00183
00184 #endif