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 10cdf0e10cSrcweir * 11*78bc99aaSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 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. 19cdf0e10cSrcweir * 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 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 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 137cdf0e10cSrcweir Context_Docu::~Context_Docu() 138cdf0e10cSrcweir { 139cdf0e10cSrcweir } 140cdf0e10cSrcweir 141cdf0e10cSrcweir void 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 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 & 171cdf0e10cSrcweir Context_Docu::FollowUpContext() 172cdf0e10cSrcweir { 173cdf0e10cSrcweir csv_assert(pFollowUpContext != 0); 174cdf0e10cSrcweir return *pFollowUpContext; 175cdf0e10cSrcweir } 176cdf0e10cSrcweir 177cdf0e10cSrcweir void 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 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 519cdf0e10cSrcweir Context_Docu::SetMode_IsMultiLine( bool i_bTrue ) 520cdf0e10cSrcweir { 521cdf0e10cSrcweir bIsMultiline = i_bTrue; 522cdf0e10cSrcweir } 523cdf0e10cSrcweir 524cdf0e10cSrcweir 525cdf0e10cSrcweir } // namespace dsapi 526cdf0e10cSrcweir } // namespace csi 527cdf0e10cSrcweir 528