1*d291ea28SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*d291ea28SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*d291ea28SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*d291ea28SAndrew Rist  * distributed with this work for additional information
6*d291ea28SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*d291ea28SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*d291ea28SAndrew Rist  * "License"); you may not use this file except in compliance
9*d291ea28SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*d291ea28SAndrew Rist  *
11*d291ea28SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*d291ea28SAndrew Rist  *
13*d291ea28SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*d291ea28SAndrew Rist  * software distributed under the License is distributed on an
15*d291ea28SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*d291ea28SAndrew Rist  * KIND, either express or implied.  See the License for the
17*d291ea28SAndrew Rist  * specific language governing permissions and limitations
18*d291ea28SAndrew Rist  * under the License.
19*d291ea28SAndrew Rist  *
20*d291ea28SAndrew Rist  *************************************************************/
21cdf0e10cSrcweir 
22cdf0e10cSrcweir #include <precomp.h>
23cdf0e10cSrcweir #include <ary/doc/d_oldcppdocu.hxx>
24cdf0e10cSrcweir 
25cdf0e10cSrcweir 
26cdf0e10cSrcweir // NOT FULLY DEFINED SERVICES
27cdf0e10cSrcweir #include <ary/info/all_tags.hxx>
28cdf0e10cSrcweir #include <ary/info/docstore.hxx>
29cdf0e10cSrcweir #include <ary/info/infodisp.hxx>
30cdf0e10cSrcweir #include <docu_node_ids.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir 
33cdf0e10cSrcweir 
34cdf0e10cSrcweir 
35cdf0e10cSrcweir namespace ary
36cdf0e10cSrcweir {
37cdf0e10cSrcweir namespace doc
38cdf0e10cSrcweir {
39cdf0e10cSrcweir 
40cdf0e10cSrcweir using namespace info;
41cdf0e10cSrcweir 
42cdf0e10cSrcweir 
43cdf0e10cSrcweir 
44cdf0e10cSrcweir 
45cdf0e10cSrcweir unsigned char  C_ucNO_INDEX = 255;
46cdf0e10cSrcweir typedef DYN StdTag * (F_CREATE)();
47cdf0e10cSrcweir 
48cdf0e10cSrcweir 
OldCppDocu()49cdf0e10cSrcweir OldCppDocu::OldCppDocu()
50cdf0e10cSrcweir 	:	Node(docnt::nt_OldCppDocu),
51cdf0e10cSrcweir 	    bIsObsolete(false),
52cdf0e10cSrcweir 		bIsInternal(false),
53cdf0e10cSrcweir 		bIsInterface(false)
54cdf0e10cSrcweir {
55cdf0e10cSrcweir 	memset( nTags, C_ucNO_INDEX, size_t(C_eAtTag_NrOfClasses) );
56cdf0e10cSrcweir }
57cdf0e10cSrcweir 
~OldCppDocu()58cdf0e10cSrcweir OldCppDocu::~OldCppDocu()
59cdf0e10cSrcweir {
60cdf0e10cSrcweir }
61cdf0e10cSrcweir 
62cdf0e10cSrcweir void
Store2(info::DocuStore & o_rDocuStore)63cdf0e10cSrcweir OldCppDocu::Store2( info::DocuStore & o_rDocuStore )
64cdf0e10cSrcweir {
65cdf0e10cSrcweir 	o_rDocuStore.Store2ConnectedDeclaration(*this);
66cdf0e10cSrcweir }
67cdf0e10cSrcweir 
68cdf0e10cSrcweir AtTag *
Create_StdTag(E_AtTagId i_eId)69cdf0e10cSrcweir OldCppDocu::Create_StdTag( E_AtTagId i_eId )
70cdf0e10cSrcweir {
71cdf0e10cSrcweir 	UINT8 nIndex = static_cast<UINT8>(i_eId);
72cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
73cdf0e10cSrcweir 	{
74cdf0e10cSrcweir 		AtTag * ret = new StdTag(i_eId);
75cdf0e10cSrcweir 		NewTag(nIndex) = ret;
76cdf0e10cSrcweir 		return ret;
77cdf0e10cSrcweir 	}
78cdf0e10cSrcweir 	else
79cdf0e10cSrcweir 	{
80cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
81cdf0e10cSrcweir 	}
82cdf0e10cSrcweir }
83cdf0e10cSrcweir 
84cdf0e10cSrcweir AtTag *
CheckIn_BaseTag()85cdf0e10cSrcweir OldCppDocu::CheckIn_BaseTag()
86cdf0e10cSrcweir {
87cdf0e10cSrcweir 	UINT8 nIndex = atc_base;
88cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
89cdf0e10cSrcweir 	{
90cdf0e10cSrcweir 		AtTag * ret = new BaseTag();
91cdf0e10cSrcweir 		NewTag(nIndex) = ret;
92cdf0e10cSrcweir 		return ret;
93cdf0e10cSrcweir 	}
94cdf0e10cSrcweir 	else
95cdf0e10cSrcweir 	{
96cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
97cdf0e10cSrcweir 	}
98cdf0e10cSrcweir }
99cdf0e10cSrcweir 
100cdf0e10cSrcweir AtTag *
CheckIn_ExceptionTag()101cdf0e10cSrcweir OldCppDocu::CheckIn_ExceptionTag()
102cdf0e10cSrcweir {
103cdf0e10cSrcweir 	UINT8 nIndex = atc_exception;
104cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
105cdf0e10cSrcweir 	{
106cdf0e10cSrcweir 		AtTag * ret = new ExceptionTag();
107cdf0e10cSrcweir 		NewTag(nIndex) = ret;
108cdf0e10cSrcweir 		return ret;
109cdf0e10cSrcweir 	}
110cdf0e10cSrcweir 	else
111cdf0e10cSrcweir 	{
112cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
113cdf0e10cSrcweir 	}
114cdf0e10cSrcweir }
115cdf0e10cSrcweir 
116cdf0e10cSrcweir AtTag *
Create_ImplementsTag()117cdf0e10cSrcweir OldCppDocu::Create_ImplementsTag()
118cdf0e10cSrcweir {
119cdf0e10cSrcweir 	UINT8 nIndex = atc_implements;
120cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
121cdf0e10cSrcweir 	{
122cdf0e10cSrcweir 		AtTag * ret = new ImplementsTag();
123cdf0e10cSrcweir 		NewTag(nIndex) = ret;
124cdf0e10cSrcweir 		return ret;
125cdf0e10cSrcweir 	}
126cdf0e10cSrcweir 	else
127cdf0e10cSrcweir 	{
128cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
129cdf0e10cSrcweir 	}
130cdf0e10cSrcweir }
131cdf0e10cSrcweir 
132cdf0e10cSrcweir AtTag *
Create_KeywordTag()133cdf0e10cSrcweir OldCppDocu::Create_KeywordTag()
134cdf0e10cSrcweir {
135cdf0e10cSrcweir 	UINT8 nIndex = atc_keyword;
136cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
137cdf0e10cSrcweir 	{
138cdf0e10cSrcweir 		AtTag * ret = new KeywordTag();
139cdf0e10cSrcweir 		NewTag(nIndex) = ret;
140cdf0e10cSrcweir 		return ret;
141cdf0e10cSrcweir 	}
142cdf0e10cSrcweir 	else
143cdf0e10cSrcweir 	{
144cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
145cdf0e10cSrcweir 	}
146cdf0e10cSrcweir }
147cdf0e10cSrcweir 
148cdf0e10cSrcweir AtTag *
CheckIn_ParameterTag()149cdf0e10cSrcweir OldCppDocu::CheckIn_ParameterTag()
150cdf0e10cSrcweir {
151cdf0e10cSrcweir 	UINT8 nIndex = atc_parameter;
152cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
153cdf0e10cSrcweir 	{
154cdf0e10cSrcweir 		AtTag * ret = new ParameterTag();
155cdf0e10cSrcweir 		NewTag(nIndex) = ret;
156cdf0e10cSrcweir 		return ret;
157cdf0e10cSrcweir 	}
158cdf0e10cSrcweir 	else
159cdf0e10cSrcweir 	{
160cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
161cdf0e10cSrcweir 	}
162cdf0e10cSrcweir }
163cdf0e10cSrcweir 
164cdf0e10cSrcweir AtTag *
CheckIn_SeeTag()165cdf0e10cSrcweir OldCppDocu::CheckIn_SeeTag()
166cdf0e10cSrcweir {
167cdf0e10cSrcweir 	UINT8 nIndex = atc_see;
168cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
169cdf0e10cSrcweir 	{
170cdf0e10cSrcweir 		AtTag * ret = new SeeTag();
171cdf0e10cSrcweir 		NewTag(nIndex) = ret;
172cdf0e10cSrcweir 		return ret;
173cdf0e10cSrcweir 	}
174cdf0e10cSrcweir 	else
175cdf0e10cSrcweir 	{
176cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
177cdf0e10cSrcweir 	}
178cdf0e10cSrcweir }
179cdf0e10cSrcweir 
180cdf0e10cSrcweir AtTag *
CheckIn_TemplateTag()181cdf0e10cSrcweir OldCppDocu::CheckIn_TemplateTag()
182cdf0e10cSrcweir {
183cdf0e10cSrcweir 	UINT8 nIndex = atc_template;
184cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
185cdf0e10cSrcweir 	{
186cdf0e10cSrcweir 		AtTag * ret = new TemplateTag();
187cdf0e10cSrcweir 		NewTag(nIndex) = ret;
188cdf0e10cSrcweir 		return ret;
189cdf0e10cSrcweir 	}
190cdf0e10cSrcweir 	else
191cdf0e10cSrcweir 	{
192cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
193cdf0e10cSrcweir 	}
194cdf0e10cSrcweir }
195cdf0e10cSrcweir 
196cdf0e10cSrcweir AtTag *
Create_LabelTag()197cdf0e10cSrcweir OldCppDocu::Create_LabelTag()
198cdf0e10cSrcweir {
199cdf0e10cSrcweir 	UINT8 nIndex = atc_label;
200cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
201cdf0e10cSrcweir 	{
202cdf0e10cSrcweir 		AtTag * ret = new LabelTag();
203cdf0e10cSrcweir 		NewTag(nIndex) = ret;
204cdf0e10cSrcweir 		return ret;
205cdf0e10cSrcweir 	}
206cdf0e10cSrcweir 	else
207cdf0e10cSrcweir 	{
208cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
209cdf0e10cSrcweir 	}
210cdf0e10cSrcweir }
211cdf0e10cSrcweir 
212cdf0e10cSrcweir AtTag *
Create_DefaultTag()213cdf0e10cSrcweir OldCppDocu::Create_DefaultTag()
214cdf0e10cSrcweir {
215cdf0e10cSrcweir 	UINT8 nIndex = atid_descr;
216cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
217cdf0e10cSrcweir 	{
218cdf0e10cSrcweir 		AtTag * ret = new StdTag(atid_descr);
219cdf0e10cSrcweir 		NewTag(nIndex) = ret;
220cdf0e10cSrcweir 		return ret;
221cdf0e10cSrcweir 	}
222cdf0e10cSrcweir 	else
223cdf0e10cSrcweir 	{
224cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
225cdf0e10cSrcweir 	}
226cdf0e10cSrcweir }
227cdf0e10cSrcweir 
228cdf0e10cSrcweir AtTag *
Create_SinceTag()229cdf0e10cSrcweir OldCppDocu::Create_SinceTag()
230cdf0e10cSrcweir {
231cdf0e10cSrcweir 	UINT8 nIndex = atc_since;
232cdf0e10cSrcweir 	if ( nTags[nIndex] == C_ucNO_INDEX )
233cdf0e10cSrcweir 	{
234cdf0e10cSrcweir 		AtTag * ret = new SinceTag();
235cdf0e10cSrcweir 		NewTag(nIndex) = ret;
236cdf0e10cSrcweir 		return ret;
237cdf0e10cSrcweir 	}
238cdf0e10cSrcweir 	else
239cdf0e10cSrcweir 	{
240cdf0e10cSrcweir 		return GetTag(nIndex).GetFollower();
241cdf0e10cSrcweir 	}
242cdf0e10cSrcweir }
243cdf0e10cSrcweir 
244cdf0e10cSrcweir 
245cdf0e10cSrcweir void
Replace_AtShort_By_AtDescr()246cdf0e10cSrcweir OldCppDocu::Replace_AtShort_By_AtDescr()
247cdf0e10cSrcweir {
248cdf0e10cSrcweir     unsigned char nPosInTags = nTags[atid_short];
249cdf0e10cSrcweir     if ( nPosInTags == C_ucNO_INDEX )
250cdf0e10cSrcweir         return;
251cdf0e10cSrcweir 
252cdf0e10cSrcweir 	AtTag * pTag = aTags[ nPosInTags ];
253cdf0e10cSrcweir 	if ( pTag == 0 )    // Should be csv_assert().
254cdf0e10cSrcweir         return;
255cdf0e10cSrcweir 
256cdf0e10cSrcweir     csv_assert( dynamic_cast< StdTag* >(pTag) != 0 );
257cdf0e10cSrcweir 	StdTag * pStdTag = static_cast< StdTag* >(pTag);
258cdf0e10cSrcweir 
259cdf0e10cSrcweir     pStdTag->ChangeId2(atid_descr);
260cdf0e10cSrcweir     nTags[atid_short] = C_ucNO_INDEX;
261cdf0e10cSrcweir     nTags[atid_descr] = nPosInTags;
262cdf0e10cSrcweir }
263cdf0e10cSrcweir 
264cdf0e10cSrcweir void
Set_Obsolete()265cdf0e10cSrcweir OldCppDocu::Set_Obsolete()
266cdf0e10cSrcweir {
267cdf0e10cSrcweir 	bIsObsolete = true;
268cdf0e10cSrcweir }
269cdf0e10cSrcweir 
270cdf0e10cSrcweir void
Set_Internal()271cdf0e10cSrcweir OldCppDocu::Set_Internal()
272cdf0e10cSrcweir {
273cdf0e10cSrcweir 	bIsInternal = true;
274cdf0e10cSrcweir }
275cdf0e10cSrcweir 
276cdf0e10cSrcweir const AtTag &
Short() const277cdf0e10cSrcweir OldCppDocu::Short() const
278cdf0e10cSrcweir {
279cdf0e10cSrcweir     static const StdTag aNull_(atid_short);
280cdf0e10cSrcweir 
281cdf0e10cSrcweir     unsigned char nPosInTags = nTags[atid_short];
282cdf0e10cSrcweir     if ( nPosInTags != C_ucNO_INDEX )
283cdf0e10cSrcweir     {
284cdf0e10cSrcweir 		AtTag * pTag = aTags[ nPosInTags ];
285cdf0e10cSrcweir 		if ( pTag != 0 )    // Should be csv_assert().
286cdf0e10cSrcweir 		{
287cdf0e10cSrcweir             return *pTag;
288cdf0e10cSrcweir 		}
289cdf0e10cSrcweir 	}
290cdf0e10cSrcweir 
291cdf0e10cSrcweir     return aNull_;
292cdf0e10cSrcweir }
293cdf0e10cSrcweir 
294cdf0e10cSrcweir AtTag * &
NewTag(UINT8 i_nIndex)295cdf0e10cSrcweir OldCppDocu::NewTag(UINT8 i_nIndex)
296cdf0e10cSrcweir {
297cdf0e10cSrcweir 	nTags[i_nIndex] = static_cast<UINT8>(aTags.size());
298cdf0e10cSrcweir 	aTags.push_back(0);
299cdf0e10cSrcweir 	return aTags.back();
300cdf0e10cSrcweir }
301cdf0e10cSrcweir 
302cdf0e10cSrcweir AtTag &
GetTag(UINT8 i_nIndex)303cdf0e10cSrcweir OldCppDocu::GetTag( UINT8	i_nIndex )
304cdf0e10cSrcweir {
305cdf0e10cSrcweir     csv_assert( i_nIndex < C_eAtTag_NrOfClasses );
306cdf0e10cSrcweir     csv_assert( nTags[i_nIndex] != C_ucNO_INDEX );
307cdf0e10cSrcweir     csv_assert( aTags[nTags[i_nIndex]] != 0 );
308cdf0e10cSrcweir 	return * aTags[nTags[i_nIndex]];
309cdf0e10cSrcweir }
310cdf0e10cSrcweir 
311cdf0e10cSrcweir bool
IsInternal() const312cdf0e10cSrcweir OldCppDocu::IsInternal() const
313cdf0e10cSrcweir {
314cdf0e10cSrcweir     return bIsInternal;
315cdf0e10cSrcweir }
316cdf0e10cSrcweir 
317cdf0e10cSrcweir bool
IsInterface() const318cdf0e10cSrcweir OldCppDocu::IsInterface() const
319cdf0e10cSrcweir {
320cdf0e10cSrcweir     return bIsInterface;
321cdf0e10cSrcweir }
322cdf0e10cSrcweir 
323cdf0e10cSrcweir void
do_Accept(csv::ProcessorIfc & io_processor) const324cdf0e10cSrcweir OldCppDocu::do_Accept(csv::ProcessorIfc & io_processor) const
325cdf0e10cSrcweir {
326cdf0e10cSrcweir     csv::CheckedCall(io_processor, *this);
327cdf0e10cSrcweir }
328cdf0e10cSrcweir 
329cdf0e10cSrcweir }   // namespace doc
330cdf0e10cSrcweir }   // namespace ary
331