mumain/ClientLibrary/GenerateEnums.xslt

64 lines
2.4 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
xmlns:pd="http://www.munique.net/OpenMU/PacketDefinitions"
>
<xsl:param name="resultFileName" />
<xsl:param name="subNamespace" />
<xsl:output method="text" indent="yes" />
<xsl:include href="Common.xslt" />
<xsl:template match="pd:PacketDefinitions">
<xsl:text>// &lt;copyright file="PacketBindings.h" company="MUnique"&gt;
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
// &lt;/copyright&gt;
//------------------------------------------------------------------------------
// &lt;auto-generated&gt;
// This source code was auto-generated by an XSL transformation.
// Do not change this file. Instead, change the XML data which contains
// the packet definitions and re-run the transformation (publish/rebuild the
// managed library project).
// &lt;/auto-generated&gt;
//------------------------------------------------------------------------------
#pragma once
</xsl:text>
<xsl:apply-templates select="pd:Enums/pd:Enum" mode="cppenum"/>
<xsl:apply-templates select="pd:Packets/pd:Packet/pd:Enums/pd:Enum" mode="cppenum"/>
</xsl:template>
<xsl:template match="pd:Enum" mode="cppenum">
<xsl:text>enum class </xsl:text>
<xsl:apply-templates select="pd:Name"/>
<xsl:text> : uint32_t</xsl:text>
<xsl:value-of select="$newline"/>
<xsl:text>{</xsl:text>
<xsl:value-of select="$newline"/>
<xsl:apply-templates select="pd:Values/pd:EnumValue" mode="cppenumvalue"/>
<xsl:text>};</xsl:text>
<xsl:value-of select="$newline"/>
<xsl:value-of select="$newline"/>
</xsl:template>
<xsl:template match="pd:EnumValue" mode="cppenumvalue">
<xsl:text> </xsl:text>
<xsl:apply-templates select="pd:Name"/>
<xsl:text> = </xsl:text>
<xsl:value-of select="pd:Value"/>
<xsl:text>,</xsl:text>
<xsl:if test="pd:Description">
<xsl:text> ///&lt; </xsl:text>
<xsl:value-of select="pd:Description"/>
</xsl:if>
<xsl:value-of select="$newline"/>
</xsl:template>
<xsl:template match="text()"></xsl:template>
<xsl:template match="text()" mode="cppenum"></xsl:template>
<xsl:template match="text()" mode="cppenumvalue"></xsl:template>
</xsl:stylesheet>