VirtualBox

source: vbox/trunk/src/VBox/Main/xml/SchemaDefs.xsl@ 17609

Last change on this file since 17609 was 14437, checked in by vboxsync, 16 years ago

FE/Qt4: 2883: Structure OS list. Feature request implemented in base designed variant.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.3 KB
Line 
1<?xml version="1.0"?>
2
3<!--
4 * A template to generate a header that will contain some important constraints
5 * extracted from the VirtualBox XML Schema (VirtualBox-settings-*.xsd).
6 * The output file name must be SchemaDefs.h.
7 *
8 * This template depends on XML Schema structure (type names and constraints)
9 * and should be reviewed on every Schema change.
10
11 Copyright (C) 2006-2007 Sun Microsystems, Inc.
12
13 This file is part of VirtualBox Open Source Edition (OSE), as
14 available from http://www.virtualbox.org. This file is free software;
15 you can redistribute it and/or modify it under the terms of the GNU
16 General Public License (GPL) as published by the Free Software
17 Foundation, in version 2 as it comes in the "COPYING" file of the
18 VirtualBox OSE distribution. VirtualBox OSE is distributed in the
19 hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
20
21 Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
22 Clara, CA 95054 USA or visit http://www.sun.com if you need
23 additional information or have any questions.
24-->
25
26<xsl:stylesheet version="1.0"
27 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
28 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
29>
30<xsl:output method="text"/>
31
32<xsl:strip-space elements="*"/>
33
34<xsl:param name="mode" expr=''/>
35
36<!--
37// helpers
38////////////////////////////////////////////////////////////////////////////////
39-->
40
41<!--
42 * Extract the specified value and assign it to an enum member with the given
43 * name
44-->
45<xsl:template name="defineEnumMember">
46 <xsl:param name="member"/>
47 <xsl:param name="select"/>
48 <xsl:if test="$select">
49 <xsl:value-of select="concat($member, ' = ', $select, ',&#x0A;')"/>
50 </xsl:if>
51</xsl:template>
52
53<!--
54// templates
55////////////////////////////////////////////////////////////////////////////////
56-->
57
58<!--
59 * shut down all implicit templates
60-->
61<xsl:template match="*"/>
62<xsl:template match="*" mode="declare"/>
63<xsl:template match="*" mode="declare.enum"/>
64<xsl:template match="*" mode="define"/>
65
66<xsl:template match="/">
67 <xsl:choose>
68 <xsl:when test="$mode='declare'">
69 <xsl:apply-templates select="/" mode="declare"/>
70 </xsl:when>
71 <xsl:when test="$mode='define'">
72 <xsl:apply-templates select="/" mode="define"/>
73 </xsl:when>
74 <xsl:otherwise>
75 <xsl:message terminate="yes">
76Value '<xsl:value-of select="$mode"/>' of parameter 'mode' is invalid!
77 </xsl:message>
78 </xsl:otherwise>
79 </xsl:choose>
80</xsl:template>
81
82<!--
83 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
84 * declare mode (C++ header file)
85 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
86-->
87
88<xsl:template match="/" mode="declare">
89<xsl:text>
90/*
91 * DO NOT EDIT.
92 *
93 * This header is automatically generated from the VirtualBox XML Settings
94 * Schema and contains selected schema constraints declared in C++.
95 */
96
97#ifndef ____H_SCHEMADEFS
98#define ____H_SCHEMADEFS
99
100namespace SchemaDefs
101{
102 enum
103 {
104</xsl:text>
105
106 <xsl:apply-templates select="xsd:schema" mode="declare.enum"/>
107
108<xsl:text> };
109</xsl:text>
110
111<xsl:apply-templates select="xsd:schema" mode="declare"/>
112
113<xsl:text>}
114
115#endif // ____H_SCHEMADEFS
116</xsl:text>
117</xsl:template>
118
119<!--
120 * enumeration values
121-->
122<xsl:template match="xsd:schema" mode="declare.enum">
123
124 <!-- process include statements -->
125 <xsl:for-each select="xsd:include">
126 <!-- skip VirtualBox-settings-root.xsd inclusion as it is computed at runtime -->
127 <xsl:if test="not(@schemaLocation='VirtualBox-settings-root.xsd')">
128 <xsl:apply-templates select="document(@schemaLocation)/xsd:schema" mode="declare.enum"/>
129 </xsl:if>
130 </xsl:for-each>
131
132 <xsl:call-template name="defineEnumMember">
133 <xsl:with-param name="member" select="' MinGuestRAM'"/>
134 <xsl:with-param name="select" select="
135 xsd:complexType[@name='TMemory']/xsd:attribute[@name='RAMSize']//xsd:minInclusive/@value
136 "/>
137 </xsl:call-template>
138 <xsl:call-template name="defineEnumMember">
139 <xsl:with-param name="member" select="' MaxGuestRAM'"/>
140 <xsl:with-param name="select" select="
141 xsd:complexType[@name='TMemory']/xsd:attribute[@name='RAMSize']//xsd:maxInclusive/@value
142 "/>
143 </xsl:call-template>
144
145 <xsl:call-template name="defineEnumMember">
146 <xsl:with-param name="member" select="' MinGuestVRAM'"/>
147 <xsl:with-param name="select" select="
148 xsd:complexType[@name='TDisplay']/xsd:attribute[@name='VRAMSize']//xsd:minInclusive/@value
149 "/>
150 </xsl:call-template>
151 <xsl:call-template name="defineEnumMember">
152 <xsl:with-param name="member" select="' MaxGuestVRAM'"/>
153 <xsl:with-param name="select" select="
154 xsd:complexType[@name='TDisplay']/xsd:attribute[@name='VRAMSize']//xsd:maxInclusive/@value
155 "/>
156 </xsl:call-template>
157
158 <xsl:call-template name="defineEnumMember">
159 <xsl:with-param name="member" select="' MinCPUCount'"/>
160 <xsl:with-param name="select" select="
161 xsd:simpleType[@name='TCPUCount']//xsd:minInclusive/@value
162 "/>
163 </xsl:call-template>
164 <xsl:call-template name="defineEnumMember">
165 <xsl:with-param name="member" select="' MaxCPUCount'"/>
166 <xsl:with-param name="select" select="
167 xsd:simpleType[@name='TCPUCount']//xsd:maxInclusive/@value
168 "/>
169 </xsl:call-template>
170
171 <xsl:call-template name="defineEnumMember">
172 <xsl:with-param name="member" select="' MaxGuestMonitors'"/>
173 <xsl:with-param name="select" select="
174 xsd:complexType[@name='TDisplay']/xsd:attribute[@name='monitorCount']//xsd:maxInclusive/@value
175 "/>
176 </xsl:call-template>
177 <xsl:call-template name="defineEnumMember">
178 <xsl:with-param name="member" select="' NetworkAdapterCount'"/>
179 <xsl:with-param name="select" select="
180 xsd:complexType[@name='TNetworkAdapter']/xsd:attribute[@name='slot']//xsd:maxExclusive/@value
181 "/>
182 </xsl:call-template>
183
184 <xsl:call-template name="defineEnumMember">
185 <xsl:with-param name="member" select="' SerialPortCount'"/>
186 <xsl:with-param name="select" select="
187 xsd:complexType[@name='TUARTPort']/xsd:attribute[@name='slot']//xsd:maxExclusive/@value
188 "/>
189 </xsl:call-template>
190
191 <xsl:call-template name="defineEnumMember">
192 <xsl:with-param name="member" select="' ParallelPortCount'"/>
193 <xsl:with-param name="select" select="
194 xsd:complexType[@name='TLPTPort']/xsd:attribute[@name='slot']//xsd:maxExclusive/@value
195 "/>
196 </xsl:call-template>
197
198 <xsl:call-template name="defineEnumMember">
199 <xsl:with-param name="member" select="' MaxBootPosition'"/>
200 <xsl:with-param name="select" select="
201 xsd:complexType[@name='TBoot']//xsd:element[@name='Order']//xsd:attribute[@name='position']//xsd:maxInclusive/@value
202 "/>
203 </xsl:call-template>
204
205</xsl:template>
206
207<!--
208 * aliases (defines) for individual OSTypeIds array elements
209-->
210<xsl:template match="xsd:schema" mode="declare">
211
212 <xsl:text>&#x0A; extern const char *OSTypeIds[];&#x0A;</xsl:text>
213
214 <xsl:text>&#x0A; enum { OSTypeId_COUNT = </xsl:text>
215 <xsl:value-of select="count (
216 xsd:simpleType[@name='TGuestOSType']/xsd:restriction[@base='xsd:string']/xsd:enumeration |
217 document(xsd:include[not(@schemaLocation='VirtualBox-settings-root.xsd')]/@schemaLocation)/xsd:schema/xsd:simpleType[@name='TGuestOSType']/xsd:restriction[@base='xsd:string']/xsd:enumeration
218 )"/>
219 <xsl:text> };&#x0A;&#x0A;</xsl:text>
220
221 <xsl:for-each select="
222 xsd:simpleType[@name='TGuestOSType']/xsd:restriction[@base='xsd:string']/xsd:enumeration |
223 document(xsd:include[not(@schemaLocation='VirtualBox-settings-root.xsd')]/@schemaLocation)/xsd:schema/xsd:simpleType[@name='TGuestOSType']/xsd:restriction[@base='xsd:string']/xsd:enumeration
224 ">
225 <xsl:text> #define SchemaDefs_OSTypeId_</xsl:text>
226 <xsl:value-of select="@value"/>
227 <xsl:text> SchemaDefs::OSTypeIds [</xsl:text>
228 <xsl:value-of select="position()-1"/>
229 <xsl:text>]&#x0A;</xsl:text>
230 </xsl:for-each>
231
232</xsl:template>
233
234<!--
235 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
236 * define mode (C++ source file)
237 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
238-->
239
240<xsl:template match="/" mode="define">
241<xsl:text>
242/*
243 * DO NOT EDIT.
244 *
245 * This source is automatically generated from the VirtualBox XML Settings
246 * Schema and contains selected schema constraints defined in C++.
247 */
248
249#include "SchemaDefs.h"
250
251namespace SchemaDefs
252{
253</xsl:text>
254
255<xsl:apply-templates select="xsd:schema" mode="define"/>
256
257<xsl:text>}
258</xsl:text>
259</xsl:template>
260
261<!--
262 * array of OSTypeIds
263-->
264<xsl:template match="xsd:schema" mode="define">
265 <xsl:text> const char *OSTypeIds[] =
266 {
267</xsl:text>
268 <xsl:for-each select="
269 xsd:simpleType[@name='TGuestOSType']/xsd:restriction[@base='xsd:string']/xsd:enumeration |
270 document(xsd:include[not(@schemaLocation='VirtualBox-settings-root.xsd')]/@schemaLocation)/xsd:schema/xsd:simpleType[@name='TGuestOSType']/xsd:restriction[@base='xsd:string']/xsd:enumeration
271 ">
272 <xsl:text> "</xsl:text>
273 <xsl:value-of select="@value"/>
274 <xsl:text>",
275</xsl:text>
276 </xsl:for-each>
277 <xsl:text> };
278</xsl:text>
279</xsl:template>
280
281<!--
282 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
283 * END
284 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
285-->
286
287</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette