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