SchemaDefs.xsl revision 677833bc953b6cb418c701facbdcf4aa18d6c44e
1309N/A<?xml version="1.0"?>
2362N/A
1309N/A<!--
1309N/A * A template to generate a header that will contain some important constraints
1309N/A * extracted from the VirtualBox XML Schema (VirtualBox-settings-*.xsd).
1309N/A * The output file name must be SchemaDefs.h.
1309N/A *
1309N/A * This template depends on XML Schema structure (type names and constraints)
1309N/A * and should be reviewed on every Schema change.
1309N/A
1309N/A * Copyright (C) 2006 InnoTek Systemberatung GmbH
1309N/A *
1309N/A * This file is part of VirtualBox Open Source Edition (OSE), as
1309N/A * available from http://www.virtualbox.org. This file is free software;
1309N/A * you can redistribute it and/or modify it under the terms of the GNU
1309N/A * General Public License as published by the Free Software Foundation,
1309N/A * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
1309N/A * distribution. VirtualBox OSE is distributed in the hope that it will
2362N/A * be useful, but WITHOUT ANY WARRANTY of any kind.
2362N/A *
2362N/A * If you received this file as part of a commercial VirtualBox
1309N/A * distribution, then only the terms of your commercial VirtualBox
1309N/A * license agreement apply instead of the previous paragraph.
1309N/A-->
1309N/A
1309N/A<xsl:stylesheet version="1.0"
1309N/A xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
1309N/A xmlns:xsd="http://www.w3.org/2001/XMLSchema"
1309N/A>
1309N/A<xsl:output method="text"/>
1309N/A
1309N/A<xsl:strip-space elements="*"/>
1309N/A
1309N/A<!--
1309N/A// helpers
1309N/A////////////////////////////////////////////////////////////////////////////////
1309N/A-->
1309N/A
1309N/A<!--
1309N/A * Extract the specified value and assign it to an enum member with the given
1309N/A * name
1309N/A-->
1309N/A<xsl:template name="defineEnumMember">
1309N/A <xsl:param name="member"/>
1309N/A <xsl:param name="select"/>
1309N/A <xsl:if test="$select">
1309N/A <xsl:value-of select="concat($member, ' = ', $select, ',&#x0A;')"/>
1309N/A </xsl:if>
1309N/A</xsl:template>
1309N/A
1309N/A<!--
1309N/A// templates
1309N/A////////////////////////////////////////////////////////////////////////////////
1309N/A-->
1309N/A
1309N/A<!--
1309N/A * shut down all implicit templates
1309N/A-->
1309N/A<xsl:template match="*"/>
<!--
* header
-->
<xsl:template match="/">
<xsl:text>
/*
* DO NOT EDIT.
*
* This header is automatically generated from the VirtualBox XML Schema
* and contains selected schema constraints defined in C.
*/
#ifndef ____H_SCHEMADEFS
#define ____H_SCHEMADEFS
struct SchemaDefs
{
enum
{
</xsl:text>
<xsl:apply-templates select="xsd:schema"/>
<xsl:text> };
};
#endif // ____H_SCHEMADEFS
</xsl:text>
</xsl:template>
<!--
* extract schema definitions
-->
<xsl:template match="xsd:schema">
<!-- process include statements -->
<xsl:for-each select="xsd:include">
<xsl:apply-templates select="document(@schemaLocation)/xsd:schema"/>
</xsl:for-each>
<xsl:call-template name="defineEnumMember">
<xsl:with-param name="member" select="' MinGuestRAM'"/>
<xsl:with-param name="select" select="
xsd:complexType[@name='TMemory']/xsd:attribute[@name='RAMSize']//xsd:minInclusive/@value
"/>
</xsl:call-template>
<xsl:call-template name="defineEnumMember">
<xsl:with-param name="member" select="' MaxGuestRAM'"/>
<xsl:with-param name="select" select="
xsd:complexType[@name='TMemory']/xsd:attribute[@name='RAMSize']//xsd:maxInclusive/@value
"/>
</xsl:call-template>
<xsl:call-template name="defineEnumMember">
<xsl:with-param name="member" select="' MinGuestVRAM'"/>
<xsl:with-param name="select" select="
xsd:complexType[@name='TDisplay']/xsd:attribute[@name='VRAMSize']//xsd:minInclusive/@value
"/>
</xsl:call-template>
<xsl:call-template name="defineEnumMember">
<xsl:with-param name="member" select="' MaxGuestVRAM'"/>
<xsl:with-param name="select" select="
xsd:complexType[@name='TDisplay']/xsd:attribute[@name='VRAMSize']//xsd:maxInclusive/@value
"/>
</xsl:call-template>
<xsl:call-template name="defineEnumMember">
<xsl:with-param name="member" select="' NetworkAdapterCount'"/>
<xsl:with-param name="select" select="
xsd:complexType[@name='TAdapter']/xsd:attribute[@name='slot']//xsd:maxExclusive/@value
"/>
</xsl:call-template>
<xsl:call-template name="defineEnumMember">
<xsl:with-param name="member" select="' MaxBootPosition'"/>
<xsl:with-param name="select" select="
xsd:complexType[@name='TBoot']//xsd:element[@name='Order']//xsd:attribute[@name='position']//xsd:maxInclusive/@value
"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>