
At Mon, 13 May 2013 21:17:35 +0800, Daniel Veillard wrote:
On Mon, May 13, 2013 at 02:30:41PM +0200, Claudio Bley wrote:
Hi.
Sometimes, it's a bit hard to determine when exactly a function, flag or macro appeared in libvirt, ie. whether it will be supported on my target machine having a specific version of libvirt or not.
So, I have created an enriched version of the API docs, using a XSL stylesheet enumerating the libvirt?-api.xml files of all libvirt releases.
For an example, you can have a look here:
http://avdv.github.io/libvirt/html/libvirt-libvirt.html#virVcpuState
Hovering over an enum value displays version information in a tooltip.
What do you think? Should this information be included by default in the API docs?
Sounds a rather good idea to me, adding an extra attribute for each entry should not break anything. But I don't understand why you would need a libvirt-api-0.xml and libvirt-api-1.xml.
Since apibuild.py always generates a fresh libvirt-api file, version information for all symbols will be lost. So, I need to keep the info somewhere else; merging the information for the old and newly added symbols into the final libvirt-api.xml. At least, that's how it'd work using the stylesheet I put together for that matter. For the sake of completeness, here's the XSL stylesheet: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" encoding="ISO-8859-1" cdata-section-elements="info" /> <!-- the current version of the libvirt API --> <xsl:param name="version"/> <!-- build up a lookup table for existing symbols from an older --> <!-- libvirt-api.xml file. Any newly introduced symbols are then --> <!-- tagged with a since="$version" attribute. --> <xsl:variable name="symbols" select="document('libvirt-api.0.xml')/api/symbols/*"/> <xsl:template match="/api/symbols/node()"> <xsl:variable name="name" select="string(@name)"/> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="since"> <xsl:choose> <xsl:when test="not($symbols[@name = $name])"> <xsl:value-of select="$version"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$symbols[@name = $name]/@since"/> </xsl:otherwise> </xsl:choose> </xsl:attribute> <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:template> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet> Alternatively, we could just as well do this directly in apibuild.py, but this requires version information in, say, apiversion.py which I could generate using the enriched libvirt-api.xml. Claudio -- AV-Test GmbH, Henricistraße 20, 04155 Leipzig, Germany Phone: +49 341 265 310 19 Web:<http://www.av-test.org> Eingetragen am / Registered at: Amtsgericht Stendal (HRB 114076) Geschaeftsfuehrer (CEO): Andreas Marx, Guido Habicht, Maik Morgenstern