VirtualBox

Changeset 56540 in vbox


Ignore:
Timestamp:
Jun 18, 2015 7:09:18 PM (9 years ago)
Author:
vboxsync
Message:

xidl2docbook.xsl: Use keys for full document element searches - speeds up processing quite a bit.

Location:
trunk/doc/manual
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/manual/Makefile.kmk

    r56539 r56540  
    680680$(VBOX_MANUAL_APIREF_TMP): $(VBOX_PATH_MANUAL_SRC)/xidl2docbook.xsl $(VBOX_DOC_XIDL_SRC_TMP)
    681681        $(call MSG_L1,Generating $@)
    682         $(QUIET)$(VBOX_XSLTPROC) --xinclude --nonet -o $@ $< $(VBOX_DOC_XIDL_SRC_TMP)
     682        $(QUIET)$(VBOX_XSLTPROC) $(VBOX_XSLTPROC_OPTS) --xinclude --nonet -o $@ $< $(VBOX_DOC_XIDL_SRC_TMP)
    683683
    684684$(VBOX_PATH_MANUAL_OUTBASE)/en_US/SDKRef.xml: $(VBOX_PATH_MANUAL_SRC)/en_US/SDKRef.xml $(VBOX_MANUAL_APIREF_TMP)
  • trunk/doc/manual/xidl2docbook.xsl

    r56532 r56540  
    3131  <xsl:strip-space elements="*"/>
    3232
     33 <!-- - - - - - - - - - - - - - - - - - - - - - -
     34  Keys for more efficiently looking up of types.
     35 - - - - - - - - - - - - - - - - - - - - - - -->
     36
     37<xsl:key name="G_keyEnumsByName"        match="//enum[@name]"       use="@name"/>
     38<xsl:key name="G_keyInterfacesByName"   match="//interface[@name]"  use="@name"/>
     39<xsl:key name="G_keyResultsByName"      match="//result[@name]"     use="@name"/>
     40
    3341<!-- - - - - - - - - - - - - - - - - - - - - - -
    3442  global XSLT variables
     
    5361    <xsl:when test="$type">
    5462      <xsl:choose>
    55         <xsl:when test="//interface[@name=$type]">
     63        <xsl:when test="count(key('G_keyInterfacesByName',$type)) > 0">
    5664          <link>
    5765            <xsl:attribute name="linkend">
     
    6169          </link>
    6270        </xsl:when>
    63         <xsl:when test="//enum[@name=$type]">
     71        <xsl:when test="count(key('G_keyEnumsByName',$type)) > 0">
    6472          <link>
    6573            <xsl:attribute name="linkend">
     
    425433    </xsl:variable>
    426434    <xsl:choose>
    427       <xsl:when test="//interface[@name=$tmp] or //enum[@name=$tmp]"><!-- link to interface only -->
     435      <xsl:when test="count(key('G_keyInterfacesByName',$tmp)) > 0 or count(key('G_keyEnumsByName',$tmp)) > 0"><!-- link to interface only -->
    428436        <xsl:attribute name="linkend"><xsl:value-of select="@to" /></xsl:attribute>
    429437        <xsl:value-of select="$tmp" />
    430438      </xsl:when>
    431       <xsl:when test="//enum[@name=$enumNameFromCombinedName]">
     439      <xsl:when test="count(key('G_keyEnumsByName',$enumNameFromCombinedName)) > 0">
    432440        <xsl:attribute name="linkend">
    433441          <xsl:value-of select="concat($enumNameFromCombinedName, '__', $enumValueFromCombinedName)" />
     
    464472          <xsl:choose>
    465473            <!-- if link points to a method, append "()" -->
    466             <xsl:when test="//interface[@name=$if]/method[@name=$member]">
     474            <xsl:when test="key('G_keyInterfacesByName',$if)/method[@name=$member]">
    467475              <xsl:value-of select="'()'" />
    468476            </xsl:when>
    469477            <!-- if link points to a safearray attribute, append "[]" -->
    470             <xsl:when test="//interface[@name=$if]/attribute[@name=$member]/@safearray = 'yes'">
     478            <xsl:when test="key('G_keyInterfacesByName',$if)/attribute[@name=$member]/@safearray = 'yes'">
    471479              <xsl:value-of select="'[]'" />
    472480            </xsl:when>
    473             <xsl:when test="//interface[@name=$if]/attribute[@name=$member]">
    474             </xsl:when>
    475             <xsl:when test="//enum[@name=$if]/const[@name=$member]">
    476             </xsl:when>
    477             <xsl:when test="//result[@name=$tmp]">
    478             </xsl:when>
     481            <xsl:when test="key('G_keyInterfacesByName',$if)/attribute[@name=$member]"/>
     482            <xsl:when test="key('G_keyEnumsByName',$if)/const[@name=$member]"/>
     483            <xsl:when test="count(key('G_keyResultsByName',$tmp)) > 0"/>
    479484            <xsl:otherwise>
    480485              <xsl:message terminate="yes">
Note: See TracChangeset for help on using the changeset viewer.

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