VirtualBox

Changeset 13580 in vbox for trunk/src/VBox/Main/idl/midl.xsl


Ignore:
Timestamp:
Oct 27, 2008 2:04:18 PM (16 years ago)
Author:
vboxsync
Message:

Ported s2 branch (r37120:38456).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/idl/midl.xsl

    r11982 r13580  
    11<?xml version="1.0"?>
     2<!-- $Id$ -->
    23
    34<!--
     
    56 *  from the generic interface definition expressed in XML.
    67
    7      Copyright (C) 2006-2007 Sun Microsystems, Inc.
     8     Copyright (C) 2006-2008 Sun Microsystems, Inc.
    89
    910     This file is part of VirtualBox Open Source Edition (OSE), as
     
    104105  <xsl:if test="@target='midl'">
    105106    <xsl:apply-templates mode="forward"/>
     107  </xsl:if>
     108</xsl:template>
     109<xsl:template match="if" mode="forwarder">
     110  <xsl:param name="nameOnly"/>
     111  <xsl:if test="@target='midl'">
     112    <xsl:apply-templates mode="forwarder">
     113      <xsl:with-param name="nameOnly" select="$nameOnly"/>
     114    </xsl:apply-templates>
    106115  </xsl:if>
    107116</xsl:template>
     
    195204  <xsl:value-of select="@name"/>
    196205  <xsl:text> */&#x0A;&#x0A;</xsl:text>
     206  <!-- Interface implementation forwarder macro -->
     207  <xsl:text>/* Interface implementation forwarder macro */&#x0A;</xsl:text>
     208  <!-- 1) indivudual methods -->
     209  <xsl:apply-templates select="attribute" mode="forwarder"/>
     210  <xsl:apply-templates select="method" mode="forwarder"/>
     211  <xsl:apply-templates select="if" mode="forwarder"/>
     212  <!-- 2) COM_FORWARD_Interface_TO(smth) -->
     213  <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     214  <xsl:value-of select="@name"/>
     215  <xsl:text>_TO(smth) </xsl:text>
     216  <xsl:apply-templates select="attribute" mode="forwarder">
     217    <xsl:with-param name="nameOnly" select="'yes'"/>
     218  </xsl:apply-templates>
     219  <xsl:apply-templates select="method" mode="forwarder">
     220    <xsl:with-param name="nameOnly" select="'yes'"/>
     221  </xsl:apply-templates>
     222  <xsl:apply-templates select="if" mode="forwarder">
     223    <xsl:with-param name="nameOnly" select="'yes'"/>
     224  </xsl:apply-templates>
     225  <xsl:text>")&#x0A;</xsl:text>
     226  <!-- 3) COM_FORWARD_Interface_TO_OBJ(obj) -->
     227  <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     228  <xsl:value-of select="@name"/>
     229  <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text>
     230  <xsl:value-of select="@name"/>
     231  <xsl:text>_TO ((obj)->)")&#x0A;</xsl:text>
     232  <!-- 4) COM_FORWARD_Interface_TO_BASE(base) -->
     233  <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     234  <xsl:value-of select="@name"/>
     235  <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text>
     236  <xsl:value-of select="@name"/>
     237  <xsl:text>_TO (base::)")&#x0A;</xsl:text>
     238  <!-- end -->
     239  <xsl:text>&#x0A;</xsl:text>
    197240</xsl:template>
    198241
     
    256299</xsl:template>
    257300
     301<xsl:template match="interface//attribute | collection//attribute" mode="forwarder">
     302
     303  <!-- if nameOnly='yes' then only the macro name is composed
     304       followed by a space -->
     305  <xsl:param name="nameOnly"/>
     306
     307  <xsl:variable name="parent" select="ancestor::interface | ancestor::collection"/>
     308
     309  <xsl:apply-templates select="@if" mode="begin"/>
     310
     311  <xsl:choose>
     312    <xsl:when test="$nameOnly='yes'">
     313      <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO(smth) -->
     314      <xsl:text>COM_FORWARD_</xsl:text>
     315      <xsl:value-of select="$parent/@name"/>
     316      <xsl:text>_GETTER_</xsl:text>
     317      <xsl:call-template name="capitalize">
     318        <xsl:with-param name="str" select="@name"/>
     319      </xsl:call-template>
     320      <xsl:text>_TO (smth) </xsl:text>
     321      <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO(smth) -->
     322      <xsl:if test="not(@readonly='yes')">
     323        <xsl:text>COM_FORWARD_</xsl:text>
     324        <xsl:value-of select="$parent/@name"/>
     325        <xsl:text>_SETTER_</xsl:text>
     326        <xsl:call-template name="capitalize">
     327          <xsl:with-param name="str" select="@name"/>
     328        </xsl:call-template>
     329        <xsl:text>_TO (smth) </xsl:text>
     330      </xsl:if>
     331    </xsl:when>
     332    <xsl:otherwise>
     333      <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO(smth) -->
     334      <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     335      <xsl:value-of select="$parent/@name"/>
     336      <xsl:text>_GETTER_</xsl:text>
     337      <xsl:call-template name="capitalize">
     338        <xsl:with-param name="str" select="@name"/>
     339      </xsl:call-template>
     340      <xsl:text>_TO(smth) HRESULT STDMETHODCALLTYPE get_</xsl:text>
     341      <xsl:call-template name="capitalize">
     342        <xsl:with-param name="str" select="@name"/>
     343      </xsl:call-template>
     344      <xsl:text> (</xsl:text>
     345      <xsl:choose>
     346        <xsl:when test="@safearray='yes'">
     347          <xsl:text>SAFEARRAY *</xsl:text>
     348        </xsl:when>
     349        <xsl:otherwise>
     350          <xsl:apply-templates select="@type"/>
     351        </xsl:otherwise>
     352      </xsl:choose>
     353      <xsl:text> * a</xsl:text>
     354      <xsl:call-template name="capitalize">
     355        <xsl:with-param name="str" select="@name"/>
     356      </xsl:call-template>
     357      <xsl:text>) { return smth get_</xsl:text>
     358      <xsl:call-template name="capitalize">
     359        <xsl:with-param name="str" select="@name"/>
     360      </xsl:call-template>
     361      <xsl:text> (a</xsl:text>
     362      <xsl:call-template name="capitalize">
     363        <xsl:with-param name="str" select="@name"/>
     364      </xsl:call-template>
     365      <xsl:text>); }")&#x0A;</xsl:text>
     366      <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO_OBJ(obj) -->
     367      <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     368      <xsl:value-of select="$parent/@name"/>
     369      <xsl:text>_GETTER_</xsl:text>
     370      <xsl:call-template name="capitalize">
     371        <xsl:with-param name="str" select="@name"/>
     372      </xsl:call-template>
     373      <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text>
     374      <xsl:value-of select="$parent/@name"/>
     375      <xsl:text>_GETTER_</xsl:text>
     376      <xsl:call-template name="capitalize">
     377        <xsl:with-param name="str" select="@name"/>
     378      </xsl:call-template>
     379      <xsl:text>_TO ((obj)->)")&#x0A;</xsl:text>
     380      <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO_BASE(base) -->
     381      <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     382      <xsl:value-of select="$parent/@name"/>
     383      <xsl:text>_GETTER_</xsl:text>
     384      <xsl:call-template name="capitalize">
     385        <xsl:with-param name="str" select="@name"/>
     386      </xsl:call-template>
     387      <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text>
     388      <xsl:value-of select="$parent/@name"/>
     389      <xsl:text>_GETTER_</xsl:text>
     390      <xsl:call-template name="capitalize">
     391        <xsl:with-param name="str" select="@name"/>
     392      </xsl:call-template>
     393      <xsl:text>_TO (base::)")&#x0A;</xsl:text>
     394      <!-- -->
     395      <xsl:if test="not(@readonly='yes')">
     396        <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO(smth) -->
     397        <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     398        <xsl:value-of select="$parent/@name"/>
     399        <xsl:text>_SETTER_</xsl:text>
     400        <xsl:call-template name="capitalize">
     401          <xsl:with-param name="str" select="@name"/>
     402        </xsl:call-template>
     403        <xsl:text>_TO(smth) HRESULT STDMETHODCALLTYPE put_</xsl:text>
     404        <xsl:call-template name="capitalize">
     405          <xsl:with-param name="str" select="@name"/>
     406        </xsl:call-template>
     407        <xsl:text> (</xsl:text>
     408        <xsl:choose>
     409          <xsl:when test="@safearray='yes'">
     410            <xsl:text>SAFEARRAY *</xsl:text>
     411          </xsl:when>
     412          <xsl:otherwise>
     413            <xsl:apply-templates select="@type"/>
     414          </xsl:otherwise>
     415        </xsl:choose>
     416        <xsl:text> a</xsl:text>
     417        <xsl:call-template name="capitalize">
     418          <xsl:with-param name="str" select="@name"/>
     419        </xsl:call-template>
     420        <xsl:text>) { return smth put_</xsl:text>
     421        <xsl:call-template name="capitalize">
     422          <xsl:with-param name="str" select="@name"/>
     423        </xsl:call-template>
     424        <xsl:text> (a</xsl:text>
     425        <xsl:call-template name="capitalize">
     426          <xsl:with-param name="str" select="@name"/>
     427        </xsl:call-template>
     428        <xsl:text>); }")&#x0A;</xsl:text>
     429        <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO_OBJ(obj) -->
     430        <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     431        <xsl:value-of select="$parent/@name"/>
     432        <xsl:text>_SETTER_</xsl:text>
     433        <xsl:call-template name="capitalize">
     434          <xsl:with-param name="str" select="@name"/>
     435        </xsl:call-template>
     436        <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text>
     437        <xsl:value-of select="$parent/@name"/>
     438        <xsl:text>_SETTER_</xsl:text>
     439        <xsl:call-template name="capitalize">
     440          <xsl:with-param name="str" select="@name"/>
     441        </xsl:call-template>
     442        <xsl:text>_TO ((obj)->)")&#x0A;</xsl:text>
     443        <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO_BASE(base) -->
     444        <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     445        <xsl:value-of select="$parent/@name"/>
     446        <xsl:text>_SETTER_</xsl:text>
     447        <xsl:call-template name="capitalize">
     448          <xsl:with-param name="str" select="@name"/>
     449        </xsl:call-template>
     450        <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text>
     451        <xsl:value-of select="$parent/@name"/>
     452        <xsl:text>_SETTER_</xsl:text>
     453        <xsl:call-template name="capitalize">
     454          <xsl:with-param name="str" select="@name"/>
     455        </xsl:call-template>
     456        <xsl:text>_TO (base::)")&#x0A;</xsl:text>
     457      </xsl:if>
     458    </xsl:otherwise>
     459  </xsl:choose>
     460
     461  <xsl:apply-templates select="@if" mode="end"/>
     462
     463</xsl:template>
     464
    258465
    259466<!--
     
    266473    <xsl:with-param name="str" select="@name"/>
    267474  </xsl:call-template>
    268   <xsl:if test="param">
    269     <xsl:text> (&#x0A;</xsl:text>
    270     <xsl:for-each select="param [position() != last()]">
     475  <xsl:choose>
     476    <xsl:when test="param">
     477      <xsl:text> (&#x0A;</xsl:text>
     478      <xsl:for-each select="param [position() != last()]">
     479        <xsl:text>        </xsl:text>
     480        <xsl:apply-templates select="."/>
     481        <xsl:text>,&#x0A;</xsl:text>
     482      </xsl:for-each>
    271483      <xsl:text>        </xsl:text>
    272       <xsl:apply-templates select="."/>
    273       <xsl:text>,&#x0A;</xsl:text>
    274     </xsl:for-each>
    275     <xsl:text>        </xsl:text>
    276     <xsl:apply-templates select="param [last()]"/>
    277     <xsl:text>&#x0A;    );&#x0A;</xsl:text>
    278   </xsl:if>
    279   <xsl:if test="not(param)">
    280     <xsl:text>();&#x0A;</xsl:text>
    281   </xsl:if>
     484      <xsl:apply-templates select="param [last()]"/>
     485      <xsl:text>&#x0A;    );&#x0A;</xsl:text>
     486    </xsl:when>
     487    <xsl:otherwise test="not(param)">
     488      <xsl:text>();&#x0A;</xsl:text>
     489    </xsl:otherwise>
     490  </xsl:choose>
    282491  <xsl:apply-templates select="@if" mode="end"/>
    283492  <xsl:text>&#x0A;</xsl:text>
     493</xsl:template>
     494
     495<xsl:template match="interface//method | collection//method" mode="forwarder">
     496
     497  <!-- if nameOnly='yes' then only the macro name is composed followed by \ -->
     498  <xsl:param name="nameOnly"/>
     499
     500  <xsl:variable name="parent" select="ancestor::interface | ancestor::collection"/>
     501
     502  <xsl:apply-templates select="@if" mode="begin"/>
     503
     504  <xsl:choose>
     505    <xsl:when test="$nameOnly='yes'">
     506      <!-- COM_FORWARD_Interface_Method_TO(smth) -->
     507      <xsl:text>COM_FORWARD_</xsl:text>
     508      <xsl:value-of select="$parent/@name"/>
     509      <xsl:text>_</xsl:text>
     510      <xsl:call-template name="capitalize">
     511        <xsl:with-param name="str" select="@name"/>
     512      </xsl:call-template>
     513      <xsl:text>_TO (smth) </xsl:text>
     514    </xsl:when>
     515    <xsl:otherwise>
     516      <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     517      <xsl:value-of select="$parent/@name"/>
     518      <xsl:text>_</xsl:text>
     519      <xsl:call-template name="capitalize">
     520        <xsl:with-param name="str" select="@name"/>
     521      </xsl:call-template>
     522      <xsl:text>_TO(smth) HRESULT STDMETHODCALLTYPE </xsl:text>
     523      <xsl:call-template name="capitalize">
     524        <xsl:with-param name="str" select="@name"/>
     525      </xsl:call-template>
     526      <xsl:choose>
     527        <xsl:when test="param">
     528          <xsl:text> (</xsl:text>
     529          <xsl:for-each select="param [position() != last()]">
     530            <xsl:apply-templates select="." mode="forwarder"/>
     531            <xsl:text>, </xsl:text>
     532          </xsl:for-each>
     533          <xsl:apply-templates select="param [last()]" mode="forwarder"/>
     534          <xsl:text>) { return smth </xsl:text>
     535          <xsl:call-template name="capitalize">
     536            <xsl:with-param name="str" select="@name"/>
     537          </xsl:call-template>
     538          <xsl:text> (</xsl:text>
     539          <xsl:for-each select="param [position() != last()]">
     540            <xsl:text>a</xsl:text>
     541            <xsl:call-template name="capitalize">
     542              <xsl:with-param name="str" select="@name"/>
     543            </xsl:call-template>
     544            <xsl:text>, </xsl:text>
     545          </xsl:for-each>
     546          <xsl:text>a</xsl:text>
     547          <xsl:call-template name="capitalize">
     548            <xsl:with-param name="str" select="param [last()]/@name"/>
     549          </xsl:call-template>
     550          <xsl:text>); }</xsl:text>
     551        </xsl:when>
     552        <xsl:otherwise test="not(param)">
     553          <xsl:text>() { return smth </xsl:text>
     554          <xsl:call-template name="capitalize">
     555            <xsl:with-param name="str" select="@name"/>
     556          </xsl:call-template>
     557          <xsl:text>(); }</xsl:text>
     558        </xsl:otherwise>
     559      </xsl:choose>
     560      <xsl:text>")&#x0A;</xsl:text>
     561      <!-- COM_FORWARD_Interface_Method_TO_OBJ(obj) -->
     562      <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     563      <xsl:value-of select="$parent/@name"/>
     564      <xsl:text>_</xsl:text>
     565      <xsl:call-template name="capitalize">
     566        <xsl:with-param name="str" select="@name"/>
     567      </xsl:call-template>
     568      <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text>
     569      <xsl:value-of select="$parent/@name"/>
     570      <xsl:text>_</xsl:text>
     571      <xsl:call-template name="capitalize">
     572        <xsl:with-param name="str" select="@name"/>
     573      </xsl:call-template>
     574      <xsl:text>_TO ((obj)->)")&#x0A;</xsl:text>
     575      <!-- COM_FORWARD_Interface_Method_TO_BASE(base) -->
     576      <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text>
     577      <xsl:value-of select="$parent/@name"/>
     578      <xsl:text>_</xsl:text>
     579      <xsl:call-template name="capitalize">
     580        <xsl:with-param name="str" select="@name"/>
     581      </xsl:call-template>
     582      <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text>
     583      <xsl:value-of select="$parent/@name"/>
     584      <xsl:text>_</xsl:text>
     585      <xsl:call-template name="capitalize">
     586        <xsl:with-param name="str" select="@name"/>
     587      </xsl:call-template>
     588      <xsl:text>_TO (base::)")&#x0A;</xsl:text>
     589    </xsl:otherwise>
     590  </xsl:choose>
     591
     592  <xsl:apply-templates select="@if" mode="end"/>
     593
    284594</xsl:template>
    285595
     
    458768    <xsl:text>)</xsl:text>
    459769  </xsl:if>
     770  <xsl:if test="@array">
     771    <xsl:text> *</xsl:text>
     772  </xsl:if>
     773  <xsl:if test="@dir='out' or @dir='return' or @safearray='yes'">
     774    <xsl:text> *</xsl:text>
     775  </xsl:if>
     776  <xsl:text> a</xsl:text>
     777  <xsl:call-template name="capitalize">
     778    <xsl:with-param name="str" select="@name"/>
     779  </xsl:call-template>
     780</xsl:template>
     781
     782<xsl:template match="method/param" mode="forwarder">
     783  <xsl:choose>
     784    <xsl:when test="@safearray='yes'">
     785      <xsl:text>SAFEARRAY *</xsl:text>
     786    </xsl:when>
     787    <xsl:otherwise>
     788      <xsl:apply-templates select="@type"/>
     789    </xsl:otherwise>
     790  </xsl:choose>
    460791  <xsl:if test="@array">
    461792    <xsl:text> *</xsl:text>
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