api: generate enums instead of defines in common header

This commit is contained in:
Aleksander Morgado
2011-08-17 16:21:21 +02:00
parent 15f77d131a
commit e48648e406
+104 -46
View File
@@ -23,13 +23,55 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
don't work ideally in the presence of two things that want to use the
absence of a prefix, sadly. -->
<xsl:strip-space elements="node interface property tp:errors tp:mapping
tp:member"/>
<xsl:strip-space elements="node interface property tp:errors tp:mapping tp:member"/>
<xsl:template match="*" mode="identity">
<xsl:copy>
<xsl:apply-templates mode="identity"/>
</xsl:copy>
</xsl:template>
<xsl:template name="CamelCase">
<xsl:param name="text" />
<xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:if test="$text">
<!-- get word to title-case -->
<xsl:variable name="word">
<xsl:choose>
<xsl:when test="contains($text, '_')">
<xsl:value-of select="substring-before($text, '_')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- uppercase first character in word -->
<xsl:value-of select="translate(substring($word,1,1), $lowercase, $uppercase)"/>
<!-- lowercase all remaining characters in word -->
<xsl:value-of select="translate(substring($word,2), $uppercase, $lowercase)"/>
<!-- if any next chunk, recall template -->
<xsl:call-template name="CamelCase">
<xsl:with-param name="text" select="substring-after(substring($text,2), '_')"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!--
<xsl:variable name="thisletter" select="substring($text,1,1)"/>
<xsl:choose>
<xsl:when test="$lastletter=' ' or $lastletter='_'">
<xsl:value-of select="translate($thisletter,'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="translate($thisletter,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="TitleCase">
<xsl:with-param name="text" select="substring($text,2)"/>
<xsl:with-param name="lastletter" select="$thisletter"/>
</xsl:call-template>
</xsl:if>
</xsl:template>-->
<xsl:template match="tp:docstring">
</xsl:template>
<xsl:template match="tp:realdocstring">
@@ -68,49 +110,55 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
<xsl:template match="tp:flags">
/* <xsl:value-of select="@name"/> flag values */
<xsl:apply-templates select="tp:docstring" />
<xsl:variable name="value-prefix">
<xsl:choose>
<xsl:when test="@value-prefix">
<xsl:value-of select="@value-prefix"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="tp:flag">
<xsl:choose>
<xsl:when test="tp:docstring">
<xsl:apply-templates select="tp:docstring"/>
</xsl:when>
</xsl:choose>
#define <xsl:value-of select="concat($value-prefix, '_', @suffix)"/><xsl:text> </xsl:text><xsl:value-of select="@value"/>
</xsl:for-each><xsl:text>
<xsl:apply-templates select="tp:docstring" />
<xsl:variable name="value-prefix">
<xsl:choose>
<xsl:when test="@value-prefix">
<xsl:value-of select="@value-prefix"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="enum-name">
<xsl:call-template name="CamelCase">
<xsl:with-param name="text" select="substring-after(@name,'MM_')"/>
</xsl:call-template>
</xsl:variable>
typedef enum {
<xsl:for-each select="tp:flag">
<xsl:text> </xsl:text><xsl:value-of select="concat($value-prefix, '_', @suffix)"/><xsl:text> = </xsl:text><xsl:value-of select="@value"/><xsl:text>,
</xsl:text>
</xsl:for-each>
<xsl:text>} </xsl:text><xsl:value-of select="concat('MM',$enum-name)"/><xsl:text>;
</xsl:text>
</xsl:template>
<xsl:template match="tp:enum">
/* <xsl:value-of select="@name"/> enum values */
<xsl:apply-templates select="tp:docstring" />
<xsl:variable name="value-prefix">
<xsl:choose>
<xsl:when test="@value-prefix">
<xsl:value-of select="@value-prefix"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="tp:enumvalue">
<xsl:choose>
<xsl:when test="tp:docstring">
<xsl:apply-templates select="tp:docstring" />
</xsl:when>
</xsl:choose>
#define <xsl:value-of select="concat($value-prefix, '_', @suffix, ' ')"/><xsl:value-of select="@value"/>
</xsl:for-each><xsl:text>
<xsl:apply-templates select="tp:docstring" />
<xsl:variable name="value-prefix">
<xsl:choose>
<xsl:when test="@value-prefix">
<xsl:value-of select="@value-prefix"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="enum-name">
<xsl:call-template name="CamelCase">
<xsl:with-param name="text" select="substring-after(@name,'MM_')"/>
</xsl:call-template>
</xsl:variable>
typedef enum {
<xsl:for-each select="tp:enumvalue">
<xsl:text> </xsl:text><xsl:value-of select="concat($value-prefix, '_', @suffix)"/><xsl:text> = </xsl:text><xsl:value-of select="@value"/><xsl:text>,
</xsl:text>
</xsl:for-each>
<xsl:text>} </xsl:text><xsl:value-of select="concat('MM',$enum-name)"/><xsl:text>;
</xsl:text>
</xsl:template>
@@ -204,8 +252,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef _MODEM_MANAGER_H_
#define _MODEM_MANAGER_H_
#define MM_MODEMMANAGER_PATH "/org/freedesktop/ModemManager"
#define MM_MODEMMANAGER_SERVICE "org.freedesktop.ModemManager"
#define MM_DBUS_PATH "/org/freedesktop/ModemManager"
#define MM_DBUS_SERVICE "org.freedesktop.ModemManager"
/**************
* Interfaces *
@@ -220,13 +268,22 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
'ABCDEFGHIJKLMNOPQRSTUVWXYZ_')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="translate(substring-after(@name, 'org.freedesktop.'),
'abcdefghijklmnopqrstuvwxyz. ',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ_')"/>
<xsl:text></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
#define <xsl:value-of select="concat('MM_', $varname, '_INTERFACE ')"/> "<xsl:value-of select="@name"/>"</xsl:for-each>
<xsl:variable name="prefix">
<xsl:choose>
<xsl:when test="string-length($varname) > 0">
<xsl:text>_</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="starts-with(@name, 'org.freedesktop.ModemManager')">
#define <xsl:value-of select="concat('MM_DBUS_INTERFACE', $prefix, $varname)"/> "<xsl:value-of select="@name"/>"</xsl:if></xsl:for-each>
/***********************
* Methods/Enums/Flags *
@@ -248,6 +305,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
<xsl:apply-templates select="tp:enum"/>
<xsl:apply-templates select="tp:flags"/>
</xsl:for-each>
/**********
* Errors *
**********/