1*78bc99aaSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*78bc99aaSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*78bc99aaSAndrew Rist * or more contributor license agreements. See the NOTICE file
5*78bc99aaSAndrew Rist * distributed with this work for additional information
6*78bc99aaSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*78bc99aaSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*78bc99aaSAndrew Rist * "License"); you may not use this file except in compliance
9*78bc99aaSAndrew Rist * with the License. You may obtain a copy of the License at
10*78bc99aaSAndrew Rist *
11*78bc99aaSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*78bc99aaSAndrew Rist *
13*78bc99aaSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*78bc99aaSAndrew Rist * software distributed under the License is distributed on an
15*78bc99aaSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*78bc99aaSAndrew Rist * KIND, either express or implied. See the License for the
17*78bc99aaSAndrew Rist * specific language governing permissions and limitations
18*78bc99aaSAndrew Rist * under the License.
19*78bc99aaSAndrew Rist *
20*78bc99aaSAndrew Rist *************************************************************/
21cdf0e10cSrcweir
22cdf0e10cSrcweir #include <precomp.h>
23cdf0e10cSrcweir #include <s2_dsapi/cx_dsapi.hxx>
24cdf0e10cSrcweir
25cdf0e10cSrcweir
26cdf0e10cSrcweir // NOT FULLY DEFINED SERVICES
27cdf0e10cSrcweir #include <x_parse2.hxx>
28cdf0e10cSrcweir #include <tools/tkpchars.hxx>
29cdf0e10cSrcweir #include <s2_dsapi/tk_atag2.hxx>
30cdf0e10cSrcweir #include <s2_dsapi/tk_docw2.hxx>
31cdf0e10cSrcweir #include <s2_dsapi/tk_xml.hxx>
32cdf0e10cSrcweir #include <s2_dsapi/cx_docu2.hxx>
33cdf0e10cSrcweir #include <s2_dsapi/tokrecv.hxx>
34cdf0e10cSrcweir
35cdf0e10cSrcweir
36cdf0e10cSrcweir namespace csi
37cdf0e10cSrcweir {
38cdf0e10cSrcweir namespace dsapi
39cdf0e10cSrcweir {
40cdf0e10cSrcweir
41cdf0e10cSrcweir
42cdf0e10cSrcweir const intt C_nStatusSize = 128;
43cdf0e10cSrcweir const intt C_nCppInitialNrOfStati = 400;
44cdf0e10cSrcweir
45cdf0e10cSrcweir
46cdf0e10cSrcweir const uintt nF_fin_Error = 1;
47cdf0e10cSrcweir const uintt nF_fin_Ignore = 2;
48cdf0e10cSrcweir const uintt nF_fin_Eof = 3;
49cdf0e10cSrcweir const uintt nF_fin_AnyWord = 4;
50cdf0e10cSrcweir const uintt nF_fin_AtTag = 5;
51cdf0e10cSrcweir const uintt nF_fin_EndSign = 6;
52cdf0e10cSrcweir const uintt nF_goto_EoHtml = 7;
53cdf0e10cSrcweir const uintt nF_goto_EoXmlConst = 8;
54cdf0e10cSrcweir const uintt nF_goto_EoXmlLink_BeginTag = 9;
55cdf0e10cSrcweir const uintt nF_goto_EoXmlLink_EndTag = 10;
56cdf0e10cSrcweir const uintt nF_goto_EoXmlFormat_BeginTag = 11;
57cdf0e10cSrcweir const uintt nF_goto_EoXmlFormat_EndTag = 12;
58cdf0e10cSrcweir const uintt nF_goto_CheckStar = 13;
59cdf0e10cSrcweir const uintt nF_fin_Comma = 14;
60cdf0e10cSrcweir const uintt nF_fin_White = 15;
61cdf0e10cSrcweir
62cdf0e10cSrcweir const UINT16 nTok_at_author = 100 + Tok_AtTag::author;
63cdf0e10cSrcweir const UINT16 nTok_at_see = 100 + Tok_AtTag::see;
64cdf0e10cSrcweir const UINT16 nTok_at_param = 100 + Tok_AtTag::param;
65cdf0e10cSrcweir const UINT16 nTok_at_return = 100 + Tok_AtTag::e_return;
66cdf0e10cSrcweir const UINT16 nTok_at_throws = 100 + Tok_AtTag::e_throw;
67cdf0e10cSrcweir const UINT16 nTok_at_example = 100 + Tok_AtTag::example;
68cdf0e10cSrcweir const UINT16 nTok_at_deprecated = 100 + Tok_AtTag::deprecated;
69cdf0e10cSrcweir const UINT16 nTok_at_suspicious = 100 + Tok_AtTag::suspicious;
70cdf0e10cSrcweir const UINT16 nTok_at_missing = 100 + Tok_AtTag::missing;
71cdf0e10cSrcweir const UINT16 nTok_at_incomplete = 100 + Tok_AtTag::incomplete;
72cdf0e10cSrcweir const UINT16 nTok_at_version = 100 + Tok_AtTag::version;
73cdf0e10cSrcweir const UINT16 nTok_at_guarantees = 100 + Tok_AtTag::guarantees;
74cdf0e10cSrcweir const UINT16 nTok_at_exception = 100 + Tok_AtTag::exception;
75cdf0e10cSrcweir const UINT16 nTok_at_since = 100 + Tok_AtTag::since;
76cdf0e10cSrcweir
77cdf0e10cSrcweir const UINT16 nTok_const_TRUE = 200 + Tok_XmlConst::e_true;
78cdf0e10cSrcweir const UINT16 nTok_const_FALSE = 200 + Tok_XmlConst::e_false;
79cdf0e10cSrcweir const UINT16 nTok_const_NULL = 200 + Tok_XmlConst::e_null;
80cdf0e10cSrcweir const UINT16 nTok_const_void = 200 + Tok_XmlConst::e_void;
81cdf0e10cSrcweir
82cdf0e10cSrcweir const UINT16 nTok_link_typeB = 300 + Tok_XmlLink_BeginTag::type;
83cdf0e10cSrcweir const UINT16 nTok_link_typeE = 325 + Tok_XmlLink_EndTag::type;
84cdf0e10cSrcweir const UINT16 nTok_link_memberB = 300 + Tok_XmlLink_BeginTag::member;
85cdf0e10cSrcweir const UINT16 nTok_link_membeE = 325 + Tok_XmlLink_EndTag::member;
86cdf0e10cSrcweir const UINT16 nTok_link_constB = 300 + Tok_XmlLink_BeginTag::e_const;
87cdf0e10cSrcweir const UINT16 nTok_link_constE = 325 + Tok_XmlLink_EndTag::e_const;
88cdf0e10cSrcweir
89cdf0e10cSrcweir const UINT16 nTok_format_listingB = 350 + Tok_XmlFormat_BeginTag::listing;
90cdf0e10cSrcweir const UINT16 nTok_format_listingE = 375 + Tok_XmlFormat_EndTag::listing;
91cdf0e10cSrcweir const UINT16 nTok_format_codeB = 350 + Tok_XmlFormat_BeginTag::code;
92cdf0e10cSrcweir const UINT16 nTok_format_codeE = 375 + Tok_XmlFormat_EndTag::code;
93cdf0e10cSrcweir const UINT16 nTok_format_atomB = 350 + Tok_XmlFormat_BeginTag::atom;
94cdf0e10cSrcweir const UINT16 nTok_format_atomE = 375 + Tok_XmlFormat_EndTag::atom;
95cdf0e10cSrcweir
96cdf0e10cSrcweir
97cdf0e10cSrcweir const UINT16 nTok_html_parastart = 400;
98cdf0e10cSrcweir
99cdf0e10cSrcweir const UINT16 nTok_MLDocuEnd = 501;
100cdf0e10cSrcweir const UINT16 nTok_EOL = 502;
101cdf0e10cSrcweir
102cdf0e10cSrcweir
Context_Docu(Token_Receiver & o_rReceiver)103cdf0e10cSrcweir Context_Docu::Context_Docu( Token_Receiver & o_rReceiver )
104cdf0e10cSrcweir : aStateMachine(C_nStatusSize, C_nCppInitialNrOfStati),
105cdf0e10cSrcweir pReceiver(&o_rReceiver),
106cdf0e10cSrcweir pParentContext(0),
107cdf0e10cSrcweir pCx_EoHtml(0),
108cdf0e10cSrcweir pCx_EoXmlConst(0),
109cdf0e10cSrcweir pCx_EoXmlLink_BeginTag(0),
110cdf0e10cSrcweir pCx_EoXmlLink_EndTag(0),
111cdf0e10cSrcweir pCx_EoXmlFormat_BeginTag(0),
112cdf0e10cSrcweir pCx_EoXmlFormat_EndTag(0),
113cdf0e10cSrcweir pCx_CheckStar(0),
114cdf0e10cSrcweir pNewToken(0),
115cdf0e10cSrcweir pFollowUpContext(0),
116cdf0e10cSrcweir bIsMultiline(false)
117cdf0e10cSrcweir {
118cdf0e10cSrcweir pCx_EoHtml = new Cx_EoHtml(o_rReceiver, *this);
119cdf0e10cSrcweir pCx_EoXmlConst = new Cx_EoXmlConst(o_rReceiver, *this);
120cdf0e10cSrcweir pCx_EoXmlLink_BeginTag = new Cx_EoXmlLink_BeginTag(o_rReceiver, *this);
121cdf0e10cSrcweir pCx_EoXmlLink_EndTag = new Cx_EoXmlLink_EndTag(o_rReceiver, *this);
122cdf0e10cSrcweir pCx_EoXmlFormat_BeginTag = new Cx_EoXmlFormat_BeginTag(o_rReceiver, *this);
123cdf0e10cSrcweir pCx_EoXmlFormat_EndTag = new Cx_EoXmlFormat_EndTag(o_rReceiver, *this);
124cdf0e10cSrcweir pCx_CheckStar = new Cx_CheckStar(*pReceiver,*this);
125cdf0e10cSrcweir
126cdf0e10cSrcweir SetupStateMachine();
127cdf0e10cSrcweir }
128cdf0e10cSrcweir
129cdf0e10cSrcweir void
SetParentContext(TkpContext & io_rParentContext,const char *)130cdf0e10cSrcweir Context_Docu::SetParentContext( TkpContext & io_rParentContext,
131cdf0e10cSrcweir const char * )
132cdf0e10cSrcweir {
133cdf0e10cSrcweir pFollowUpContext = pParentContext = &io_rParentContext;
134cdf0e10cSrcweir pCx_CheckStar->Set_End_FolloUpContext(io_rParentContext);
135cdf0e10cSrcweir }
136cdf0e10cSrcweir
~Context_Docu()137cdf0e10cSrcweir Context_Docu::~Context_Docu()
138cdf0e10cSrcweir {
139cdf0e10cSrcweir }
140cdf0e10cSrcweir
141cdf0e10cSrcweir void
ReadCharChain(CharacterSource & io_rText)142cdf0e10cSrcweir Context_Docu::ReadCharChain( CharacterSource & io_rText )
143cdf0e10cSrcweir {
144cdf0e10cSrcweir csv_assert(pParentContext != 0);
145cdf0e10cSrcweir
146cdf0e10cSrcweir pNewToken = 0;
147cdf0e10cSrcweir
148cdf0e10cSrcweir UINT16 nTokenId = 0;
149cdf0e10cSrcweir StmBoundsStatu2 & rBound = aStateMachine.GetCharChain(nTokenId, io_rText);
150cdf0e10cSrcweir
151cdf0e10cSrcweir // !!!
152cdf0e10cSrcweir // The order of the next two lines is essential, because
153cdf0e10cSrcweir // pFollowUpContext may be changed by PerformStatusFunction() also,
154cdf0e10cSrcweir // which then MUST override the previous assignment.
155cdf0e10cSrcweir pFollowUpContext = rBound.FollowUpContext();
156cdf0e10cSrcweir PerformStatusFunction(rBound.StatusFunctionNr(), nTokenId, io_rText);
157cdf0e10cSrcweir }
158cdf0e10cSrcweir
159cdf0e10cSrcweir bool
PassNewToken()160cdf0e10cSrcweir Context_Docu::PassNewToken()
161cdf0e10cSrcweir {
162cdf0e10cSrcweir if (pNewToken)
163cdf0e10cSrcweir {
164cdf0e10cSrcweir pReceiver->Receive(*pNewToken.Release());
165cdf0e10cSrcweir return true;
166cdf0e10cSrcweir }
167cdf0e10cSrcweir return false;
168cdf0e10cSrcweir }
169cdf0e10cSrcweir
170cdf0e10cSrcweir TkpContext &
FollowUpContext()171cdf0e10cSrcweir Context_Docu::FollowUpContext()
172cdf0e10cSrcweir {
173cdf0e10cSrcweir csv_assert(pFollowUpContext != 0);
174cdf0e10cSrcweir return *pFollowUpContext;
175cdf0e10cSrcweir }
176cdf0e10cSrcweir
177cdf0e10cSrcweir void
PerformStatusFunction(uintt i_nStatusSignal,UINT16 i_nTokenId,CharacterSource & io_rText)178cdf0e10cSrcweir Context_Docu::PerformStatusFunction( uintt i_nStatusSignal,
179cdf0e10cSrcweir UINT16 i_nTokenId,
180cdf0e10cSrcweir CharacterSource & io_rText )
181cdf0e10cSrcweir {
182cdf0e10cSrcweir switch (i_nStatusSignal)
183cdf0e10cSrcweir {
184cdf0e10cSrcweir case nF_fin_White:
185cdf0e10cSrcweir io_rText.CutToken();
186cdf0e10cSrcweir pNewToken = new Tok_White;
187cdf0e10cSrcweir break;
188cdf0e10cSrcweir case nF_fin_Error:
189cdf0e10cSrcweir throw X_AutodocParser(X_AutodocParser::x_InvalidChar);
190cdf0e10cSrcweir // no break because of throw
191cdf0e10cSrcweir case nF_fin_Ignore:
192cdf0e10cSrcweir pNewToken = 0;
193cdf0e10cSrcweir io_rText.CutToken();
194cdf0e10cSrcweir break;
195cdf0e10cSrcweir case nF_fin_Eof:
196cdf0e10cSrcweir if (bIsMultiline)
197cdf0e10cSrcweir throw X_AutodocParser(X_AutodocParser::x_UnexpectedEOF);
198cdf0e10cSrcweir else
199cdf0e10cSrcweir io_rText.CutToken();
200cdf0e10cSrcweir pNewToken = new Tok_EOF;
201cdf0e10cSrcweir break;
202cdf0e10cSrcweir case nF_fin_AnyWord:
203cdf0e10cSrcweir pNewToken = new Tok_Word(io_rText.CutToken());
204cdf0e10cSrcweir break;
205cdf0e10cSrcweir case nF_fin_AtTag:
206cdf0e10cSrcweir io_rText.CutToken();
207cdf0e10cSrcweir pNewToken = new Tok_AtTag( i_nTokenId - 100 );
208cdf0e10cSrcweir break;
209cdf0e10cSrcweir case nF_fin_Comma:
210cdf0e10cSrcweir io_rText.CutToken();
211cdf0e10cSrcweir pNewToken = new Tok_Comma;
212cdf0e10cSrcweir break;
213cdf0e10cSrcweir case nF_fin_EndSign:
214cdf0e10cSrcweir io_rText.CutToken();
215cdf0e10cSrcweir switch (i_nTokenId)
216cdf0e10cSrcweir {
217cdf0e10cSrcweir case nTok_MLDocuEnd:
218cdf0e10cSrcweir if (bIsMultiline)
219cdf0e10cSrcweir {
220cdf0e10cSrcweir pNewToken = new Tok_DocuEnd;
221cdf0e10cSrcweir pFollowUpContext = pParentContext;
222cdf0e10cSrcweir }
223cdf0e10cSrcweir else
224cdf0e10cSrcweir {
225cdf0e10cSrcweir pNewToken = new Tok_Word(io_rText.CutToken());
226cdf0e10cSrcweir pFollowUpContext = this;
227cdf0e10cSrcweir }
228cdf0e10cSrcweir break;
229cdf0e10cSrcweir case nTok_EOL:
230cdf0e10cSrcweir if (bIsMultiline)
231cdf0e10cSrcweir {
232cdf0e10cSrcweir pNewToken = new Tok_EOL;
233cdf0e10cSrcweir pFollowUpContext = this;
234cdf0e10cSrcweir }
235cdf0e10cSrcweir else
236cdf0e10cSrcweir {
237cdf0e10cSrcweir pNewToken = new Tok_DocuEnd;
238cdf0e10cSrcweir pFollowUpContext = pParentContext;
239cdf0e10cSrcweir }
240cdf0e10cSrcweir pReceiver->Increment_CurLine();
241cdf0e10cSrcweir break;
242cdf0e10cSrcweir default:
243cdf0e10cSrcweir csv_assert(false);
244cdf0e10cSrcweir }
245cdf0e10cSrcweir break;
246cdf0e10cSrcweir case nF_goto_EoHtml:
247cdf0e10cSrcweir pCx_EoHtml->SetIfIsStartOfParagraph(i_nTokenId == nTok_html_parastart);
248cdf0e10cSrcweir break;
249cdf0e10cSrcweir case nF_goto_EoXmlConst:
250cdf0e10cSrcweir pCx_EoXmlConst->SetTokenId(i_nTokenId - 200);
251cdf0e10cSrcweir break;
252cdf0e10cSrcweir case nF_goto_EoXmlLink_BeginTag:
253cdf0e10cSrcweir pCx_EoXmlLink_BeginTag->SetTokenId(i_nTokenId - 300);
254cdf0e10cSrcweir break;
255cdf0e10cSrcweir case nF_goto_EoXmlLink_EndTag:
256cdf0e10cSrcweir pCx_EoXmlLink_EndTag->SetTokenId(i_nTokenId - 325);
257cdf0e10cSrcweir break;
258cdf0e10cSrcweir case nF_goto_EoXmlFormat_BeginTag:
259cdf0e10cSrcweir pCx_EoXmlFormat_BeginTag->SetTokenId(i_nTokenId - 350);
260cdf0e10cSrcweir break;
261cdf0e10cSrcweir case nF_goto_EoXmlFormat_EndTag:
262cdf0e10cSrcweir pCx_EoXmlFormat_EndTag->SetTokenId(i_nTokenId - 375);
263cdf0e10cSrcweir break;
264cdf0e10cSrcweir case nF_goto_CheckStar:
265cdf0e10cSrcweir pCx_CheckStar->SetIsEnd( bIsMultiline );
266cdf0e10cSrcweir break;
267cdf0e10cSrcweir default:
268cdf0e10cSrcweir csv_assert(false);
269cdf0e10cSrcweir } // end switch (i_nStatusSignal)
270cdf0e10cSrcweir }
271cdf0e10cSrcweir
272cdf0e10cSrcweir void
SetupStateMachine()273cdf0e10cSrcweir Context_Docu::SetupStateMachine()
274cdf0e10cSrcweir {
275cdf0e10cSrcweir // Besondere Array-Stati (kein Tokenabschluss oder Kontextwechsel):
276cdf0e10cSrcweir // const INT16 bas = 0; // Base-Status
277cdf0e10cSrcweir const INT16 wht = 1; // Whitespace-overlook-Status
278cdf0e10cSrcweir const INT16 awd = 2; // Any-Word-Read-Status
279cdf0e10cSrcweir
280cdf0e10cSrcweir // Kontextwechsel-Stati:
281cdf0e10cSrcweir const INT16 goto_EoHtml = 3;
282cdf0e10cSrcweir const INT16 goto_EoXmlConst = 4;
283cdf0e10cSrcweir const INT16 goto_EoXmlLink_BeginTag = 5;
284cdf0e10cSrcweir const INT16 goto_EoXmlLink_EndTag = 6;
285cdf0e10cSrcweir const INT16 goto_EoXmlFormat_BeginTag = 7;
286cdf0e10cSrcweir const INT16 goto_EoXmlFormat_EndTag = 8;
287cdf0e10cSrcweir const INT16 goto_CheckStar = 9;
288cdf0e10cSrcweir
289cdf0e10cSrcweir // Tokenfinish-Stati:
290cdf0e10cSrcweir const INT16 finError = 10;
291cdf0e10cSrcweir // const INT16 finIgnore = 11;
292cdf0e10cSrcweir const INT16 finEof = 12;
293cdf0e10cSrcweir const INT16 finAnyWord = 13;
294cdf0e10cSrcweir const INT16 finAtTag = 14;
295cdf0e10cSrcweir const INT16 finEndSign = 15;
296cdf0e10cSrcweir // const INT16 finComma = 16;
297cdf0e10cSrcweir const INT16 finWhite = 17;
298cdf0e10cSrcweir
299cdf0e10cSrcweir // Konstanten zur Benutzung in der Tabelle:
300cdf0e10cSrcweir const INT16 ght = goto_EoHtml;
301cdf0e10cSrcweir /*
302cdf0e10cSrcweir const INT16 gxc = goto_EoXmlConst;
303cdf0e10cSrcweir const INT16 glb = goto_EoXmlLink_TagBegin;
304cdf0e10cSrcweir const INT16 gle = goto_EoXmlLink_TagEnd;
305cdf0e10cSrcweir const INT16 gfb = goto_EoXmlFormat_TagBegin;
306cdf0e10cSrcweir const INT16 gfe = goto_EoXmlFormat_TagEnd;
307cdf0e10cSrcweir */
308cdf0e10cSrcweir const INT16 err = finError;
309cdf0e10cSrcweir const INT16 faw = finAnyWord;
310cdf0e10cSrcweir // const INT16 fig = finIgnore;
311cdf0e10cSrcweir // const INT16 fes = finEndSign;
312cdf0e10cSrcweir const INT16 fof = finEof;
313cdf0e10cSrcweir // const INT16 fat = finAtTag;
314cdf0e10cSrcweir const INT16 fwh = finWhite;
315cdf0e10cSrcweir
316cdf0e10cSrcweir /// The '0's will be replaced by calls of AddToken().
317cdf0e10cSrcweir
318cdf0e10cSrcweir const INT16 A_nTopStatus[C_nStatusSize] =
319cdf0e10cSrcweir // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
320cdf0e10cSrcweir {fof,err,err,err,err,err,err,err,err,wht, 0,wht,wht, 0,err,err,
321cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // ... 31
322cdf0e10cSrcweir wht,awd,awd,awd,awd,awd,awd,awd,awd,awd, 0,awd,awd,awd,awd,awd,
323cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, 0,awd,awd,awd, // ... 63
324cdf0e10cSrcweir 0,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
325cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
326cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
327cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
328cdf0e10cSrcweir };
329cdf0e10cSrcweir
330cdf0e10cSrcweir const INT16 A_nWhitespaceStatus[C_nStatusSize] =
331cdf0e10cSrcweir // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
332cdf0e10cSrcweir {fof,err,err,err,err,err,err,err,err,wht,fwh,wht,wht,fwh,err,err,
333cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,fof,err,err,err,err,err, // ... 31
334cdf0e10cSrcweir wht,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
335cdf0e10cSrcweir fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh, // ... 63
336cdf0e10cSrcweir fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
337cdf0e10cSrcweir fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh, // ... 95
338cdf0e10cSrcweir fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,
339cdf0e10cSrcweir fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh,fwh // ... 127
340cdf0e10cSrcweir };
341cdf0e10cSrcweir
342cdf0e10cSrcweir const INT16 A_nWordStatus[C_nStatusSize] =
343cdf0e10cSrcweir // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
344cdf0e10cSrcweir {faw,err,err,err,err,err,err,err,err,faw,faw,faw,faw,faw,err,err,
345cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,faw,err,err,err,err,err, // ... 31
346cdf0e10cSrcweir faw,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,awd,awd,awd,awd,
347cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,awd,awd, // ... 63
348cdf0e10cSrcweir faw,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
349cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
350cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
351cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
352cdf0e10cSrcweir };
353cdf0e10cSrcweir
354cdf0e10cSrcweir const INT16 A_nAtTagDefStatus[C_nStatusSize] =
355cdf0e10cSrcweir // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
356cdf0e10cSrcweir {faw,err,err,err,err,err,err,err,err,faw,faw,faw,faw,faw,err,err,
357cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,faw,err,err,err,err,err, // ... 31
358cdf0e10cSrcweir faw,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,awd,awd,awd,awd,
359cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,faw,awd,faw,awd,awd,awd, // ... 63
360cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
361cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd, // ... 95
362cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,
363cdf0e10cSrcweir awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd,awd // ... 127
364cdf0e10cSrcweir };
365cdf0e10cSrcweir
366cdf0e10cSrcweir const INT16 A_nHtmlDefStatus[C_nStatusSize] =
367cdf0e10cSrcweir // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
368cdf0e10cSrcweir {ght,err,err,err,err,err,err,err,err,ght,ght,ght,ght,ght,err,err,
369cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,ght,err,err,err,err,err, // ... 31
370cdf0e10cSrcweir ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,
371cdf0e10cSrcweir ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght, // ... 63
372cdf0e10cSrcweir ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,
373cdf0e10cSrcweir ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght, // ... 95
374cdf0e10cSrcweir ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,
375cdf0e10cSrcweir ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght,ght // ... 127
376cdf0e10cSrcweir };
377cdf0e10cSrcweir
378cdf0e10cSrcweir const INT16 A_nPunctDefStatus[C_nStatusSize] =
379cdf0e10cSrcweir // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
380cdf0e10cSrcweir {err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
381cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 16 ...
382cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
383cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 48 ...
384cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
385cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err, // 80 ...
386cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,
387cdf0e10cSrcweir err,err,err,err,err,err,err,err,err,err,err,err,err,err,err,err // 112 ...
388cdf0e10cSrcweir };
389cdf0e10cSrcweir
390cdf0e10cSrcweir DYN StmArrayStatu2 * dpStatusTop
391cdf0e10cSrcweir = new StmArrayStatu2( C_nStatusSize, A_nTopStatus, 0, true);
392cdf0e10cSrcweir DYN StmArrayStatu2 * dpStatusWhite
393cdf0e10cSrcweir = new StmArrayStatu2( C_nStatusSize, A_nWhitespaceStatus, 0, true);
394cdf0e10cSrcweir DYN StmArrayStatu2 * dpStatusWord
395cdf0e10cSrcweir = new StmArrayStatu2( C_nStatusSize, A_nWordStatus, 0, true);
396cdf0e10cSrcweir
397cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_goto_EoHtml
398cdf0e10cSrcweir = new StmBoundsStatu2( *this, *pCx_EoHtml, nF_goto_EoHtml, true );
399cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_goto_EoXmlConst
400cdf0e10cSrcweir = new StmBoundsStatu2( *this, *pCx_EoXmlConst, nF_goto_EoXmlConst, true );
401cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_goto_EoXmlLink_BeginTag
402cdf0e10cSrcweir = new StmBoundsStatu2( *this, *pCx_EoXmlLink_BeginTag, nF_goto_EoXmlLink_BeginTag, true );
403cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_goto_EoXmlLink_EndTag
404cdf0e10cSrcweir = new StmBoundsStatu2( *this, *pCx_EoXmlLink_EndTag, nF_goto_EoXmlLink_EndTag, true );
405cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_goto_EoXmlFormat_BeginTag
406cdf0e10cSrcweir = new StmBoundsStatu2( *this, *pCx_EoXmlFormat_BeginTag, nF_goto_EoXmlFormat_BeginTag, true );
407cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_goto_EoXmlFormat_EndTag
408cdf0e10cSrcweir = new StmBoundsStatu2( *this, *pCx_EoXmlFormat_EndTag, nF_goto_EoXmlFormat_EndTag, true );
409cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_goto_CheckStar
410cdf0e10cSrcweir = new StmBoundsStatu2( *this, *pCx_CheckStar, nF_goto_CheckStar, true );
411cdf0e10cSrcweir
412cdf0e10cSrcweir
413cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_finError
414cdf0e10cSrcweir = new StmBoundsStatu2( *this, TkpContext_Null2_(), nF_fin_Error, true );
415cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_finIgnore
416cdf0e10cSrcweir = new StmBoundsStatu2( *this, *this, nF_fin_Ignore, true);
417cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_finEof
418cdf0e10cSrcweir = new StmBoundsStatu2( *this, TkpContext_Null2_(), nF_fin_Eof, false);
419cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_finAnyWord
420cdf0e10cSrcweir = new StmBoundsStatu2( *this, *this, nF_fin_AnyWord, true);
421cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_finAtTag
422cdf0e10cSrcweir = new StmBoundsStatu2( *this, *this, nF_fin_AtTag, false);
423cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_finEndSign
424cdf0e10cSrcweir = new StmBoundsStatu2( *this, *pParentContext, nF_fin_EndSign, false);
425cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_fin_Comma
426cdf0e10cSrcweir = new StmBoundsStatu2( *this, *this, nF_fin_Comma, false );
427cdf0e10cSrcweir DYN StmBoundsStatu2 * dpBst_finWhite
428cdf0e10cSrcweir = new StmBoundsStatu2( *this, *this, nF_fin_White, false);
429cdf0e10cSrcweir
430cdf0e10cSrcweir
431cdf0e10cSrcweir // dpMain aufbauen:
432cdf0e10cSrcweir aStateMachine.AddStatus(dpStatusTop);
433cdf0e10cSrcweir aStateMachine.AddStatus(dpStatusWhite);
434cdf0e10cSrcweir aStateMachine.AddStatus(dpStatusWord);
435cdf0e10cSrcweir
436cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_goto_EoHtml);
437cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_goto_EoXmlConst);
438cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_goto_EoXmlLink_BeginTag);
439cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_goto_EoXmlLink_EndTag);
440cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_goto_EoXmlFormat_BeginTag);
441cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_goto_EoXmlFormat_EndTag);
442cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_goto_CheckStar);
443cdf0e10cSrcweir
444cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_finError);
445cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_finIgnore);
446cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_finEof);
447cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_finAnyWord);
448cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_finAtTag);
449cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_finEndSign);
450cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_fin_Comma);
451cdf0e10cSrcweir aStateMachine.AddStatus(dpBst_finWhite);
452cdf0e10cSrcweir
453cdf0e10cSrcweir
454cdf0e10cSrcweir aStateMachine.AddToken( "@author", nTok_at_author, A_nAtTagDefStatus, finAtTag );
455cdf0e10cSrcweir aStateMachine.AddToken( "@param", nTok_at_param, A_nAtTagDefStatus, finAtTag );
456cdf0e10cSrcweir aStateMachine.AddToken( "@throws", nTok_at_throws, A_nAtTagDefStatus, finAtTag );
457cdf0e10cSrcweir aStateMachine.AddToken( "@see", nTok_at_see, A_nAtTagDefStatus, finAtTag );
458cdf0e10cSrcweir aStateMachine.AddToken( "@since", nTok_at_since, A_nAtTagDefStatus, finAtTag );
459cdf0e10cSrcweir aStateMachine.AddToken( "@example", nTok_at_example, A_nAtTagDefStatus, finAtTag );
460cdf0e10cSrcweir aStateMachine.AddToken( "@return", nTok_at_return, A_nAtTagDefStatus, finAtTag );
461cdf0e10cSrcweir aStateMachine.AddToken( "@returns", nTok_at_return, A_nAtTagDefStatus, finAtTag );
462cdf0e10cSrcweir aStateMachine.AddToken( "@deprecated",
463cdf0e10cSrcweir nTok_at_deprecated, A_nAtTagDefStatus, finAtTag );
464cdf0e10cSrcweir aStateMachine.AddToken( "@suspicious",
465cdf0e10cSrcweir nTok_at_suspicious, A_nAtTagDefStatus, finAtTag );
466cdf0e10cSrcweir aStateMachine.AddToken( "@missing", nTok_at_missing, A_nAtTagDefStatus, finAtTag );
467cdf0e10cSrcweir aStateMachine.AddToken( "@incomplete",
468cdf0e10cSrcweir nTok_at_incomplete, A_nAtTagDefStatus, finAtTag );
469cdf0e10cSrcweir aStateMachine.AddToken( "@version", nTok_at_version, A_nAtTagDefStatus, finAtTag );
470cdf0e10cSrcweir aStateMachine.AddToken( "@guarantees",
471cdf0e10cSrcweir nTok_at_guarantees, A_nAtTagDefStatus, finAtTag );
472cdf0e10cSrcweir aStateMachine.AddToken( "@exception",
473cdf0e10cSrcweir nTok_at_exception, A_nAtTagDefStatus, finAtTag );
474cdf0e10cSrcweir
475cdf0e10cSrcweir aStateMachine.AddToken( "<", 0, A_nHtmlDefStatus, goto_EoHtml );
476cdf0e10cSrcweir aStateMachine.AddToken( "*", 0, A_nPunctDefStatus, goto_CheckStar );
477cdf0e10cSrcweir // aStateMachine.AddToken( ",", 0, A_nPunctDefStatus, finComma );
478cdf0e10cSrcweir
479cdf0e10cSrcweir aStateMachine.AddToken( "<type", nTok_link_typeB, A_nHtmlDefStatus, goto_EoXmlLink_BeginTag );
480cdf0e10cSrcweir aStateMachine.AddToken( "</type", nTok_link_typeE, A_nHtmlDefStatus, goto_EoXmlLink_EndTag );
481cdf0e10cSrcweir aStateMachine.AddToken( "<member", nTok_link_memberB, A_nHtmlDefStatus, goto_EoXmlLink_BeginTag );
482cdf0e10cSrcweir aStateMachine.AddToken( "</member", nTok_link_membeE, A_nHtmlDefStatus, goto_EoXmlLink_EndTag );
483cdf0e10cSrcweir aStateMachine.AddToken( "<const", nTok_link_constB, A_nHtmlDefStatus, goto_EoXmlLink_BeginTag );
484cdf0e10cSrcweir aStateMachine.AddToken( "</const", nTok_link_constE, A_nHtmlDefStatus, goto_EoXmlLink_EndTag );
485cdf0e10cSrcweir
486cdf0e10cSrcweir aStateMachine.AddToken( "<listing", nTok_format_listingB,A_nHtmlDefStatus, goto_EoXmlFormat_BeginTag );
487cdf0e10cSrcweir aStateMachine.AddToken( "</listing",nTok_format_listingE,A_nHtmlDefStatus, goto_EoXmlFormat_EndTag );
488cdf0e10cSrcweir aStateMachine.AddToken( "<code", nTok_format_codeB, A_nHtmlDefStatus, goto_EoXmlFormat_BeginTag );
489cdf0e10cSrcweir aStateMachine.AddToken( "</code", nTok_format_codeE, A_nHtmlDefStatus, goto_EoXmlFormat_EndTag );
490cdf0e10cSrcweir aStateMachine.AddToken( "<atom", nTok_format_atomB, A_nHtmlDefStatus, goto_EoXmlFormat_BeginTag );
491cdf0e10cSrcweir aStateMachine.AddToken( "</atom", nTok_format_atomE, A_nHtmlDefStatus, goto_EoXmlFormat_EndTag );
492cdf0e10cSrcweir
493cdf0e10cSrcweir aStateMachine.AddToken( "<TRUE/", nTok_const_TRUE, A_nHtmlDefStatus, goto_EoXmlConst );
494cdf0e10cSrcweir aStateMachine.AddToken( "<true/", nTok_const_TRUE, A_nHtmlDefStatus, goto_EoXmlConst );
495cdf0e10cSrcweir aStateMachine.AddToken( "<FALSE/", nTok_const_FALSE, A_nHtmlDefStatus, goto_EoXmlConst );
496cdf0e10cSrcweir aStateMachine.AddToken( "<false/", nTok_const_FALSE, A_nHtmlDefStatus, goto_EoXmlConst );
497cdf0e10cSrcweir aStateMachine.AddToken( "<NULL/", nTok_const_NULL, A_nHtmlDefStatus, goto_EoXmlConst );
498cdf0e10cSrcweir aStateMachine.AddToken( "<void/", nTok_const_void, A_nHtmlDefStatus, goto_EoXmlConst );
499cdf0e10cSrcweir
500cdf0e10cSrcweir aStateMachine.AddToken( "<p", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
501cdf0e10cSrcweir aStateMachine.AddToken( "<pre", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
502cdf0e10cSrcweir aStateMachine.AddToken( "<dl", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
503cdf0e10cSrcweir aStateMachine.AddToken( "<ul", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
504cdf0e10cSrcweir aStateMachine.AddToken( "<ol", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
505cdf0e10cSrcweir aStateMachine.AddToken( "<table", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
506cdf0e10cSrcweir aStateMachine.AddToken( "<P", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
507cdf0e10cSrcweir aStateMachine.AddToken( "<PRE", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
508cdf0e10cSrcweir aStateMachine.AddToken( "<DL", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
509cdf0e10cSrcweir aStateMachine.AddToken( "<UL", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
510cdf0e10cSrcweir aStateMachine.AddToken( "<OL", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
511cdf0e10cSrcweir aStateMachine.AddToken( "<TABLE", nTok_html_parastart, A_nHtmlDefStatus, goto_EoHtml );
512cdf0e10cSrcweir
513cdf0e10cSrcweir aStateMachine.AddToken( "\r\n", nTok_EOL, A_nPunctDefStatus, finEndSign );
514cdf0e10cSrcweir aStateMachine.AddToken( "\n", nTok_EOL, A_nPunctDefStatus, finEndSign );
515cdf0e10cSrcweir aStateMachine.AddToken( "\r", nTok_EOL, A_nPunctDefStatus, finEndSign );
516cdf0e10cSrcweir };
517cdf0e10cSrcweir
518cdf0e10cSrcweir void
SetMode_IsMultiLine(bool i_bTrue)519cdf0e10cSrcweir Context_Docu::SetMode_IsMultiLine( bool i_bTrue )
520cdf0e10cSrcweir {
521cdf0e10cSrcweir bIsMultiline = i_bTrue;
522cdf0e10cSrcweir }
523cdf0e10cSrcweir
524cdf0e10cSrcweir
525cdf0e10cSrcweir } // namespace dsapi
526cdf0e10cSrcweir } // namespace csi
527cdf0e10cSrcweir
528