1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef ADC_DSAPI_DOCU_PE2_HXX
29 #define ADC_DSAPI_DOCU_PE2_HXX
30 
31 
32 
33 // USED SERVICES
34 	// BASE CLASSES
35 #include <s2_dsapi/tokintpr.hxx>
36 	// COMPONENTS
37 	// PARAMETERS
38 
39 class ParserInfo;
40 
41 namespace ary
42 {
43 namespace doc
44 {
45     class OldIdlDocu;
46 }
47 
48 namespace inf
49 {
50     class DocuToken;
51 }   // namespace info
52 }   // namespace ary
53 
54 
55 
56 namespace csi
57 {
58 namespace dsapi
59 {
60 
61 
62 class Token;
63 class DT_AtTag;
64 
65 class SapiDocu_PE : public TokenInterpreter
66 {
67   public:
68 						SapiDocu_PE(
69 						    ParserInfo &        io_rPositionInfo );
70 						~SapiDocu_PE();
71 
72 	void				ProcessToken(
73 							DYN csi::dsapi::Token &
74 												let_drToken );
75 
76 	virtual void		Process_AtTag(
77 							const Tok_AtTag &	i_rToken );
78 	virtual void		Process_HtmlTag(
79 							const Tok_HtmlTag &	i_rToken );
80 	virtual void		Process_XmlConst(
81 							const Tok_XmlConst &
82 												i_rToken );
83 	virtual void		Process_XmlLink_BeginTag(
84 							const Tok_XmlLink_BeginTag &
85 												i_rToken );
86 	virtual void		Process_XmlLink_EndTag(
87 							const Tok_XmlLink_EndTag &
88 												i_rToken );
89 	virtual void		Process_XmlFormat_BeginTag(
90 							const Tok_XmlFormat_BeginTag &
91 												i_rToken );
92 	virtual void		Process_XmlFormat_EndTag(
93 							const Tok_XmlFormat_EndTag &
94 												i_rToken );
95 	virtual void		Process_Word(
96 							const Tok_Word &	i_rToken );
97 	virtual void		Process_Comma();
98 	virtual void		Process_DocuEnd();
99 	virtual void		Process_EOL();
100 	virtual void		Process_White();
101 
102 
103 	DYN ary::doc::OldIdlDocu *
104 							ReleaseJustParsedDocu();
105 
106 	bool				IsComplete() const;
107 
108   private:
109 	enum E_State
110 	{
111 		e_none = 0,
112 		st_short,
113 		st_description,
114 		st_attags,
115 		st_complete
116 	};
117 
118 	typedef void ( SapiDocu_PE::*F_TokenAdder )( DYN ary::inf::DocuToken & let_drNewToken );
119 
120 	void				AddDocuToken2Void(
121 							DYN ary::inf::DocuToken &
122 												let_drNewToken );
123 	void				AddDocuToken2Short(
124 							DYN ary::inf::DocuToken &
125 												let_drNewToken );
126 	void				AddDocuToken2Description(
127 							DYN ary::inf::DocuToken &
128 												let_drNewToken );
129 	void				AddDocuToken2Deprecated(
130 							DYN ary::inf::DocuToken &
131 												let_drNewToken );
132 	void				AddDocuToken2CurAtTag(
133 							DYN ary::inf::DocuToken &
134 												let_drNewToken );
135 	void				SetCurParameterAtTagName(
136 							DYN ary::inf::DocuToken &
137 												let_drNewToken );
138 	void				SetCurSeeAlsoAtTagLinkText(
139 							DYN ary::inf::DocuToken &
140 												let_drNewToken );
141 	void				SetCurSeeAlsoAtTagLinkText_2(
142 							DYN ary::inf::DocuToken &
143 												let_drNewToken );
144 	void				SetCurSeeAlsoAtTagLinkText_3(
145 							DYN ary::inf::DocuToken &
146 												let_drNewToken );
147 	void				SetCurSinceAtTagVersion_OOo(
148 							DYN ary::inf::DocuToken &
149 												let_drNewToken );
150 	void				SetCurSinceAtTagVersion_Number(
151 							DYN ary::inf::DocuToken &
152 												let_drNewToken );
153 	void				AddDocuToken2SinceAtTag(
154 							DYN ary::inf::DocuToken &
155 												let_drNewToken );
156 
157 	bool				CheckVersionSyntax_OOo(
158                             const String &      i_versionPart1 );
159 	bool				CheckVersionSyntax_Number(
160                             const String &      i_versionPart2 );
161 	// DATA
162 	Dyn<ary::doc::OldIdlDocu>
163 						pDocu;
164 	E_State				eState;
165 	ParserInfo *        pPositionInfo;
166 	F_TokenAdder		fCurTokenAddFunction;
167 
168 	Dyn<DT_AtTag>	    pCurAtTag;
169     String              sCurDimAttribute;
170     StreamStr           sCurAtSeeType_byXML;
171 };
172 
173 }   // namespace dsapi
174 }   // namespace csi
175 
176 
177 // IMPLEMENTATION
178 
179 
180 #endif
181 
182