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