apiwrap-server.xsl revision aae83cade579096ce695f70f3ea8e862751260c9
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync XSLT stylesheet that generates C++ API wrappers (server side) from
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync Copyright (C) 2010-2015 Oracle Corporation
ad6416604f921c978764761778bfdcd1f4984b5avboxsync This file is part of VirtualBox Open Source Edition (OSE), as
ad6416604f921c978764761778bfdcd1f4984b5avboxsync available from http://www.virtualbox.org. This file is free software;
ad6416604f921c978764761778bfdcd1f4984b5avboxsync you can redistribute it and/or modify it under the terms of the GNU
ad6416604f921c978764761778bfdcd1f4984b5avboxsync General Public License (GPL) as published by the Free Software
ad6416604f921c978764761778bfdcd1f4984b5avboxsync Foundation, in version 2 as it comes in the "COPYING" file of the
ad6416604f921c978764761778bfdcd1f4984b5avboxsync VirtualBox OSE distribution. VirtualBox OSE is distributed in the
ad6416604f921c978764761778bfdcd1f4984b5avboxsync hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync version="1.0"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync global XSLT variables
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:variable name="G_xsltFilename" select="'apiwrap-server.xsl'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync keys for more efficiently looking up types.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:key name="G_keyEnumsByName" match="//enum[@name]" use="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:key name="G_keyInterfacesByName" match="//interface[@name]" use="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsynctemplates for file separation
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($G_sNewLine, '// ##### BEGINFILE "', $file, '"', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($G_sNewLine, '// ##### ENDFILE "', $file, '"', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsynctemplates for file headers/footers
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' * VirtualBox API class wrapper ', $type, ' for I', $class, '.')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * DO NOT EDIT! This is a generated file.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * Generated from: src/VBox/Main/idl/VirtualBox.xidl
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * Copyright (C) 2010-2015 Oracle Corporation
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * available from http://www.virtualbox.org. This file is free software;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * you can redistribute it and/or modify it under the terms of the GNU
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * General Public License (GPL) as published by the Free Software
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Emits COM_INTERFACE_ENTRY statements for the current interface node and whatever it inherits from. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' COM_INTERFACE_ENTRY(', @name, ')' , $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- now recurse to emit all base interfaces -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#ifndef ', substring(@name, 2), 'Wrap_H_', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#define ', substring(@name, 2), 'Wrap_H_')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat('class ATL_NO_VTABLE ', substring(@name, 2), 'Wrap:')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync public VirtualBoxBase,
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat(' VBOX_SCRIPTABLE_IMPL(', @name, ')')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:if test="count(exsl:node-set($addinterfaces)/token) > 0">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' VBOX_SCRIPTABLE_IMPL(', text(), ')')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(', substring(@name, 2), 'Wrap, ', @name, ')', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' DECLARE_NOT_AGGREGATABLE(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat(' BEGIN_COM_MAP(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat(' COM_INTERFACE_ENTRY2(IDispatch, ', @name, ')', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="option" select="'manualaddinterfaces'"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <!-- This is super tricky, as the for-each switches to the node set,
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync which means the normal document isn't available any more. We get
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync the data we need, uses a for-each to switch document and then a
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync key() to look up the interface by name. -->
dcc162af9a2a47325b89f457ed215957415d3d3avboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync END_COM_MAP()
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' DECLARE_EMPTY_CTOR_DTOR(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="concat('#endif // !', substring(@name, 2), 'Wrap_H_', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#define LOG_GROUP_MAIN_OVERRIDE LOG_GROUP_MAIN_', translate(substring(@name, 2), $G_lowerCase, $G_upperCase), $G_sNewLine, $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#include "', substring(@name, 2), 'Wrap.h"', $G_sNewLine)"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:when test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:variable name="newextends" select="key('G_keyInterfacesByName', $extends)/@extends"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:variable name="newiflist" select="concat($interfacelist, ', ', $extends)"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="classname" select="$classname"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="extends" select="$newextends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="interfacelist" select="$newiflist"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addinterfaces_ns" select="exsl:node-set($addinterfaces)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:when test="count($addinterfaces_ns/token) > 0">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addifname" select="$addinterfaces_ns/token[1]"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addif" select="key('G_keyInterfacesByName', $addifname)/@extends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="newextends" select="$addif/@extends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="newaddinterfaces" select="$addinterfaces_ns/token[position() > 1]"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="newiflist" select="concat($interfacelist, ', ', $addifname)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="classname" select="$classname"/>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:with-param name="extends" select="$newextends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="addinterfaces" select="$newaddinterfaces"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="interfacelist" select="$newiflist"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('NS_IMPL_THREADSAFE_ISUPPORTS', $depth, '_CI(', $classname, ', ', $interfacelist, ')', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat('NS_DECL_CLASSINFO(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="option" select="'manualaddinterfaces'"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="nulladdinterfaces"></xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="classname" select="concat(substring(@name, 2), 'Wrap')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="addinterfaces" select="$nulladdinterfaces"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="interfacelist" select="@name"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="classname" select="concat(substring(@name, 2), 'Wrap')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="interfacelist" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync templates for dealing with names and parameters
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="translate($str, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_', ' ')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="string-length($option) > 0 and contains(concat(',', translate($optionlist, ' ', ''), ','), concat(',', $option, ','))"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="substring-before($val,$separator)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="val" select="substring-after($val,$separator)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="separator" select="$separator"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <!-- Micro optimizations: Put off wraptypefield calculation as long as possible; Check interfaces before enums. -->
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <!-- get C++ glue type from IDL type from table in typemap-shared.inc.xsl -->
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:variable name="gluetypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="msg" select="concat('translatepublictype: Type "', $type, '" is not supported.')"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:if test="$dir='in' and not($safearray='yes')">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:if test="$dir='in' and not($safearray='yes')">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:if test="$dir='in' and not($safearray='yes')">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:value-of select="concat('ComPtr<', $type, '> &')"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <!-- Micro optimizations: Put off wraptypefield calculation as long as possible; Check interfaces before enums. -->
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <!-- get C++ wrap type from IDL type from table in typemap-shared.inc.xsl -->
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:variable name="wraptypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluename"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:with-param name="msg" select="concat('translatewrappedtype: Type "', $type, '" is not supported.')"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <!-- get C format string for IDL type from table in typemap-shared.inc.xsl -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="wrapfmt" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluefmt"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$mod='ptr' or ($isref='yes' and $dir!='in')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="msg" select="concat('translatefmtcpectype: Type "', $type, '" is not supported.')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- get dtrace probe type from IDL type from table in typemap-shared.inc.xsl -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="dtracetypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@dtracename"/>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <!-- <xsl:text>struct IUnknown *</xsl:text> -->
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- <xsl:value-of select="concat($type, '_T')"/> - later we can emit enums into dtrace the library -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="concat('struct ', $type, ' *')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="msg" select="concat('translatedtracetype Type "', $type, '" is not supported.')"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync templates for handling entire interfaces and their contents
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync - - - - - - - - - - - - - - - - - - - - - - -->
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync<!-- Called on interface node. -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- sources, headers and dtrace-probes all needs attribute lists -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="val" select="@wrap-hint-server-addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitInterface</xsl:message></xsl:otherwise>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:value-of select="concat('	', substring(@name, 2), 'Wrap.h \', $G_sNewLine)"/>
83bf0e5e5be2ea9615234bd6b482aaafaf84a80dvboxsync <xsl:value-of select="concat('	', substring(@name, 2), 'Wrap.cpp \', $G_sNewLine)"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync<!-- Called on a method param or attribute node. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="substring($gluetype,string-length($gluetype))!='*'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="safearray" select="../@safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="substring($wraptype, string-length($wraptype))"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="substring($wraptype, 1, string-length($wraptype)-2)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="substring($wraptype2,string-length($wraptype2)) = '>'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$isref!='yes' and ($dir='out' or $dir='ret')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="safearray" select="../@safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes' and $isref!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes' and $isref!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Emits the DTrace probe parameter value (using tmps), invoked on param or attribute node. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- Doesn't help to inline paramconversionviatmp: <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or @safearray = 'yes' or count(key('G_keyInterfacesByName', $type)) > 0"> -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- Later:
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="concat($tmpname, '.array().data(), ')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.uuid().toStringCurly().c_str()</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsyncSame as emitDTraceParamValue except no temporary variables are used (they are out of scope).
03c2c1a3b8325020021d9869a3fb159405394c77vboxsyncNote! There are two other instances of this code with different @dir values, see below.
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- To speed this up, the logic of paramconversionviatmp has been duplicated/inlined here. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<!-- Copy of emitDTraceParamValNoTmp with @dir = 'in' for speeding up the code (noticable difference). -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<!-- Copy of emitDTraceParamValNoTmp with @dir != 'in' for speeding up attributes (noticable difference). -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template name="emitDTraceParamValNoTmp-DirNotIn">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template match="attribute/@type | param/@type" mode="dtraceparamdecl">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- Safe arrays get an extra size parameter. -->
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:if test="substring($gluetype,string-length($gluetype))!='*'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Call this to determine whether a temporary conversion variable is used for the current parameter.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsyncReturns empty if not needed, non-empty ('yes') if needed. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type = 'boolean' or $type = 'long' or $type = 'long' or $type = 'long long'"/> <!-- XXX: drop this? -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Call this to get the argument conversion class, if any is needed. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComTypeInConverter<IUnknown></xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>ComTypeOutConverter<IUnknown></xsl:text>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:value-of select="concat('<', $type, '>')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="concat('<', $gluetype, '>')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Emits code for converting the parameter to a temporary variable. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template match="attribute/@type | param/@type" mode="paramvalconversion2tmpvar">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Partner to paramvalconversion2tmpvar that emits the parameter when calling call the internal worker method. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="paramvalconversionusingtmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:otherwise><xsl:message terminate="yes">Oops #1</xsl:message></xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <!-- Make sure BOOL values we pass down are either TRUE or FALSE. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit attribute
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat(' STDMETHOD(COMGETTER(', $attrbasename, '))(')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat(' STDMETHOD(COMSETTER(', $attrbasename, '))(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' virtual HRESULT get', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' virtual HRESULT set', $attrbasename, '(')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="option" select="'limitedcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMGETTER(', $attrbasename, ')(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="concat('"', $topclass, '::get', $attrbasename, '", ')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="logparamval">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync VirtualBoxBase::clearError();
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync HRESULT hrc;
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
45a24008fece0d2b499202e004c982f3a430651cvboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_ENTER('), $G_lowerCase, $G_upperCase)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync if (FAILED(autoCaller.rc()))
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="concat(' hrc = get', $attrbasename, '(')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="option" select="'passcaller'"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 1 /*hrc exception*/,</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="emitDTraceParamValNoTmp-DirNotIn"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync catch (...)
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text>this, hrc, 9 /*unhandled exception*/,</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitDTraceParamValNoTmp-DirNotIn"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('"', $topclass, '::get', $dtraceattrname, '", ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync return hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMSETTER(', $attrbasename, ')(')"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <!-- @todo check in parameters if possible -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('"', $topclass, '::set', $attrbasename, '", ')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="logparamval">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync VirtualBoxBase::clearError();
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync HRESULT hrc;
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
45a24008fece0d2b499202e004c982f3a430651cvboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $topclass, '_SET_', $dtraceattrname, '_ENTER('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync if (FAILED(autoCaller.rc()))
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="concat(' hrc = set', $attrbasename, '(')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = hrc2;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 1 /*hrc exception*/,</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="emitDTraceParamValNoTmp-DirIn"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync catch (...)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>this, hrc, 9 /*unhandled exception*/,</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitDTraceParamValNoTmp-DirIn"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync LogRelFlow(("{%p} %s: leave hrc=%Rhrc\n", this, </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat('"', $topclass, '::set', $attrbasename, '", ')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync return hrc;
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync Emit DTrace probes for the given attribute.
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<xsl:template match="attribute" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- attrbasename -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:if test="@name != 'midlDoesNotLikEmptyInterfaces'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__enter(struct ', $topclass)"/> -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__enter(void')"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__return(struct ', $topclass, ' *a_pThis')"/> -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__return(void *a_pThis')"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>, uint32_t a_hrc, int32_t enmWhy, </xsl:text>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:if test="(not(@readonly) or @readonly!='yes') and @name != 'midlDoesNotLikEmptyInterfaces'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- <xsl:value-of select="concat($topclass, '__set__', $dtraceattrname, '__enter(struct ', $topclass, ' *a_pThis, ')"/>-->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="concat($topclass, '__set__', $dtraceattrname, '__enter(void *a_pThis, ')"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- <xsl:value-of select="concat($dtracetopclass, '__set__', $dtraceattrname, '__return(struct ', $topclass, ' *a_pThis')"/> -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="concat($dtracetopclass, '__set__', $dtraceattrname, '__return(void *a_pThis')"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>, uint32_t a_hrc, int32_t enmWhy, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync Emit all attributes of an interface (current node).
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- first recurse to emit all base interfaces -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('// ', @name, ' properties')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat($G_sNewLine, ' // ', $pmode, ' ', @name, ' properties', $G_sNewLine)"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="/attribute | /if" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="/attribute | /if" mode="wrapped">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="/attribute | /if" mode="code">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="topclass" select="$topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="/attribute | /if" mode="dtrace-probes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitAttributes</xsl:message></xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitTargetBegin: target=<xsl:value-of select="$target"/></xsl:message></xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitTargetEnd target=<xsl:value-of select="$target"/></xsl:message></xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync emit method
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="wrapped">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="str" select="concat($topclass, @name)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="option" select="'limitedcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="dtracenamehack"> <!-- Ugly hack to deal with Session::assignMachine and similar. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::', $methodbasename, '(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(', "', $topclass, '::', @name, '"')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBoxBase::clearError();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync HRESULT hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- @todo check in parameters if possible -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text> CheckComArgOutPointerValidThrow(a</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_ENTER('), $G_lowerCase, $G_upperCase)"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync if (FAILED(autoCaller.rc()))
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="concat(' hrc = ', @name, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync catch (HRESULT hrc2)
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync hrc = hrc2;
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 1 /*hrc exception*/</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitDTraceParamValNoTmp"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync catch (...)
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 9 /*unhandled exception*/</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitDTraceParamValNoTmp"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(', "', $topclass, '::', @name, '"')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync return hrc;
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync Emits the DTrace probes for a method.
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:variable name="dtracenamehack"> <!-- Ugly hack to deal with Session::assignMachine and similar. -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__enter(struct ', $dtracetopclass, ' *a_pThis')"/> -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__enter(void *a_pThis')"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, '__return(struct ', $dtracetopclass, ' *a_pThis')"/> -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__return(void *a_pThis')"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>, uint32_t a_hrc, int32_t enmWhy</xsl:text>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="($target = 'xpidl') or ($target = 'midl')">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="method" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="attribute" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="method" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="attribute" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="topclass" select="$topclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="attribute" mode="code">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="topclass" select="$topclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="method" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="topclass" select="$topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="attribute" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="topclass" select="$topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="passmode" select="'public'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="$emitmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="passmode" select="'wrapped'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="$emitmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="$emitmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="topclass" select="$topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="passmode" select="'dtrace-probes'"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="emitmode" select="$emitmode"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit all methods of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- first recurse to emit all base interfaces -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('// ', @name, ' methods')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($G_sNewLine, ' // ', $pmode, ' ', @name, ' methods', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="/method | /if" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'method'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="/method | /if" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'method'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="/method | /if" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="emitmode" select="'method'"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="/method | /if" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="emitmode" select="'method'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit all attributes and methods declarations of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- attributes -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- methods -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit auxiliary method declarations of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- currently nothing, maybe later some generic FinalConstruct/... helper declaration for ComObjPtr -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit the header file of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.h')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="class" select="substring(@name, 2)"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:apply-templates select="." mode="classheader">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- interface attributes/methods (public) -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- This is super tricky, as the for-each switches to the node set,
f0727af162a325277470f629cf0f94dde88f104cvboxsync which means the normal document isn't available any more. We get
f0727af162a325277470f629cf0f94dde88f104cvboxsync the data we need, uses a for-each to switch document and then a
f0727af162a325277470f629cf0f94dde88f104cvboxsync key() to look up the interface by name. -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- auxiliary methods (public) -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- switch to private -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- wrapped interface attributes/methods (private) -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- This is super tricky, as the for-each switches to the node set,
f0727af162a325277470f629cf0f94dde88f104cvboxsync which means the normal document isn't available any more. We get
f0727af162a325277470f629cf0f94dde88f104cvboxsync the data we need, uses a for-each to switch document and then a
f0727af162a325277470f629cf0f94dde88f104cvboxsync key() to look up the interface by name. -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:apply-templates select="." mode="classfooter"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
f0727af162a325277470f629cf0f94dde88f104cvboxsync emit all attributes and methods definitions (pmode=code) or probes (pmode=dtrace-probes) of the current interface
f0727af162a325277470f629cf0f94dde88f104cvboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="topclass" select="substring(@name, 2)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:when test="@dtracename"><xsl:value-of select="@dtracename"/></xsl:when>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:otherwise><xsl:value-of select="$topclass"/></xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('DEFINE_EMPTY_CTOR_DTOR(', $topclass, 'Wrap)', $G_sNewLine, $G_sNewLine)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- attributes -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="topclass" select="$topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- This is super tricky, as the for-each switches to the node set,
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync which means the normal document isn't available any more. We get
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync the data we need, uses a for-each to switch document and then a
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync key() to look up the interface by name. -->
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="topclass" select="$topclass"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <!-- methods -->
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- This is super tricky, as the for-each switches to the node set,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync which means the normal document isn't available any more. We get
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync the data we need, uses a for-each to switch document and then a
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync key() to look up the interface by name. -->
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="topclass" select="$topclass"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit auxiliary method declarations of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- currently nothing, maybe later some generic FinalConstruct/... implementation -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit the code file of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.cpp')"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="class" select="substring(@name, 2)"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- interface attributes/methods (public) -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- auxiliary methods (public) -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
f0727af162a325277470f629cf0f94dde88f104cvboxsync emit the DTrace probes for the current interface
f0727af162a325277470f629cf0f94dde88f104cvboxsync - - - - - - - - - - - - - - - - - - - - - - -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- interface attributes/methods (public) -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="pmode">dtrace-probes</xsl:with-param>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- auxiliary methods (public) -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="pmode">dtrace-probes</xsl:with-param>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync wildcard match, ignore everything which has no explicit match
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync ignore all if tags except those for XPIDL or MIDL target
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:if test="(@target = 'xpidl') or (@target = 'midl')">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync interface match
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(@internal='yes') and not(@supportsErrorInfo='no')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync library match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($filelistonly, ' := \', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync Unknown string parameter value: generating='<xsl:value-of select="$generating"/>'
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- vi: set tabstop=4 shiftwidth=4 expandtab: -->