1*ab595ff6SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*ab595ff6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*ab595ff6SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*ab595ff6SAndrew Rist * distributed with this work for additional information
6*ab595ff6SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*ab595ff6SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*ab595ff6SAndrew Rist * "License"); you may not use this file except in compliance
9*ab595ff6SAndrew Rist * with the License. You may obtain a copy of the License at
10*ab595ff6SAndrew Rist *
11*ab595ff6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*ab595ff6SAndrew Rist *
13*ab595ff6SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*ab595ff6SAndrew Rist * software distributed under the License is distributed on an
15*ab595ff6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*ab595ff6SAndrew Rist * KIND, either express or implied. See the License for the
17*ab595ff6SAndrew Rist * specific language governing permissions and limitations
18*ab595ff6SAndrew Rist * under the License.
19*ab595ff6SAndrew Rist *
20*ab595ff6SAndrew Rist *************************************************************/
21*ab595ff6SAndrew Rist
22*ab595ff6SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir
25cdf0e10cSrcweir #include <xmltree.hxx>
26cdf0e10cSrcweir
27cdf0e10cSrcweir
28cdf0e10cSrcweir // NOT FULLY DEFINED SERVICES
29cdf0e10cSrcweir #include <cr_html.hxx>
30cdf0e10cSrcweir #include <cr_index.hxx>
31cdf0e10cSrcweir
32cdf0e10cSrcweir
33cdf0e10cSrcweir char C_sMODULEDESCRIPTION[] = "module-description";
34cdf0e10cSrcweir char C_sCOMPONENTDESCRIPTION[] = "component-description";
35cdf0e10cSrcweir char C_sAuthor[] = "author";
36cdf0e10cSrcweir char C_sName[] = "name";
37cdf0e10cSrcweir char C_sDescription[] = "description";
38cdf0e10cSrcweir char C_sReferenceDocu[] = "reference-docu";
39cdf0e10cSrcweir char C_sModuleName[] = "module-name";
40cdf0e10cSrcweir char C_sLoaderName[] = "loader-name";
41cdf0e10cSrcweir char C_sSupportedService[] = "supported-service";
42cdf0e10cSrcweir char C_sServiceDependency[] = "service-dependency";
43cdf0e10cSrcweir char C_sProjectBuildDependency[] = "project-build-dependency";
44cdf0e10cSrcweir char C_sRuntimeModuleDependency[] = "runtime-module-dependency";
45cdf0e10cSrcweir char C_sLanguage[] = "language";
46cdf0e10cSrcweir char C_sStatus[] = "status";
47cdf0e10cSrcweir char C_sType[] = "type";
48cdf0e10cSrcweir char C_sAttr_value[] = "value";
49cdf0e10cSrcweir char C_sAttr_xl_href[] = "xlink:href";
50cdf0e10cSrcweir char C_sAttr_xl_role[] = "xlink:role";
51cdf0e10cSrcweir char C_sAttr_xl_title[] = "xlink:title";
52cdf0e10cSrcweir char C_sAttr_xmlns[] = "xmlns:xlink";
53cdf0e10cSrcweir char C_sAttr_xl_type[] = "xlink:type";
54cdf0e10cSrcweir char C_sCompDescrListTitle[] = "Component Descriptions";
55cdf0e10cSrcweir
56cdf0e10cSrcweir
57cdf0e10cSrcweir FreeChoiceElement * Create_ModuleDescrOptional_Element(
58cdf0e10cSrcweir MultipleTextElement * &
59cdf0e10cSrcweir o_rTypes,
60cdf0e10cSrcweir MultipleTextElement * &
61cdf0e10cSrcweir o_rServiceDependencies );
62cdf0e10cSrcweir FreeChoiceElement * Create_CompDescrOptional_Element(
63cdf0e10cSrcweir MultipleTextElement * &
64cdf0e10cSrcweir o_rTypes,
65cdf0e10cSrcweir MultipleTextElement * &
66cdf0e10cSrcweir o_rServiceDependencies );
67cdf0e10cSrcweir
68cdf0e10cSrcweir
69cdf0e10cSrcweir
ModuleDescription()70cdf0e10cSrcweir ModuleDescription::ModuleDescription()
71cdf0e10cSrcweir : SequenceElement(C_sMODULEDESCRIPTION),
72cdf0e10cSrcweir pModuleName(0),
73cdf0e10cSrcweir pCdList(0),
74cdf0e10cSrcweir pTypes(0),
75cdf0e10cSrcweir pServiceDependencies(0)
76cdf0e10cSrcweir {
77cdf0e10cSrcweir pModuleName = new MdName;
78cdf0e10cSrcweir AddChild( *pModuleName );
79cdf0e10cSrcweir pCdList = new CompDescrList;
80cdf0e10cSrcweir AddChild( *pCdList );
81cdf0e10cSrcweir AddChild( *Create_ModuleDescrOptional_Element( pTypes, pServiceDependencies ) );
82cdf0e10cSrcweir }
83cdf0e10cSrcweir
84cdf0e10cSrcweir const Simstr &
ModuleName() const85cdf0e10cSrcweir ModuleDescription::ModuleName() const
86cdf0e10cSrcweir {
87cdf0e10cSrcweir return pModuleName->Data();
88cdf0e10cSrcweir }
89cdf0e10cSrcweir
90cdf0e10cSrcweir void
Get_SupportedServices(List<const MultipleTextElement * > & o_rServices) const91cdf0e10cSrcweir ModuleDescription::Get_SupportedServices( List< const MultipleTextElement * > & o_rServices ) const
92cdf0e10cSrcweir {
93cdf0e10cSrcweir o_rServices.push_back(pServiceDependencies);
94cdf0e10cSrcweir pCdList->Get_SupportedServices( o_rServices );
95cdf0e10cSrcweir }
96cdf0e10cSrcweir
97cdf0e10cSrcweir void
Get_Types(List<const MultipleTextElement * > & o_rTypes) const98cdf0e10cSrcweir ModuleDescription::Get_Types( List< const MultipleTextElement * > & o_rTypes ) const
99cdf0e10cSrcweir {
100cdf0e10cSrcweir o_rTypes.push_back(pTypes);
101cdf0e10cSrcweir pCdList->Get_Types( o_rTypes );
102cdf0e10cSrcweir }
103cdf0e10cSrcweir
104cdf0e10cSrcweir void
Get_ServiceDependencies(List<const MultipleTextElement * > & o_rServices) const105cdf0e10cSrcweir ModuleDescription::Get_ServiceDependencies( List< const MultipleTextElement * > & o_rServices ) const
106cdf0e10cSrcweir {
107cdf0e10cSrcweir pCdList->Get_ServiceDependencies( o_rServices );
108cdf0e10cSrcweir }
109cdf0e10cSrcweir
ComponentDescription()110cdf0e10cSrcweir ComponentDescription::ComponentDescription()
111cdf0e10cSrcweir : SequenceElement(C_sCOMPONENTDESCRIPTION,1),
112cdf0e10cSrcweir pComponentName(0),
113cdf0e10cSrcweir pSupportedServices(0),
114cdf0e10cSrcweir pTypes(0),
115cdf0e10cSrcweir pServiceDependencies(0)
116cdf0e10cSrcweir {
117cdf0e10cSrcweir AddChild( *new SglTextElement(C_sAuthor, lt_nolink, false) );
118cdf0e10cSrcweir pComponentName = new CdName;
119cdf0e10cSrcweir AddChild( *pComponentName );
120cdf0e10cSrcweir AddChild( *new SglTextElement(C_sDescription, lt_nolink, false) );
121cdf0e10cSrcweir AddChild( *new SglTextElement(C_sLoaderName, lt_idl, true) );
122cdf0e10cSrcweir AddChild( *new SglTextElement(C_sLanguage, lt_nolink, false) );
123cdf0e10cSrcweir AddChild( *new SglAttrElement(C_sStatus, C_sAttr_value) );
124cdf0e10cSrcweir pSupportedServices = new SupportedService;
125cdf0e10cSrcweir AddChild( *pSupportedServices );
126cdf0e10cSrcweir AddChild( *Create_CompDescrOptional_Element( pTypes, pServiceDependencies ) );
127cdf0e10cSrcweir }
128cdf0e10cSrcweir
CompDescrList()129cdf0e10cSrcweir CompDescrList::CompDescrList()
130cdf0e10cSrcweir : ListElement(C_sCOMPONENTDESCRIPTION, 0)
131cdf0e10cSrcweir {
132cdf0e10cSrcweir }
133cdf0e10cSrcweir
134cdf0e10cSrcweir void
Write2Html(HtmlCreator & io_rHC) const135cdf0e10cSrcweir CompDescrList::Write2Html( HtmlCreator & io_rHC ) const
136cdf0e10cSrcweir {
137cdf0e10cSrcweir io_rHC.StartBigCell(C_sCompDescrListTitle);
138cdf0e10cSrcweir ListElement::Write2Html(io_rHC);
139cdf0e10cSrcweir io_rHC.FinishBigCell();
140cdf0e10cSrcweir }
141cdf0e10cSrcweir
142cdf0e10cSrcweir XmlElement *
Create_and_Add_NewElement()143cdf0e10cSrcweir CompDescrList::Create_and_Add_NewElement()
144cdf0e10cSrcweir {
145cdf0e10cSrcweir ComponentDescription * pCD = new ComponentDescription;
146cdf0e10cSrcweir Children().push_back(pCD);
147cdf0e10cSrcweir aCDs.push_back(pCD);
148cdf0e10cSrcweir return pCD;
149cdf0e10cSrcweir }
150cdf0e10cSrcweir
151cdf0e10cSrcweir void
Get_SupportedServices(List<const MultipleTextElement * > & o_rResult) const152cdf0e10cSrcweir CompDescrList::Get_SupportedServices( List< const MultipleTextElement * > & o_rResult ) const
153cdf0e10cSrcweir {
154cdf0e10cSrcweir unsigned i_max = aCDs.size();;
155cdf0e10cSrcweir for (unsigned i = 0; i < i_max; ++i)
156cdf0e10cSrcweir {
157cdf0e10cSrcweir o_rResult.push_back(& aCDs[i]->SupportedServices());
158cdf0e10cSrcweir } // end for
159cdf0e10cSrcweir }
160cdf0e10cSrcweir
161cdf0e10cSrcweir void
Get_Types(List<const MultipleTextElement * > & o_rResult) const162cdf0e10cSrcweir CompDescrList::Get_Types( List< const MultipleTextElement * > & o_rResult ) const
163cdf0e10cSrcweir {
164cdf0e10cSrcweir unsigned i_max = aCDs.size();;
165cdf0e10cSrcweir for (unsigned i = 0; i < i_max; ++i)
166cdf0e10cSrcweir {
167cdf0e10cSrcweir o_rResult.push_back(& aCDs[i]->Types());
168cdf0e10cSrcweir } // end for
169cdf0e10cSrcweir }
170cdf0e10cSrcweir
171cdf0e10cSrcweir void
Get_ServiceDependencies(List<const MultipleTextElement * > & o_rResult) const172cdf0e10cSrcweir CompDescrList::Get_ServiceDependencies( List< const MultipleTextElement * > & o_rResult ) const
173cdf0e10cSrcweir {
174cdf0e10cSrcweir unsigned i_max = aCDs.size();;
175cdf0e10cSrcweir for (unsigned i = 0; i < i_max; ++i)
176cdf0e10cSrcweir {
177cdf0e10cSrcweir o_rResult.push_back(& aCDs[i]->ServiceDependencies());
178cdf0e10cSrcweir } // end for
179cdf0e10cSrcweir }
180cdf0e10cSrcweir
MdName()181cdf0e10cSrcweir MdName::MdName()
182cdf0e10cSrcweir : SglTextElement(C_sModuleName, lt_html, false)
183cdf0e10cSrcweir {
184cdf0e10cSrcweir }
185cdf0e10cSrcweir
186cdf0e10cSrcweir void
Write2Html(HtmlCreator & io_rHC) const187cdf0e10cSrcweir MdName::Write2Html( HtmlCreator & io_rHC ) const
188cdf0e10cSrcweir {
189cdf0e10cSrcweir io_rHC.Write_SglTextElement( *this, true );
190cdf0e10cSrcweir }
191cdf0e10cSrcweir
CdName()192cdf0e10cSrcweir CdName::CdName()
193cdf0e10cSrcweir : SglTextElement(C_sName, lt_html, true)
194cdf0e10cSrcweir {
195cdf0e10cSrcweir }
196cdf0e10cSrcweir
197cdf0e10cSrcweir void
Write2Html(HtmlCreator & io_rHC) const198cdf0e10cSrcweir CdName::Write2Html( HtmlCreator & io_rHC ) const
199cdf0e10cSrcweir {
200cdf0e10cSrcweir io_rHC.Write_SglTextElement( *this, true );
201cdf0e10cSrcweir }
202cdf0e10cSrcweir
SupportedService()203cdf0e10cSrcweir SupportedService::SupportedService()
204cdf0e10cSrcweir : MultipleTextElement(C_sSupportedService, lt_idl, true)
205cdf0e10cSrcweir {
206cdf0e10cSrcweir }
207cdf0e10cSrcweir
208cdf0e10cSrcweir void
Insert2Index(Index & o_rIndex) const209cdf0e10cSrcweir SupportedService::Insert2Index( Index & o_rIndex ) const
210cdf0e10cSrcweir {
211cdf0e10cSrcweir for ( unsigned i = 0; i < Size(); ++i )
212cdf0e10cSrcweir {
213cdf0e10cSrcweir o_rIndex.InsertSupportedService( Data(i) );
214cdf0e10cSrcweir }
215cdf0e10cSrcweir }
216cdf0e10cSrcweir
217cdf0e10cSrcweir FreeChoiceElement *
Create_ModuleDescrOptional_Element(MultipleTextElement * & o_rTypes,MultipleTextElement * & o_rServiceDependencies)218cdf0e10cSrcweir Create_ModuleDescrOptional_Element( MultipleTextElement * & o_rTypes,
219cdf0e10cSrcweir MultipleTextElement * & o_rServiceDependencies )
220cdf0e10cSrcweir {
221cdf0e10cSrcweir FreeChoiceElement * ret = Create_CompDescrOptional_Element( o_rTypes, o_rServiceDependencies );
222cdf0e10cSrcweir
223cdf0e10cSrcweir ret->AddChild( *new MultipleTextElement(C_sProjectBuildDependency, lt_nolink, false) );
224cdf0e10cSrcweir ret->AddChild( *new MultipleTextElement(C_sRuntimeModuleDependency, lt_nolink, false) );
225cdf0e10cSrcweir return ret;
226cdf0e10cSrcweir }
227cdf0e10cSrcweir
228cdf0e10cSrcweir FreeChoiceElement *
Create_CompDescrOptional_Element(MultipleTextElement * & o_rTypes,MultipleTextElement * & o_rServiceDependencies)229cdf0e10cSrcweir Create_CompDescrOptional_Element( MultipleTextElement * & o_rTypes,
230cdf0e10cSrcweir MultipleTextElement * & o_rServiceDependencies )
231cdf0e10cSrcweir {
232cdf0e10cSrcweir FreeChoiceElement * ret = new FreeChoiceElement;
233cdf0e10cSrcweir const unsigned C_sRefDocuAttrNumber = 5;
234cdf0e10cSrcweir static const char * C_sRefDocuAttrNames[C_sRefDocuAttrNumber]
235cdf0e10cSrcweir = { C_sAttr_xl_href, C_sAttr_xl_role, C_sAttr_xl_title, C_sAttr_xmlns, C_sAttr_xl_type };
236cdf0e10cSrcweir
237cdf0e10cSrcweir ret->AddChild( *new MultipleAttrElement(C_sReferenceDocu, C_sRefDocuAttrNames, C_sRefDocuAttrNumber) );
238cdf0e10cSrcweir o_rServiceDependencies = new MultipleTextElement(C_sServiceDependency, lt_idl, true);
239cdf0e10cSrcweir ret->AddChild( *o_rServiceDependencies );
240cdf0e10cSrcweir o_rTypes = new MultipleTextElement(C_sType, lt_idl, true);
241cdf0e10cSrcweir ret->AddChild( *o_rTypes );
242cdf0e10cSrcweir return ret;
243cdf0e10cSrcweir }
244cdf0e10cSrcweir
245cdf0e10cSrcweir
246cdf0e10cSrcweir #if 0
247cdf0e10cSrcweir
248cdf0e10cSrcweir const TextElement *
249cdf0e10cSrcweir ModuleDescription::ServiceDependencies() const
250cdf0e10cSrcweir {
251cdf0e10cSrcweir const unsigned nEarliestPossibleServiceDependenciesIndexInModules = 1;
252cdf0e10cSrcweir
253cdf0e10cSrcweir for ( unsigned i = nEarliestPossibleServiceDependenciesIndexInModules;
254cdf0e10cSrcweir i < Children().size();
255cdf0e10cSrcweir ++i )
256cdf0e10cSrcweir {
257cdf0e10cSrcweir if ( strcmp(Children()[i]->Name(), C_sServiceDependency) == 0 )
258cdf0e10cSrcweir return Children()[i];
259cdf0e10cSrcweir }
260cdf0e10cSrcweir return 0;
261cdf0e10cSrcweir }
262cdf0e10cSrcweir
263cdf0e10cSrcweir const TextElement &
264cdf0e10cSrcweir ComponentDescription::SupportedServices() const
265cdf0e10cSrcweir {
266cdf0e10cSrcweir return *Children()[C_nSupportedServicesIndex];
267cdf0e10cSrcweir }
268cdf0e10cSrcweir
269cdf0e10cSrcweir const TextElement *
270cdf0e10cSrcweir ComponentDescription::ServiceDependencies() const
271cdf0e10cSrcweir {
272cdf0e10cSrcweir for ( unsigned i = C_nEarliestPossibleServiceDependenciesIndex; i < Children().size(); ++i )
273cdf0e10cSrcweir {
274cdf0e10cSrcweir if ( strcmp(Children()[i]->Name(),C_sServiceDependency) == 0)
275cdf0e10cSrcweir return Children()[i];
276cdf0e10cSrcweir }
277cdf0e10cSrcweir return 0;
278cdf0e10cSrcweir }
279cdf0e10cSrcweir
280cdf0e10cSrcweir #endif
281cdf0e10cSrcweir
282cdf0e10cSrcweir
283