1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski #ifndef ADC_DOCU_PE_HXX
25*b1cdbd2cSJim Jagielski #define ADC_DOCU_PE_HXX
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielski // USED SERVICES
30*b1cdbd2cSJim Jagielski // BASE CLASSES
31*b1cdbd2cSJim Jagielski #include <adoc/tokintpr.hxx>
32*b1cdbd2cSJim Jagielski // COMPONENTS
33*b1cdbd2cSJim Jagielski // PARAMETERS
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski namespace ary
36*b1cdbd2cSJim Jagielski {
37*b1cdbd2cSJim Jagielski namespace doc
38*b1cdbd2cSJim Jagielski {
39*b1cdbd2cSJim Jagielski class OldCppDocu;
40*b1cdbd2cSJim Jagielski }
41*b1cdbd2cSJim Jagielski namespace info
42*b1cdbd2cSJim Jagielski {
43*b1cdbd2cSJim Jagielski class AtTag;
44*b1cdbd2cSJim Jagielski }
45*b1cdbd2cSJim Jagielski }
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski namespace adoc
50*b1cdbd2cSJim Jagielski {
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski class Adoc_PE : public TokenInterpreter
54*b1cdbd2cSJim Jagielski {
55*b1cdbd2cSJim Jagielski public:
56*b1cdbd2cSJim Jagielski Adoc_PE();
57*b1cdbd2cSJim Jagielski ~Adoc_PE();
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski virtual void Hdl_at_std(
60*b1cdbd2cSJim Jagielski const Tok_at_std & i_rTok );
61*b1cdbd2cSJim Jagielski virtual void Hdl_at_base(
62*b1cdbd2cSJim Jagielski const Tok_at_base & i_rTok );
63*b1cdbd2cSJim Jagielski virtual void Hdl_at_exception(
64*b1cdbd2cSJim Jagielski const Tok_at_exception &
65*b1cdbd2cSJim Jagielski i_rTok );
66*b1cdbd2cSJim Jagielski virtual void Hdl_at_impl(
67*b1cdbd2cSJim Jagielski const Tok_at_impl & i_rTok );
68*b1cdbd2cSJim Jagielski virtual void Hdl_at_key(
69*b1cdbd2cSJim Jagielski const Tok_at_key & i_rTok );
70*b1cdbd2cSJim Jagielski virtual void Hdl_at_param(
71*b1cdbd2cSJim Jagielski const Tok_at_param &
72*b1cdbd2cSJim Jagielski i_rTok );
73*b1cdbd2cSJim Jagielski virtual void Hdl_at_see(
74*b1cdbd2cSJim Jagielski const Tok_at_see & i_rTok );
75*b1cdbd2cSJim Jagielski virtual void Hdl_at_template(
76*b1cdbd2cSJim Jagielski const Tok_at_template &
77*b1cdbd2cSJim Jagielski i_rTok );
78*b1cdbd2cSJim Jagielski virtual void Hdl_at_interface(
79*b1cdbd2cSJim Jagielski const Tok_at_interface &
80*b1cdbd2cSJim Jagielski i_rTok );
81*b1cdbd2cSJim Jagielski virtual void Hdl_at_internal(
82*b1cdbd2cSJim Jagielski const Tok_at_internal &
83*b1cdbd2cSJim Jagielski i_rTok );
84*b1cdbd2cSJim Jagielski virtual void Hdl_at_obsolete(
85*b1cdbd2cSJim Jagielski const Tok_at_obsolete &
86*b1cdbd2cSJim Jagielski i_rTok );
87*b1cdbd2cSJim Jagielski virtual void Hdl_at_module(
88*b1cdbd2cSJim Jagielski const Tok_at_module &
89*b1cdbd2cSJim Jagielski i_rTok );
90*b1cdbd2cSJim Jagielski virtual void Hdl_at_file(
91*b1cdbd2cSJim Jagielski const Tok_at_file & i_rTok );
92*b1cdbd2cSJim Jagielski virtual void Hdl_at_gloss(
93*b1cdbd2cSJim Jagielski const Tok_at_gloss &
94*b1cdbd2cSJim Jagielski i_rTok );
95*b1cdbd2cSJim Jagielski virtual void Hdl_at_global(
96*b1cdbd2cSJim Jagielski const Tok_at_global &
97*b1cdbd2cSJim Jagielski i_rTok );
98*b1cdbd2cSJim Jagielski virtual void Hdl_at_include(
99*b1cdbd2cSJim Jagielski const Tok_at_include &
100*b1cdbd2cSJim Jagielski i_rTok );
101*b1cdbd2cSJim Jagielski virtual void Hdl_at_label(
102*b1cdbd2cSJim Jagielski const Tok_at_label &
103*b1cdbd2cSJim Jagielski i_rTok );
104*b1cdbd2cSJim Jagielski virtual void Hdl_at_since(
105*b1cdbd2cSJim Jagielski const Tok_at_since &
106*b1cdbd2cSJim Jagielski i_rTok );
107*b1cdbd2cSJim Jagielski virtual void Hdl_at_HTML(
108*b1cdbd2cSJim Jagielski const Tok_at_HTML &
109*b1cdbd2cSJim Jagielski i_rTok );
110*b1cdbd2cSJim Jagielski virtual void Hdl_at_NOHTML(
111*b1cdbd2cSJim Jagielski const Tok_at_NOHTML &
112*b1cdbd2cSJim Jagielski i_rTok );
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski virtual void Hdl_DocWord(
115*b1cdbd2cSJim Jagielski const Tok_DocWord & i_rTok );
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski virtual void Hdl_Whitespace(
118*b1cdbd2cSJim Jagielski const Tok_Whitespace &
119*b1cdbd2cSJim Jagielski i_rTok );
120*b1cdbd2cSJim Jagielski virtual void Hdl_LineStart(
121*b1cdbd2cSJim Jagielski const Tok_LineStart &
122*b1cdbd2cSJim Jagielski i_rTok );
123*b1cdbd2cSJim Jagielski virtual void Hdl_Eol(
124*b1cdbd2cSJim Jagielski const Tok_Eol & i_rTok );
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski virtual void Hdl_EoDocu(
127*b1cdbd2cSJim Jagielski const Tok_EoDocu & i_rTok );
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski
130*b1cdbd2cSJim Jagielski DYN ary::doc::OldCppDocu *
131*b1cdbd2cSJim Jagielski ReleaseJustParsedDocu();
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski bool IsComplete() const;
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski private:
136*b1cdbd2cSJim Jagielski void InstallAtTag(
137*b1cdbd2cSJim Jagielski DYN ary::info::AtTag *
138*b1cdbd2cSJim Jagielski let_dpTag,
139*b1cdbd2cSJim Jagielski bool i_bImplicit = false ); /// True for implicit @short and @descr.
140*b1cdbd2cSJim Jagielski ary::doc::OldCppDocu &
141*b1cdbd2cSJim Jagielski CurDocu();
142*b1cdbd2cSJim Jagielski ary::info::AtTag & CurAtTag();
143*b1cdbd2cSJim Jagielski bool UsesHtmlInDocuText();
144*b1cdbd2cSJim Jagielski
145*b1cdbd2cSJim Jagielski void RenameCurShortTag();
146*b1cdbd2cSJim Jagielski void FinishCurShortTag();
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski
149*b1cdbd2cSJim Jagielski // DATA
150*b1cdbd2cSJim Jagielski enum E_TagState
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski ts_new,
153*b1cdbd2cSJim Jagielski ts_std
154*b1cdbd2cSJim Jagielski };
155*b1cdbd2cSJim Jagielski enum E_DocuState
156*b1cdbd2cSJim Jagielski {
157*b1cdbd2cSJim Jagielski ds_wait_for_short = 0,
158*b1cdbd2cSJim Jagielski ds_in_short,
159*b1cdbd2cSJim Jagielski ds_1newline_after_short,
160*b1cdbd2cSJim Jagielski ds_in_descr,
161*b1cdbd2cSJim Jagielski ds_std
162*b1cdbd2cSJim Jagielski };
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski Dyn<ary::doc::OldCppDocu>
165*b1cdbd2cSJim Jagielski pCurDocu;
166*b1cdbd2cSJim Jagielski ary::info::AtTag * pCurAtTag;
167*b1cdbd2cSJim Jagielski uintt nLineCountInDocu;
168*b1cdbd2cSJim Jagielski UINT8 nCurSpecialMeaningTokens;
169*b1cdbd2cSJim Jagielski UINT8 nCurSubtractFromLineStart;
170*b1cdbd2cSJim Jagielski E_TagState eCurTagState;
171*b1cdbd2cSJim Jagielski E_DocuState eDocuState;
172*b1cdbd2cSJim Jagielski bool bIsComplete;
173*b1cdbd2cSJim Jagielski bool bUsesHtmlInDocuText;
174*b1cdbd2cSJim Jagielski };
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski
177*b1cdbd2cSJim Jagielski // IMPLEMENTATION
178*b1cdbd2cSJim Jagielski inline bool
IsComplete() const179*b1cdbd2cSJim Jagielski Adoc_PE::IsComplete() const
180*b1cdbd2cSJim Jagielski {
181*b1cdbd2cSJim Jagielski return bIsComplete;
182*b1cdbd2cSJim Jagielski }
183*b1cdbd2cSJim Jagielski
184*b1cdbd2cSJim Jagielski
185*b1cdbd2cSJim Jagielski
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski } // namespace adoc
188*b1cdbd2cSJim Jagielski #endif
189