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