1*0841af79SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*0841af79SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*0841af79SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*0841af79SAndrew Rist  * distributed with this work for additional information
6*0841af79SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*0841af79SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*0841af79SAndrew Rist  * "License"); you may not use this file except in compliance
9*0841af79SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*0841af79SAndrew Rist  *
11*0841af79SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*0841af79SAndrew Rist  *
13*0841af79SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*0841af79SAndrew Rist  * software distributed under the License is distributed on an
15*0841af79SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*0841af79SAndrew Rist  * KIND, either express or implied.  See the License for the
17*0841af79SAndrew Rist  * specific language governing permissions and limitations
18*0841af79SAndrew Rist  * under the License.
19*0841af79SAndrew Rist  *
20*0841af79SAndrew Rist  *************************************************************/
21cdf0e10cSrcweir 
22cdf0e10cSrcweir #include <precomp.h>
23cdf0e10cSrcweir #include "hd_docu.hxx"
24cdf0e10cSrcweir 
25cdf0e10cSrcweir 
26cdf0e10cSrcweir // NOT FULLY DEFINED SERVICES
27cdf0e10cSrcweir #include <ary/cpp/c_gate.hxx>
28cdf0e10cSrcweir #include <ary/cpp/c_namesp.hxx>
29cdf0e10cSrcweir #include <ary/cpp/c_class.hxx>
30cdf0e10cSrcweir #include <ary/cpp/c_enum.hxx>
31cdf0e10cSrcweir #include <ary/cpp/c_tydef.hxx>
32cdf0e10cSrcweir #include <ary/cpp/c_funct.hxx>
33cdf0e10cSrcweir #include <ary/cpp/c_vari.hxx>
34cdf0e10cSrcweir #include <ary/cpp/c_enuval.hxx>
35cdf0e10cSrcweir #include <ary/doc/d_oldcppdocu.hxx>
36cdf0e10cSrcweir #include <ary/info/all_tags.hxx>
37cdf0e10cSrcweir #include <ary/info/all_dts.hxx>
38cdf0e10cSrcweir #include <adc_cl.hxx>
39cdf0e10cSrcweir #include "html_kit.hxx"
40cdf0e10cSrcweir #include "opageenv.hxx"
41cdf0e10cSrcweir 
42cdf0e10cSrcweir 
43cdf0e10cSrcweir 
44cdf0e10cSrcweir using namespace ary::info;
45cdf0e10cSrcweir using namespace csi;
46cdf0e10cSrcweir 
47cdf0e10cSrcweir using html::DefList;
48cdf0e10cSrcweir using html::DefListTerm;
49cdf0e10cSrcweir using html::DefListDefinition;
50cdf0e10cSrcweir using html::Headline;
51cdf0e10cSrcweir using html::Link;
52cdf0e10cSrcweir 
53cdf0e10cSrcweir 
54cdf0e10cSrcweir const char *
55cdf0e10cSrcweir C_sTagHeadlines[ ary::info::C_eAtTag_NrOfClasses ] =
56cdf0e10cSrcweir     {
57cdf0e10cSrcweir         "ATTENTION!",   "Author",       "Changes",      "Collaborators",
58cdf0e10cSrcweir                                                                         "Contact",  // Contact may be unused
59cdf0e10cSrcweir         "Copyright",    "Deprecated",   "Description",  "Date of Documentation",
60cdf0e10cSrcweir                                                                         "How to Derive from this Class",
61cdf0e10cSrcweir         "Heap object - owner is responsible for deletion.",
62cdf0e10cSrcweir                         "Important Instances",
63cdf0e10cSrcweir                                         "Interface Only",
64cdf0e10cSrcweir                                                         "Invariant",    "Lifecycle",
65cdf0e10cSrcweir         "Multiplicity", "On Error",     "Persistency",  "Postcondition",
66cdf0e10cSrcweir                                                                         "Precondition",
67cdf0e10cSrcweir         "Responsibilities",
68cdf0e10cSrcweir                         "Return",       "Summary",      "Todos",        "Version",
69cdf0e10cSrcweir         "Base Classes", "Exceptions",   "Implements",   "Keywords",     "Parameters",
70cdf0e10cSrcweir         "See Also",     "Template Parameters",
71cdf0e10cSrcweir                                         "",             "Since "
72cdf0e10cSrcweir     };
73cdf0e10cSrcweir 
74cdf0e10cSrcweir 
75cdf0e10cSrcweir 
Docu_Display(OuputPage_Environment & io_rEnv)76cdf0e10cSrcweir Docu_Display::Docu_Display( OuputPage_Environment & io_rEnv )
77cdf0e10cSrcweir     :   HtmlDisplay_Impl(io_rEnv),
78cdf0e10cSrcweir         bUseHtmlInDocuTokens(false),
79cdf0e10cSrcweir         pCurClassOverwrite(0)
80cdf0e10cSrcweir {
81cdf0e10cSrcweir }
82cdf0e10cSrcweir 
~Docu_Display()83cdf0e10cSrcweir Docu_Display::~Docu_Display()
84cdf0e10cSrcweir {
85cdf0e10cSrcweir }
86cdf0e10cSrcweir 
87cdf0e10cSrcweir void
Assign_Out(csi::xml::Element & o_rOut)88cdf0e10cSrcweir Docu_Display::Assign_Out( csi::xml::Element & o_rOut )
89cdf0e10cSrcweir {
90cdf0e10cSrcweir     Easy().Enter(o_rOut);
91cdf0e10cSrcweir }
92cdf0e10cSrcweir 
93cdf0e10cSrcweir void
Unassign_Out()94cdf0e10cSrcweir Docu_Display::Unassign_Out()
95cdf0e10cSrcweir {
96cdf0e10cSrcweir     Easy().Leave();
97cdf0e10cSrcweir }
98cdf0e10cSrcweir 
99cdf0e10cSrcweir void
do_Process(const ary::cpp::Namespace & i_rData)100cdf0e10cSrcweir Docu_Display::do_Process( const ary::cpp::Namespace & i_rData )
101cdf0e10cSrcweir {
102cdf0e10cSrcweir     Process(i_rData.Docu());
103cdf0e10cSrcweir }
104cdf0e10cSrcweir 
105cdf0e10cSrcweir void
do_Process(const ary::cpp::Class & i_rData)106cdf0e10cSrcweir Docu_Display::do_Process( const ary::cpp::Class & i_rData )
107cdf0e10cSrcweir {
108cdf0e10cSrcweir     pCurClassOverwrite = &i_rData;
109cdf0e10cSrcweir     Process(i_rData.Docu());
110cdf0e10cSrcweir     pCurClassOverwrite = 0;
111cdf0e10cSrcweir }
112cdf0e10cSrcweir 
113cdf0e10cSrcweir void
do_Process(const ary::cpp::Enum & i_rData)114cdf0e10cSrcweir Docu_Display::do_Process( const ary::cpp::Enum & i_rData )
115cdf0e10cSrcweir {
116cdf0e10cSrcweir     Process(i_rData.Docu());
117cdf0e10cSrcweir }
118cdf0e10cSrcweir 
119cdf0e10cSrcweir void
do_Process(const ary::cpp::Typedef & i_rData)120cdf0e10cSrcweir Docu_Display::do_Process( const ary::cpp::Typedef & i_rData )
121cdf0e10cSrcweir {
122cdf0e10cSrcweir     Process(i_rData.Docu());
123cdf0e10cSrcweir }
124cdf0e10cSrcweir 
125cdf0e10cSrcweir void
do_Process(const ary::cpp::Function & i_rData)126cdf0e10cSrcweir Docu_Display::do_Process( const ary::cpp::Function & i_rData )
127cdf0e10cSrcweir {
128cdf0e10cSrcweir     Process(i_rData.Docu());
129cdf0e10cSrcweir }
130cdf0e10cSrcweir 
131cdf0e10cSrcweir void
do_Process(const ary::cpp::Variable & i_rData)132cdf0e10cSrcweir Docu_Display::do_Process( const ary::cpp::Variable & i_rData )
133cdf0e10cSrcweir {
134cdf0e10cSrcweir     Process(i_rData.Docu());
135cdf0e10cSrcweir }
136cdf0e10cSrcweir 
137cdf0e10cSrcweir 
138cdf0e10cSrcweir 
139cdf0e10cSrcweir // --------------       Interface ary::info::DocuDisplay  ------------------ //
140cdf0e10cSrcweir 
141cdf0e10cSrcweir 
142cdf0e10cSrcweir void
do_Process(const ary::doc::Documentation & i_rData)143cdf0e10cSrcweir Docu_Display::do_Process(const ary::doc::Documentation & i_rData)
144cdf0e10cSrcweir {
145cdf0e10cSrcweir     if (i_rData.Data() == 0)
146cdf0e10cSrcweir         return;
147cdf0e10cSrcweir 
148cdf0e10cSrcweir     const ary::doc::OldCppDocu *
149cdf0e10cSrcweir         docdata = dynamic_cast< const ary::doc::OldCppDocu* >(i_rData.Data());
150cdf0e10cSrcweir     csv_assert(docdata != 0);
151cdf0e10cSrcweir 
152cdf0e10cSrcweir     Start_DocuBlock();
153cdf0e10cSrcweir 
154cdf0e10cSrcweir     if ( docdata->IsObsolete() )
155cdf0e10cSrcweir     {
156cdf0e10cSrcweir         CurOut()
157cdf0e10cSrcweir             >> *new html::DefListTerm
158cdf0e10cSrcweir                 >> *new html::Strong
159cdf0e10cSrcweir                     << "D E P R E C A T E D";
160cdf0e10cSrcweir 
161cdf0e10cSrcweir     }
162cdf0e10cSrcweir 
163cdf0e10cSrcweir     ary::doc::OldCppDocu::TagList::const_iterator
164cdf0e10cSrcweir         itEnd = docdata->Tags().end();
165cdf0e10cSrcweir     for ( ary::doc::OldCppDocu::TagList::const_iterator it = docdata->Tags().begin();
166cdf0e10cSrcweir           it != itEnd;
167cdf0e10cSrcweir           ++it )
168cdf0e10cSrcweir     {
169cdf0e10cSrcweir      	(*it)->StoreAt( *this );
170cdf0e10cSrcweir     }
171cdf0e10cSrcweir 
172cdf0e10cSrcweir     Finish_DocuBlock();
173cdf0e10cSrcweir }
174cdf0e10cSrcweir 
175cdf0e10cSrcweir void
Display_StdTag(const StdTag & i_rData)176cdf0e10cSrcweir Docu_Display::Display_StdTag( const StdTag & i_rData )
177cdf0e10cSrcweir {
178cdf0e10cSrcweir     csv_assert( uintt(i_rData.Std_Id()) < uintt(ary::info::C_eAtTag_NrOfClasses) );
179cdf0e10cSrcweir 
180cdf0e10cSrcweir     const ary::info::DocuText::TokenList &
181cdf0e10cSrcweir         rText = i_rData.CText().Tokens();
182cdf0e10cSrcweir     typedef ary::info::DocuText::TokenList::const_iterator TokenIterator;
183cdf0e10cSrcweir 
184cdf0e10cSrcweir     if ( rText.empty() )
185cdf0e10cSrcweir         return;
186cdf0e10cSrcweir     else if ( rText.size() < 3 )
187cdf0e10cSrcweir     {
188cdf0e10cSrcweir         bool bIsWhite = true;
189cdf0e10cSrcweir         for ( TokenIterator it = rText.begin();
190cdf0e10cSrcweir               it != rText.end();
191cdf0e10cSrcweir               ++it )
192cdf0e10cSrcweir         {
193cdf0e10cSrcweir             if (bIsWhite)
194cdf0e10cSrcweir                 bIsWhite = (*it)->IsWhite();
195cdf0e10cSrcweir         }
196cdf0e10cSrcweir         if (bIsWhite)
197cdf0e10cSrcweir             return;
198cdf0e10cSrcweir     }
199cdf0e10cSrcweir 
200cdf0e10cSrcweir     Write_TagTitle( C_sTagHeadlines[i_rData.Std_Id()] );
201cdf0e10cSrcweir     Write_TagContents( i_rData.CText() );
202cdf0e10cSrcweir }
203cdf0e10cSrcweir 
204cdf0e10cSrcweir void
Display_BaseTag(const BaseTag &)205cdf0e10cSrcweir Docu_Display::Display_BaseTag( const BaseTag & )
206cdf0e10cSrcweir {
207cdf0e10cSrcweir }
208cdf0e10cSrcweir 
209cdf0e10cSrcweir void
Display_ExceptionTag(const ExceptionTag &)210cdf0e10cSrcweir Docu_Display::Display_ExceptionTag( const ExceptionTag & )
211cdf0e10cSrcweir {
212cdf0e10cSrcweir }
213cdf0e10cSrcweir 
214cdf0e10cSrcweir void
Display_ImplementsTag(const ImplementsTag &)215cdf0e10cSrcweir Docu_Display::Display_ImplementsTag( const ImplementsTag & )
216cdf0e10cSrcweir {
217cdf0e10cSrcweir }
218cdf0e10cSrcweir 
219cdf0e10cSrcweir void
Display_KeywordTag(const KeywordTag &)220cdf0e10cSrcweir Docu_Display::Display_KeywordTag( const KeywordTag & )
221cdf0e10cSrcweir {
222cdf0e10cSrcweir }
223cdf0e10cSrcweir 
224cdf0e10cSrcweir void
Display_ParameterTag(const ParameterTag & i_rData)225cdf0e10cSrcweir Docu_Display::Display_ParameterTag( const ParameterTag & i_rData )
226cdf0e10cSrcweir {
227cdf0e10cSrcweir     Write_TagTitle( "Parameters" );
228cdf0e10cSrcweir 
229cdf0e10cSrcweir     adcdisp::ExplanationTable
230cdf0e10cSrcweir         aParams( CurOut() >> *new DefListDefinition );
231cdf0e10cSrcweir 
232cdf0e10cSrcweir     for ( const ParameterTag * pParam = &i_rData;
233cdf0e10cSrcweir           pParam != 0;
234cdf0e10cSrcweir           pParam = pParam->GetNext() )   // KORR_FUTURE
235cdf0e10cSrcweir     {
236cdf0e10cSrcweir         aParams.AddEntry( pParam->ParamName().c_str() );
237cdf0e10cSrcweir 
238cdf0e10cSrcweir         Easy().Enter( aParams.Def() );
239cdf0e10cSrcweir         Write_Text( pParam->CText() );
240cdf0e10cSrcweir         Easy().Leave();
241cdf0e10cSrcweir     }   // end for
242cdf0e10cSrcweir }
243cdf0e10cSrcweir 
244cdf0e10cSrcweir void
Display_SeeTag(const SeeTag & i_rData)245cdf0e10cSrcweir Docu_Display::Display_SeeTag( const SeeTag & i_rData )
246cdf0e10cSrcweir {
247cdf0e10cSrcweir     Write_TagTitle( "See Also" );
248cdf0e10cSrcweir 
249cdf0e10cSrcweir     DefListDefinition * dpDef = new DefListDefinition;
250cdf0e10cSrcweir     CurOut() << dpDef;
251cdf0e10cSrcweir     Easy().Enter(*dpDef);
252cdf0e10cSrcweir 
253cdf0e10cSrcweir     for ( std::vector< ary::QualifiedName >::const_iterator
254cdf0e10cSrcweir             it = i_rData.References().begin();
255cdf0e10cSrcweir           it != i_rData.References().end();
256cdf0e10cSrcweir           ++it )
257cdf0e10cSrcweir     {
258cdf0e10cSrcweir         Write_LinkableText( (*it) );
259cdf0e10cSrcweir         CurOut() << new html::LineBreak;
260cdf0e10cSrcweir     }
261cdf0e10cSrcweir 
262cdf0e10cSrcweir     Easy().Leave();
263cdf0e10cSrcweir }
264cdf0e10cSrcweir 
265cdf0e10cSrcweir void
Display_TemplateTag(const TemplateTag & i_rData)266cdf0e10cSrcweir Docu_Display::Display_TemplateTag( const TemplateTag & i_rData )
267cdf0e10cSrcweir {
268cdf0e10cSrcweir     Write_TagTitle( "Template Parameters" );
269cdf0e10cSrcweir 
270cdf0e10cSrcweir     adcdisp::ExplanationTable
271cdf0e10cSrcweir         aTplParams( CurOut() >> *new DefListDefinition );
272cdf0e10cSrcweir 
273cdf0e10cSrcweir     for ( const TemplateTag * pTplParam = &i_rData;
274cdf0e10cSrcweir           pTplParam != 0;
275cdf0e10cSrcweir           pTplParam = pTplParam->GetNext() )
276cdf0e10cSrcweir     {
277cdf0e10cSrcweir         aTplParams.AddEntry( pTplParam->TplParamName().c_str() );
278cdf0e10cSrcweir 
279cdf0e10cSrcweir         Easy().Enter( aTplParams.Def() );
280cdf0e10cSrcweir         Write_Text( pTplParam->CText() );
281cdf0e10cSrcweir         Easy().Leave();
282cdf0e10cSrcweir     }   // end for
283cdf0e10cSrcweir }
284cdf0e10cSrcweir 
285cdf0e10cSrcweir void
Display_LabelTag(const LabelTag &)286cdf0e10cSrcweir Docu_Display::Display_LabelTag( const LabelTag & )
287cdf0e10cSrcweir {
288cdf0e10cSrcweir }
289cdf0e10cSrcweir 
290cdf0e10cSrcweir void
Display_SinceTag(const ary::info::SinceTag & i_rData)291cdf0e10cSrcweir Docu_Display::Display_SinceTag( const ary::info::SinceTag & i_rData )
292cdf0e10cSrcweir {
293cdf0e10cSrcweir     if ( i_rData.Version().empty() )
294cdf0e10cSrcweir     {
295cdf0e10cSrcweir          return;
296cdf0e10cSrcweir     }
297cdf0e10cSrcweir 
298cdf0e10cSrcweir     // Transform the value of the @since tag into the text to be displayed.
299cdf0e10cSrcweir     String sDisplay;
300cdf0e10cSrcweir     if ( autodoc::CommandLine::Get_().DoesTransform_SinceTag() )
301cdf0e10cSrcweir     {
302cdf0e10cSrcweir         sDisplay = autodoc::CommandLine::Get_()
303cdf0e10cSrcweir                         .DisplayOf_SinceTagValue( i_rData.Version() );
304cdf0e10cSrcweir     }
305cdf0e10cSrcweir     else
306cdf0e10cSrcweir     {
307cdf0e10cSrcweir         sDisplay = i_rData.Version();
308cdf0e10cSrcweir     }
309cdf0e10cSrcweir 
310cdf0e10cSrcweir     if (sDisplay.empty())
311cdf0e10cSrcweir         return;
312cdf0e10cSrcweir 
313cdf0e10cSrcweir     Write_TagTitle( "Since " );
314cdf0e10cSrcweir 
315cdf0e10cSrcweir     DefListDefinition * dpDef = new DefListDefinition;
316cdf0e10cSrcweir     CurOut() << dpDef;
317cdf0e10cSrcweir 
318cdf0e10cSrcweir     Easy().Enter(*dpDef);
319cdf0e10cSrcweir     CurOut() << sDisplay;
320cdf0e10cSrcweir     Easy().Leave();
321cdf0e10cSrcweir }
322cdf0e10cSrcweir 
323cdf0e10cSrcweir void
Display_DT_Text(const DT_Text & i_rData)324cdf0e10cSrcweir Docu_Display::Display_DT_Text( const DT_Text & i_rData )
325cdf0e10cSrcweir {
326cdf0e10cSrcweir 	Write_TextToken(  i_rData.Text() );
327cdf0e10cSrcweir }
328cdf0e10cSrcweir 
329cdf0e10cSrcweir void
Display_DT_MaybeLink(const DT_MaybeLink & i_rData)330cdf0e10cSrcweir Docu_Display::Display_DT_MaybeLink( const DT_MaybeLink & i_rData )
331cdf0e10cSrcweir {
332cdf0e10cSrcweir     // KORR_FUTURE
333cdf0e10cSrcweir 	Write_TextToken(  i_rData.Text() );
334cdf0e10cSrcweir }
335cdf0e10cSrcweir 
336cdf0e10cSrcweir void
Display_DT_Whitespace(const DT_Whitespace & i_rData)337cdf0e10cSrcweir Docu_Display::Display_DT_Whitespace( const DT_Whitespace & i_rData )
338cdf0e10cSrcweir {
339cdf0e10cSrcweir     static char sSpace[300] =
340cdf0e10cSrcweir         "                                         "
341cdf0e10cSrcweir         "                                         "
342cdf0e10cSrcweir         "                                         "
343cdf0e10cSrcweir         "                                         "
344cdf0e10cSrcweir         "                                         "
345cdf0e10cSrcweir         "                                        ";
346cdf0e10cSrcweir     UINT8 nLength = i_rData.Length();
347cdf0e10cSrcweir     sSpace[nLength] = NULCH;
348cdf0e10cSrcweir     CurOut() << sSpace;
349cdf0e10cSrcweir     sSpace[nLength] = ' ';
350cdf0e10cSrcweir }
351cdf0e10cSrcweir 
352cdf0e10cSrcweir void
Display_DT_Eol(const DT_Eol &)353cdf0e10cSrcweir Docu_Display::Display_DT_Eol( const DT_Eol & )
354cdf0e10cSrcweir {
355cdf0e10cSrcweir     CurOut() << new html::Sbr;
356cdf0e10cSrcweir }
357cdf0e10cSrcweir 
358cdf0e10cSrcweir void
Display_DT_Xml(const ary::info::DT_Xml & i_rData)359cdf0e10cSrcweir Docu_Display::Display_DT_Xml( const ary::info::DT_Xml & i_rData )
360cdf0e10cSrcweir {
361cdf0e10cSrcweir     CurOut() << new xml::XmlCode( i_rData.Text() );
362cdf0e10cSrcweir }
363cdf0e10cSrcweir 
364cdf0e10cSrcweir const ary::cpp::Gate *
inq_Get_ReFinder() const365cdf0e10cSrcweir Docu_Display::inq_Get_ReFinder() const
366cdf0e10cSrcweir {
367cdf0e10cSrcweir     return &Env().Gate();
368cdf0e10cSrcweir }
369cdf0e10cSrcweir 
370cdf0e10cSrcweir void
Start_DocuBlock()371cdf0e10cSrcweir Docu_Display::Start_DocuBlock()
372cdf0e10cSrcweir {
373cdf0e10cSrcweir 	DYN DefList * dpDefList = new DefList;
374cdf0e10cSrcweir     CurOut() << dpDefList;
375cdf0e10cSrcweir     Easy().Enter( *dpDefList );
376cdf0e10cSrcweir }
377cdf0e10cSrcweir 
378cdf0e10cSrcweir void
Finish_DocuBlock()379cdf0e10cSrcweir Docu_Display::Finish_DocuBlock()
380cdf0e10cSrcweir {
381cdf0e10cSrcweir     Easy().Leave();
382cdf0e10cSrcweir }
383cdf0e10cSrcweir 
384cdf0e10cSrcweir void
Write_TagTitle(const char * i_sText,const char *)385cdf0e10cSrcweir Docu_Display::Write_TagTitle( const char *        i_sText,
386cdf0e10cSrcweir                               const char *        )
387cdf0e10cSrcweir {
388cdf0e10cSrcweir     if ( strcmp(i_sText,"ATTENTION!") == 0 )
389cdf0e10cSrcweir     {
390cdf0e10cSrcweir         CurOut()
391cdf0e10cSrcweir             >> *new html::DefListTerm
392cdf0e10cSrcweir                 << new html::ClassAttr("attention")
393cdf0e10cSrcweir                 << i_sText;
394cdf0e10cSrcweir     }
395cdf0e10cSrcweir     else
396cdf0e10cSrcweir     {
397cdf0e10cSrcweir         CurOut()
398cdf0e10cSrcweir             >> *new html::DefListTerm
399cdf0e10cSrcweir                 << i_sText;
400cdf0e10cSrcweir     }
401cdf0e10cSrcweir }
402cdf0e10cSrcweir 
403cdf0e10cSrcweir void
Write_TagContents(const DocuText & i_rDocuText)404cdf0e10cSrcweir Docu_Display::Write_TagContents( const DocuText & i_rDocuText )
405cdf0e10cSrcweir {
406cdf0e10cSrcweir     DefListDefinition * dpDef = new DefListDefinition;
407cdf0e10cSrcweir     CurOut() << dpDef;
408cdf0e10cSrcweir 
409cdf0e10cSrcweir     Easy().Enter(*dpDef);
410cdf0e10cSrcweir     Write_Text(i_rDocuText);
411cdf0e10cSrcweir     Easy().Leave();
412cdf0e10cSrcweir }
413cdf0e10cSrcweir 
414cdf0e10cSrcweir void
Write_Text(const ary::info::DocuText & i_rDocuText)415cdf0e10cSrcweir Docu_Display::Write_Text( const ary::info::DocuText & i_rDocuText )
416cdf0e10cSrcweir {
417cdf0e10cSrcweir     if ( i_rDocuText.IsNoHtml() )
418cdf0e10cSrcweir     {
419cdf0e10cSrcweir         CurOut()
420cdf0e10cSrcweir             << new xml::XmlCode("<pre>");
421cdf0e10cSrcweir         bUseHtmlInDocuTokens = false;
422cdf0e10cSrcweir     }
423cdf0e10cSrcweir     else
424cdf0e10cSrcweir     {
425cdf0e10cSrcweir      	bUseHtmlInDocuTokens = true;
426cdf0e10cSrcweir     }
427cdf0e10cSrcweir 	i_rDocuText.StoreAt( *this );
428cdf0e10cSrcweir     if ( i_rDocuText.IsNoHtml() )
429cdf0e10cSrcweir     {
430cdf0e10cSrcweir         CurOut()
431cdf0e10cSrcweir             << new xml::XmlCode("</pre>");
432cdf0e10cSrcweir     }
433cdf0e10cSrcweir }
434cdf0e10cSrcweir 
435cdf0e10cSrcweir void
Write_TextToken(const String & i_sText)436cdf0e10cSrcweir Docu_Display::Write_TextToken( const String & i_sText )
437cdf0e10cSrcweir {
438cdf0e10cSrcweir  	if ( bUseHtmlInDocuTokens )
439cdf0e10cSrcweir         CurOut() << new xml::XmlCode(i_sText);
440cdf0e10cSrcweir     else
441cdf0e10cSrcweir         CurOut() << i_sText;
442cdf0e10cSrcweir }
443cdf0e10cSrcweir 
444cdf0e10cSrcweir void
Write_LinkableText(const ary::QualifiedName & i_sQuName)445cdf0e10cSrcweir Docu_Display::Write_LinkableText( const ary::QualifiedName & i_sQuName )
446cdf0e10cSrcweir {
447cdf0e10cSrcweir 	const ary::cpp::CodeEntity *
448cdf0e10cSrcweir         pCe = FindUnambiguousCe( Env(), i_sQuName, pCurClassOverwrite );
449cdf0e10cSrcweir     if ( pCe != 0 )
450cdf0e10cSrcweir     {
451cdf0e10cSrcweir         csi::xml::Element *
452cdf0e10cSrcweir             pLink = new csi::html::Link( Link2Ce(Env(), *pCe) );
453cdf0e10cSrcweir         CurOut() << pLink;
454cdf0e10cSrcweir         Easy().Enter(*pLink);
455cdf0e10cSrcweir         Write_QualifiedName(i_sQuName);
456cdf0e10cSrcweir         Easy().Leave();
457cdf0e10cSrcweir     }
458cdf0e10cSrcweir     else
459cdf0e10cSrcweir     {
460cdf0e10cSrcweir         Write_QualifiedName(i_sQuName);
461cdf0e10cSrcweir     }
462cdf0e10cSrcweir     CurOut() << " ";
463cdf0e10cSrcweir }
464cdf0e10cSrcweir 
465cdf0e10cSrcweir void
Write_QualifiedName(const ary::QualifiedName & i_sQuName)466cdf0e10cSrcweir Docu_Display::Write_QualifiedName( const ary::QualifiedName & i_sQuName )
467cdf0e10cSrcweir {
468cdf0e10cSrcweir     if ( i_sQuName.IsAbsolute() )
469cdf0e10cSrcweir         CurOut() << "::";
470cdf0e10cSrcweir     for ( ary::QualifiedName::namespace_iterator it = i_sQuName.first_namespace();
471cdf0e10cSrcweir           it != i_sQuName.end_namespace();
472cdf0e10cSrcweir           ++it )
473cdf0e10cSrcweir     {
474cdf0e10cSrcweir         CurOut() <<  (*it) << "::";
475cdf0e10cSrcweir     }
476cdf0e10cSrcweir     CurOut() << i_sQuName.LocalName();
477cdf0e10cSrcweir     if ( i_sQuName.IsFunction() )
478cdf0e10cSrcweir         CurOut() << "()";
479cdf0e10cSrcweir }
480cdf0e10cSrcweir 
481