xref: /aoo41x/main/xml2cmp/source/xcd/xmltree.cxx (revision ab595ff6)
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