c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<?xml version="1.0"?>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!--
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync apiwrap-server.xsl:
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync XSLT stylesheet that generates C++ API wrappers (server side) from
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBox.xidl.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync Copyright (C) 2010-2015 Oracle Corporation
ad6416604f921c978764761778bfdcd1f4984b5avboxsync
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-->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:stylesheet
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync version="1.0"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync xmlns:exsl="http://exslt.org/common"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync extension-element-prefixes="exsl">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:output method="text"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:strip-space elements="*"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync global XSLT variables
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:variable name="G_xsltFilename" select="'apiwrap-server.xsl'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync<xsl:variable name="G_root" select="/"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:include href="typemap-shared.inc.xsl"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
fb0c9499e852c8847f20ff94d94476ec318fe37dvboxsync Keys for more efficiently looking up of types.
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync<xsl:key name="G_keyEnumsByName" match="//enum[@name]" use="@name"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync<xsl:key name="G_keyInterfacesByName" match="//interface[@name]" use="@name"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsynctemplates for file separation
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="startfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="file"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
667f78289bd66d491435551618fcfe60280c52fdvboxsync <xsl:call-template name="xsltprocNewlineOutputHack"/>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat($G_sNewLine, '// ##### BEGINFILE &quot;', $file, '&quot;', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="endfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="file"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat($G_sNewLine, '// ##### ENDFILE &quot;', $file, '&quot;', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsynctemplates for file headers/footers
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="fileheader">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="class"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>/** @file
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' * VirtualBox API class wrapper ', $type, ' for I', $class, '.')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync *
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * DO NOT EDIT! This is a generated file.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * Generated from: src/VBox/Main/idl/VirtualBox.xidl
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * Generator: src/VBox/Main/idl/apiwrap-server.xsl
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync */
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync/**
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync * Copyright (C) 2010-2015 Oracle Corporation
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync *
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 */
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync<!-- Emits COM_INTERFACE_ENTRY statements for the current interface node and whatever it inherits from. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitCOMInterfaces">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat(' COM_INTERFACE_ENTRY(', @name, ')' , $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- now recurse to emit all base interfaces -->
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:variable name="extends" select="@extends"/>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitCOMInterfaces"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="classheader">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <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_')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#include "VirtualBoxBase.h"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#include "Wrapper.h"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('class ATL_NO_VTABLE ', substring(@name, 2), 'Wrap:')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync public VirtualBoxBase,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat(' VBOX_SCRIPTABLE_IMPL(', @name, ')')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:if test="count(exsl:node-set($addinterfaces)/token) > 0">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>,</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:if>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="$G_sNewLine"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat(' VBOX_SCRIPTABLE_IMPL(', text(), ')')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:if test="not(position()=last())">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>,</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:if>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="$G_sNewLine"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>{
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync Q_OBJECT
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsyncpublic:
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat(' VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(', substring(@name, 2), 'Wrap, ', @name, ')', $G_sNewLine)"/>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat(' DECLARE_NOT_AGGREGATABLE(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> DECLARE_PROTECT_FINAL_CONSTRUCT()
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat(' BEGIN_COM_MAP(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> COM_INTERFACE_ENTRY(ISupportErrorInfo)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitCOMInterfaces"/>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat(' COM_INTERFACE_ENTRY2(IDispatch, ', @name, ')', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="manualAddInterfaces">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="checkoption">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="option" select="'manualaddinterfaces'"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:if test="not($manualAddInterfaces = 'true')">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <!-- This is super tricky, as the for-each switches to the node set,
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync which means the normal document isn't available any more. We get
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync the data we need, uses a for-each to switch document and then a
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync key() to look up the interface by name. -->
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addifname">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="string(.)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="$G_root">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitCOMInterfaces"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:for-each>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:if>
dcc162af9a2a47325b89f457ed215957415d3d3avboxsync <xsl:text> COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
dcc162af9a2a47325b89f457ed215957415d3d3avboxsync END_COM_MAP()
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat(' DECLARE_EMPTY_CTOR_DTOR(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="classfooter">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>};
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat('#endif // !', substring(@name, 2), 'Wrap_H_', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="codeheader">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <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)"/>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat('#include &quot;', substring(@name, 2), 'Wrap.h&quot;', $G_sNewLine)"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>#include "Logging.h"
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync# include "dtrace/VBoxAPI.h"
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync<xsl:template name="emitISupports">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="classname"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="extends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="depth"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="interfacelist"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:choose>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync <xsl:when test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:variable name="newextends" select="key('G_keyInterfacesByName', $extends)/@extends"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:variable name="newiflist" select="concat($interfacelist, ', ', $extends)"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:call-template name="emitISupports">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="classname" select="$classname"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="extends" select="$newextends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="depth" select="$depth + 1"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="interfacelist" select="$newiflist"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:call-template>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:when>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addinterfaces_ns" select="exsl:node-set($addinterfaces)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:choose>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:when test="count($addinterfaces_ns/token) > 0">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addifname" select="$addinterfaces_ns/token[1]"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <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:call-template name="emitISupports">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="classname" select="$classname"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="extends" select="$newextends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="addinterfaces" select="$newaddinterfaces"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="depth" select="$depth + 1"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="interfacelist" select="$newiflist"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:when>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:otherwise>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat('NS_IMPL_THREADSAFE_ISUPPORTS', $depth, '_CI(', $classname, ', ', $interfacelist, ')', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:choose>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:otherwise>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:choose>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync</xsl:template>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="codefooter">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#ifdef VBOX_WITH_XPCOM
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
d1cee674b4c5856cd9cdf7b6dfc596b3f11580cevboxsync <xsl:value-of select="concat('NS_DECL_CLASSINFO(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="manualAddInterfaces">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="checkoption">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="option" select="'manualaddinterfaces'"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:choose>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:when test="$manualAddInterfaces = 'true'">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="nulladdinterfaces"></xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="emitISupports">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="classname" select="concat(substring(@name, 2), 'Wrap')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="extends" select="@extends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="addinterfaces" select="$nulladdinterfaces"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="depth" select="1"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="interfacelist" select="@name"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:when>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="emitISupports">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="classname" select="concat(substring(@name, 2), 'Wrap')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="extends" select="@extends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="depth" select="1"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="interfacelist" select="@name"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#endif // VBOX_WITH_XPCOM
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync templates for dealing with names and parameters
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="str"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate($str, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_', ' ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync<xsl:template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:param name="optionlist"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:param name="option"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="string-length($option) > 0 and contains(concat(',', translate($optionlist, ' ', ''), ','), concat(',', $option, ','))"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync</xsl:template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync<xsl:template name="getattrlist">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="val"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="separator" select="','"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:if test="$val and $val != ''">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:choose>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:when test="contains($val,$separator)">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <token>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="substring-before($val,$separator)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </token>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="getattrlist">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="val" select="substring-after($val,$separator)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="separator" select="$separator"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:when>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <token><xsl:value-of select="$val"/></token>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:choose>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:if>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatepublictype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='wstring' or $type='uuid'">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:if test="$dir='in'">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:text>IN_</xsl:text>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:if>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:text>BSTR</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>IUnknown *</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:value-of select="concat($type, ' *')"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:value-of select="concat($type, '_T')"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <!-- Micro optimizations: Put off wraptypefield calculation as long as possible; Check interfaces before enums. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
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"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:choose>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:when test="string-length($gluetypefield)">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:value-of select="$gluetypefield"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:otherwise>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:call-template name="fatalError">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:with-param name="msg" select="concat('translatepublictype: Type &quot;', $type, '&quot; is not supported.')"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:call-template>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:otherwise>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$mod='ptr'">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text> *</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatewrappedtype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='wstring'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir='in' and not($safearray='yes')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>const </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>com::Utf8Str &amp;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='uuid'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>const </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>com::Guid &amp;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir='in' and not($safearray='yes')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>const </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComPtr&lt;IUnknown&gt; &amp;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:if test="$dir='in' and not($safearray='yes')">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>const </xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:if>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:value-of select="concat('ComPtr&lt;', $type, '&gt; &amp;')"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:value-of select="concat($type, '_T')"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <!-- Micro optimizations: Put off wraptypefield calculation as long as possible; Check interfaces before enums. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
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:choose>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:when test="string-length($wraptypefield)">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:value-of select="$wraptypefield"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:otherwise>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:call-template name="fatalError">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:with-param name="msg" select="concat('translatewrappedtype: Type &quot;', $type, '&quot; is not supported.')"/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:call-template>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:otherwise>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$mod='ptr'">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text> *</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatefmtspectype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="mod"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="safearray"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- 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:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="$mod='ptr' or ($isref='yes' and $dir!='in')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%p</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%zu</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="string-length($wrapfmt)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$wrapfmt"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%p</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>%RU32</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%p</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="fatalError">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="msg" select="concat('translatefmtcpectype: Type &quot;', $type, '&quot; is not supported.')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template name="translatedtracetype">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="type"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="mod"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
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"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="string-length($dtracetypefield)">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="$dtracetypefield"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type='$unknown'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- <xsl:text>struct IUnknown *</xsl:text> -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>void *</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <!-- <xsl:value-of select="concat($type, '_T')"/> - later we can emit enums into dtrace the library -->
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:text>int</xsl:text>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!--
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat('struct ', $type, ' *')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>void *</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="fatalError">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="msg" select="concat('translatedtracetype Type &quot;', $type, '&quot; is not supported.')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$mod='ptr'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text> *</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync templates for handling entire interfaces and their contents
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync - - - - - - - - - - - - - - - - - - - - - - -->
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync<!-- Called on interface node. -->
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync<xsl:template name="emitInterface">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <!-- sources, headers and dtrace-probes all needs attribute lists -->
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:variable name="addinterfaces">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:call-template name="getattrlist">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="val" select="@wrap-hint-server-addinterfaces"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:call-template>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:variable>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$generating = 'sources'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:if test="(position() mod 2) = $reminder">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:call-template name="emitCode">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:call-template>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:if>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$generating = 'headers'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:call-template name="emitHeader">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:call-template>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$generating = 'dtrace-probes'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:call-template name="emitDTraceProbes">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:call-template>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitInterface</xsl:message></xsl:otherwise>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync</xsl:template>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<!-- Called on a method param or attribute node. -->
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<xsl:template name="emitPublicParameter">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="gluetype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="translatepublictype">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="type" select="@type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="mod" select="@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>ComSafeArrayIn(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>ComSafeArrayOut(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:value-of select="$gluetype"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>, a</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="capitalize">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="str" select="@name"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>)</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:otherwise>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:value-of select="$gluetype"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:if test="substring($gluetype,string-length($gluetype))!='*'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text> </xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:if>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:if test="$dir != 'in'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>*</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:if>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>a</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="capitalize">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="str" select="@name"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="wraptype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="translatewrappedtype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="safearray" select="../@safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:variable name="lastchar">
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:value-of select="substring($wraptype, string-length($wraptype))"/>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>const </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>std::vector&lt;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:when test="$lastchar = '&amp;'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="wraptype2">
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:value-of select="substring($wraptype, 1, string-length($wraptype)-2)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:value-of select="$wraptype2"/>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:if test="substring($wraptype2,string-length($wraptype2)) = '&gt;'">
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:text> </xsl:text>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:when test="lastchar = '&gt;'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($wraptype, ' ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$wraptype"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>&gt; &amp;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$wraptype"/>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:if test="$lastchar != '&amp;'">
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:if test="$lastchar != '*'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:if test="$dir != 'in'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>*</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$isref!='yes' and ($dir='out' or $dir='ret')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>*</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>=</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="translatefmtspectype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="safearray" select="../@safearray"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="$isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="../@safearray='yes' and $isref!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArraySize(</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$isref!='yes' and $dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>*</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="$isref!='yes' and $dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>*</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="../@safearray='yes' and $isref!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<!-- Emits the DTrace probe parameter value (using tmps), invoked on param or attribute node. -->
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<xsl:template name="emitDTraceParamValue">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="viatmpvar">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:for-each select="@type">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="paramconversionviatmp">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="dir" select="$dir"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:for-each>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:variable>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:variable name="type" select="@type"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <!-- 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 <xsl:when test="$viatmpvar = 'yes'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="tmpname">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>Tmp</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="str" select="@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:variable>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="@safearray = 'yes'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>(uint32_t)</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="$tmpname"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.array().size(), </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- Later:
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="concat($tmpname, '.array().data(), ')"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>NULL /*for now*/</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = 'wstring'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="$tmpname"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.str().c_str()</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = 'uuid'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="$tmpname"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.uuid().toStringCurly().c_str()</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = '$unknown'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>(void *)</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="$tmpname"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.ptr()</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>(void *)</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="$tmpname"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>.ptr()</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:otherwise>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="$tmpname"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$dir != 'in'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>*</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>a</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="str" select="@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$type = 'boolean'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text> != FALSE</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<!--
aae83cade579096ce695f70f3ea8e862751260c9vboxsyncSame as emitDTraceParamValue except no temporary variables are used (they are out of scope).
aae83cade579096ce695f70f3ea8e862751260c9vboxsyncNote! There are two other instances of this code with different @dir values, see below.
aae83cade579096ce695f70f3ea8e862751260c9vboxsync-->
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<xsl:template name="emitDTraceParamValNoTmp">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <!-- To speed this up, the logic of paramconversionviatmp has been duplicated/inlined here. -->
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:variable name="type" select="@type"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="@safearray = 'yes'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>0, 0</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>0</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:otherwise>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:if test="@dir != 'in'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>*</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>a</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="str" select="@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:if test="$type = 'boolean'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text> != FALSE</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:if>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:otherwise>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync</xsl:template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<!-- Copy of emitDTraceParamValNoTmp with @dir = 'in' for speeding up the code (noticable difference). -->
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<xsl:template name="emitDTraceParamValNoTmp-DirIn">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:variable name="type" select="@type"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="@safearray = 'yes'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>0, 0</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>0</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:otherwise>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>a</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="capitalize">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="str" select="@name"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:if test="$type = 'boolean'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text> != FALSE</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:if>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:otherwise>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync</xsl:template>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<!-- Copy of emitDTraceParamValNoTmp with @dir != 'in' for speeding up attributes (noticable difference). -->
aae83cade579096ce695f70f3ea8e862751260c9vboxsync<xsl:template name="emitDTraceParamValNoTmp-DirNotIn">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:variable name="type" select="@type"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="@safearray = 'yes'">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>0, 0</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>0</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:otherwise>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:text>*a</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="capitalize">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="str" select="@name"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$type = 'boolean'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text> != FALSE</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template match="attribute/@type | param/@type" mode="dtraceparamdecl">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="gluetype">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="translatedtracetype">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="type" select="."/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir" select="$dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="mod" select="../@mod"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:variable>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- Safe arrays get an extra size parameter. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="../@safearray='yes'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>uint32_t a_c</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="str" select="../@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>, </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="$gluetype"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="../@safearray='yes'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text> *a_pa</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="substring($gluetype,string-length($gluetype))!='*'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text> </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>a_</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="str" select="../@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<!-- Call this to determine whether a temporary conversion variable is used for the current parameter.
03c2c1a3b8325020021d9869a3fb159405394c77vboxsyncReturns empty if not needed, non-empty ('yes') if needed. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template name="paramconversionviatmp">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="type" select="."/>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:choose>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid'">
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:text>yes</xsl:text>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync </xsl:when>
f2c1d156ebacf881eccc1d17c29877808e8a5d84vboxsync <xsl:when test="../@safearray = 'yes'">
3d9dd3898847de5df077eb50b194708f6359728bvboxsync <xsl:text>yes</xsl:text>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="$type = 'boolean' or $type = 'long' or $type = 'long' or $type = 'long long'"/> <!-- XXX: drop this? -->
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>yes</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<!-- Call this to get the argument conversion class, if any is needed. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template name="paramconversionclass">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>Array</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>ComTypeInConverter&lt;IUnknown&gt;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>ComTypeOutConverter&lt;IUnknown&gt;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='wstring'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>Array</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>BSTRInConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>BSTROutConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='uuid'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>Array</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>UuidInConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>UuidOutConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:if test="../@safearray='yes'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>Array</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="$dir='in'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>ComTypeInConverter</xsl:text>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:otherwise>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>ComTypeOutConverter</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:otherwise>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:choose>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat('&lt;', $type, '&gt;')"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:when>
3d9dd3898847de5df077eb50b194708f6359728bvboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="../@safearray='yes'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>Array</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:choose>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="$dir='in'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>InConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:otherwise>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>OutConverter</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:variable name="gluetype">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="translatepublictype">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="type" select="."/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="dir" select="$dir"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="mod" select="../@mod"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:variable>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat('&lt;', $gluetype, '&gt;')"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<!-- Emits code for converting the parameter to a temporary variable. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template match="attribute/@type | param/@type" mode="paramvalconversion2tmpvar">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="conversionclass">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="paramconversionclass">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir" select="$dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:variable>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$conversionclass != ''">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="$conversionclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text> Tmp</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="str" select="../@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>(</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="../@safearray = 'yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$dir = 'in'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>ComSafeArrayInArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>ComSafeArrayOutArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>a</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="str" select="../@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="../@safearray = 'yes'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>)</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<!-- Partner to paramvalconversion2tmpvar that emits the parameter when calling call the internal worker method. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:template match="attribute/@type | param/@type" mode="paramvalconversionusingtmp">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="viatmpvar">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="paramconversionviatmp">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir" select="$dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:variable>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="type" select="."/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$viatmpvar = 'yes'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>Tmp</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="str" select="../@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.array()</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = 'wstring'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.str()</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = 'uuid'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.uuid()</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="$type = '$unknown'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>.ptr()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:text>.ptr()</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:otherwise><xsl:message terminate="yes">Oops #1</xsl:message></xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>a</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:call-template name="capitalize">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="str" select="../@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <!-- Make sure BOOL values we pass down are either TRUE or FALSE. -->
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$type = 'boolean' and $dir = 'in'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text> != FALSE</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit attribute
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetBegin">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="attrbasename">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' STDMETHOD(COMGETTER(', $attrbasename, '))(')"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitPublicParameter">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="dir">out</xsl:with-param>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' STDMETHOD(COMSETTER(', $attrbasename, '))(')"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitPublicParameter">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="dir">in</xsl:with-param>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetBegin">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="attrbasename">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' virtual HRESULT get', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="passAutoCaller">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:call-template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:variable>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>AutoCaller &amp;aAutoCaller, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>) = 0;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' virtual HRESULT set', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>AutoCaller &amp;aAutoCaller, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>) = 0;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetBegin">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="attrbasename">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:variable name="limitedAutoCaller">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:call-template name="checkoption">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="option" select="'limitedcaller'"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:call-template>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="dtraceattrname">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="@dtracename">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="@dtracename"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="$attrbasename"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:variable>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMGETTER(', $attrbasename, ')(')"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitPublicParameter">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="dir">out</xsl:with-param>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync{
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: enter </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>\n", this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::get', $attrbasename, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBoxBase::clearError();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync HRESULT hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync try
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync CheckComArgOutPointerValidThrow(a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$attrbasename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir" select="'out'"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:apply-templates>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_ENTER('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:when test="$limitedAutoCaller = 'true'">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>AutoLimitedCaller</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:when>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:otherwise>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>AutoCaller</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:otherwise>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text> autoCaller(this);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync if (FAILED(autoCaller.rc()))
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync throw autoCaller.rc();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' hrc = get', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="passAutoCaller">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:call-template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:variable>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>autoCaller, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 0 /*normal*/,</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValue">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir">out</xsl:with-param>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync hrc = hrc2;</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
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>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValNoTmp-DirNotIn"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (...)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 9 /*unhandled exception*/,</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValNoTmp-DirNotIn"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: leave </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> hrc=%Rhrc\n", this, </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::get', $dtraceattrname, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, hrc));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync return hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync}
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
667f78289bd66d491435551618fcfe60280c52fdvboxsync <xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMSETTER(', $attrbasename, ')(')"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitPublicParameter">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:with-param name="dir">in</xsl:with-param>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- @todo check in parameters if possible -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync{
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: enter </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>\n", this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::set', $attrbasename, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBoxBase::clearError();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync HRESULT hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync try
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir" select="'in'"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:apply-templates>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $topclass, '_SET_', $dtraceattrname, '_ENTER('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, </xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValue">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir">in</xsl:with-param>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:when test="$limitedAutoCaller = 'true'">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>AutoLimitedCaller</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:when>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:otherwise>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>AutoCaller</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:otherwise>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text> autoCaller(this);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync if (FAILED(autoCaller.rc()))
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync throw autoCaller.rc();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' hrc = set', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>autoCaller, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 0 /*normal*/,</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValue">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir">in</xsl:with-param>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = hrc2;
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
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>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValNoTmp-DirIn"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (...)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 9 /*unhandled exception*/,</xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValNoTmp-DirIn"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: leave hrc=%Rhrc\n", this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::set', $attrbasename, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>hrc));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync return hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync}
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
667f78289bd66d491435551618fcfe60280c52fdvboxsync <xsl:call-template name="xsltprocNewlineOutputHack"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync Emit DTrace probes for the given attribute.
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<xsl:template match="attribute" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="target"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:variable name="dtraceattrname">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:choose>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:when test="@dtracename">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="@dtracename"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:when>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:otherwise>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- attrbasename -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:call-template name="capitalize">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="str" select="@name"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:call-template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:otherwise>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:choose>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:variable>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:if test="@name != 'midlDoesNotLikEmptyInterfaces'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text> probe </xsl:text>
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:text> *a_pThis);
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync probe </xsl:text>
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:with-param name="dir">out</xsl:with-param>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:apply-templates>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>);
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync</xsl:text>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:if>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:if test="(not(@readonly) or @readonly!='yes') and @name != 'midlDoesNotLikEmptyInterfaces'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text> probe </xsl:text>
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:with-param name="dir" select="'in'"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:apply-templates>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>);
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync probe </xsl:text>
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>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dir">in</xsl:with-param>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:apply-templates>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>);
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync</xsl:text>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:if>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync</xsl:template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync Emit all attributes of an interface (current node).
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitAttributes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- first recurse to emit all base interfaces -->
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:variable name="extends" select="@extends"/>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitAttributes">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="topclass" select="$topclass"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="pmode" select="$pmode"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='code'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>//
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat('// ', @name, ' properties')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync//
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="$pmode != 'dtrace-probes'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat($G_sNewLine, ' // ', $pmode, ' ', @name, ' properties', $G_sNewLine)"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='public'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="/attribute | /if" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='wrapped'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="/attribute | /if" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='code'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="/attribute | /if" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:when test="$pmode = 'dtrace-probes'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="/attribute | /if" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="topclass" select="$topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:apply-templates>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitAttributes</xsl:message></xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template name="emitTargetBegin">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="$target = ''"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="$target = 'xpidl'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>#ifdef VBOX_WITH_XPCOM
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="$target = 'midl'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>#ifndef VBOX_WITH_XPCOM
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitTargetBegin: target=<xsl:value-of select="$target"/></xsl:message></xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:choose>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:when test="$target = ''"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="$target = 'xpidl'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>#endif /* VBOX_WITH_XPCOM */
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="$target = 'midl'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>#endif /* !VBOX_WITH_XPCOM */
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitTargetEnd target=<xsl:value-of select="$target"/></xsl:message></xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit method
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="method" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetBegin">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodindent">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> STDMETHOD(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitPublicParameter">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(position()=last())">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$methodindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="method" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetBegin">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodindent">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> virtual HRESULT </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="uncapitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>(</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="passAutoCaller">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:call-template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:variable>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>AutoCaller &amp;aAutoCaller</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="count(param) > 0">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>,
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="$methodindent"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(position()=last())">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$methodindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>) = 0;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="method" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetBegin">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodindent">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodclassindent">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="concat($topclass, @name)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodbasename">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:variable name="limitedAutoCaller">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:call-template name="checkoption">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="option" select="'limitedcaller'"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:call-template>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:variable>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="dtracemethodname">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:when test="@dtracename">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="@dtracename"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:when>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="@name"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:variable>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:variable name="dtracenamehack"> <!-- Ugly hack to deal with Session::assignMachine and similar. -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:if test="name(..) = 'if'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="concat('__', ../@target)"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:if>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::', $methodbasename, '(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitPublicParameter">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(position()=last())">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$methodclassindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync{
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s:enter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>\n", this</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(', &quot;', $topclass, '::', @name, '&quot;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBoxBase::clearError();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync HRESULT hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync try
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- @todo check in parameters if possible -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="@dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> CheckComArgOutPointerValidThrow(a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync<xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:for-each select="param">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir" select="@dir"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:apply-templates>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_ENTER('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:for-each select="param[@dir='in']">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>, </xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValue">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir" select="@dir"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:for-each>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:when test="$limitedAutoCaller = 'true'">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>AutoLimitedCaller</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:when>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:otherwise>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>AutoCaller</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:otherwise>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text> autoCaller(this);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync if (FAILED(autoCaller.rc()))
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync throw autoCaller.rc();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' hrc = ', @name, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="passAutoCaller">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:call-template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:variable>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>autoCaller</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="count(param) > 0">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>,
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="$methodindent"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(position()=last())">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$methodindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>this, hrc, 0 /*normal*/</xsl:text>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:for-each select="param">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>, </xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValue">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dir" select="@dir"/>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync </xsl:call-template>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:for-each>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = hrc2;
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
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>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:for-each select="param">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>, </xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValNoTmp"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:for-each>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (...)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:text>
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>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:for-each select="param">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>, </xsl:text>
aae83cade579096ce695f70f3ea8e862751260c9vboxsync <xsl:call-template name="emitDTraceParamValNoTmp"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:for-each>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:text>);
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: leave</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="@dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> hrc=%Rhrc\n", this</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(', &quot;', $topclass, '::', @name, '&quot;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="@dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, hrc));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync return hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync}
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync Emits the DTrace probes for a method.
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<xsl:template match="method" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="target"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:variable name="dtracemethodname">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:choose>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:when test="@dtracename">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="@dtracename"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:when>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:otherwise>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="@name"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:otherwise>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:choose>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:variable>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:variable name="dtracenamehack"> <!-- Ugly hack to deal with Session::assignMachine and similar. -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:if test="name(..) = 'if'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:value-of select="concat('__', ../@target)"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:if>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:variable>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text> probe </xsl:text>
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:for-each select="param[@dir='in']">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>, </xsl:text>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dir" select="'@dir'"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:apply-templates>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:for-each>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>);
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync probe </xsl:text>
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:for-each select="param">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>, </xsl:text>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dir" select="'@dir'"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:apply-templates>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:for-each>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:text>);
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync</xsl:text>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync</xsl:template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template name="emitIf">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="passmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="topclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="emitmode"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="($target = 'xpidl') or ($target = 'midl')">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$passmode='public'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$emitmode='method'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:apply-templates select="method" mode="public">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="target" select="$target"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$emitmode='attribute'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:apply-templates select="attribute" mode="public">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="target" select="$target"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:otherwise/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$passmode='wrapped'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$emitmode='method'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:apply-templates select="method" mode="wrapped">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="target" select="$target"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$emitmode='attribute'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:apply-templates select="attribute" mode="wrapped">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="target" select="$target"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:apply-templates>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$passmode='code'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$emitmode='method'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:apply-templates select="method" mode="code">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="target" select="$target"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="topclass" select="$topclass"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:apply-templates>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$emitmode='attribute'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:apply-templates select="attribute" mode="code">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="target" select="$target"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="topclass" select="$topclass"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:apply-templates>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:otherwise/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$passmode = 'dtrace-probes'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$emitmode = 'method'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:apply-templates select="method" mode="dtrace-probes">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="target" select="$target"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="topclass" select="$topclass"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:apply-templates>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:when test="$emitmode = 'attribute'">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:apply-templates select="attribute" mode="dtrace-probes">
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="target" select="$target"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="topclass" select="$topclass"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:apply-templates>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:otherwise/>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:choose>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync </xsl:when>
cab869c5a56eefbf32e8f5f1e4a53050d46e8650vboxsync <xsl:otherwise/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template match="if" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="emitmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitIf">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="passmode" select="'public'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="@target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="$emitmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template match="if" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="emitmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitIf">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="passmode" select="'wrapped'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="@target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="$emitmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template match="if" mode="code">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="topclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="emitmode"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitIf">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="passmode" select="'code'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="@target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="$emitmode"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="topclass" select="$topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<xsl:template match="if" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="emitmode"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:call-template name="emitIf">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="passmode" select="'dtrace-probes'"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="target" select="@target"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="emitmode" select="$emitmode"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="topclass" select="$topclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:call-template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync</xsl:template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync emit all methods of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitMethods">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="pmode"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:param name="dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- first recurse to emit all base interfaces -->
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:variable name="extends" select="@extends"/>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitMethods">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="topclass" select="$topclass"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="pmode" select="$pmode"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='code'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>//
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat('// ', @name, ' methods')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync//
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:when test="$pmode='dtrace-probes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat($G_sNewLine, ' // ', $pmode, ' ', @name, ' methods', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='public'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="/method | /if" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'method'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='wrapped'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="/method | /if" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'method'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='code'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="/method | /if" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'method'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:when test="$pmode='dtrace-probes'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="/method | /if" mode="dtrace-probes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <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>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync emit all attributes and methods declarations of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitInterfaceDecls">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- attributes -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitAttributes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="$pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- methods -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitMethods">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="$pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync emit auxiliary method declarations of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitAuxMethodDecls">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- currently nothing, maybe later some generic FinalConstruct/... helper declaration for ComObjPtr -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync emit the header file of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitHeader">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.h')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="." mode="startfile">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="file" select="$filename"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:apply-templates>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:call-template name="fileheader">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="name" select="$filename"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="class" select="substring(@name, 2)"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="type" select="'header'"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="." mode="classheader">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- interface attributes/methods (public) -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:call-template name="emitInterfaceDecls">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="pmode" select="'public'"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <!-- This is super tricky, as the for-each switches to the node set,
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync which means the normal document isn't available any more. We get
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync the data we need, uses a for-each to switch document and then a
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync key() to look up the interface by name. -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:variable name="addifname">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:value-of select="string(.)"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:variable>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="$G_root">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitInterfaceDecls">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="pmode" select="'public'"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:for-each>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- auxiliary methods (public) -->
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitAuxMethodDecls"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- switch to private -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsyncprivate:</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- wrapped interface attributes/methods (private) -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:call-template name="emitInterfaceDecls">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="pmode" select="'wrapped'"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:call-template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <!-- This is super tricky, as the for-each switches to the node set,
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync which means the normal document isn't available any more. We get
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync the data we need, uses a for-each to switch document and then a
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync key() to look up the interface by name. -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:variable name="addifname">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:value-of select="string(.)"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:variable>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="$G_root">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitInterfaceDecls">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="pmode" select="'wrapped'"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:for-each>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="." mode="classfooter"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="." mode="endfile">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="file" select="$filename"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync emit all attributes and methods definitions (pmode=code) or probes (pmode=dtrace-probes) of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitInterfaceDefs">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="pmode" select="'code'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:variable name="topclass" select="substring(@name, 2)"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:variable name="dtracetopclass">
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:choose>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:when test="@dtracename"><xsl:value-of select="@dtracename"/></xsl:when>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:otherwise><xsl:value-of select="$topclass"/></xsl:otherwise>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:choose>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync </xsl:variable>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:if test="$pmode = 'code'">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:value-of select="concat('DEFINE_EMPTY_CTOR_DTOR(', $topclass, 'Wrap)', $G_sNewLine, $G_sNewLine)"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:if>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- attributes -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitAttributes">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="topclass" select="$topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="pmode" select="$pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <!-- This is super tricky, as the for-each switches to the node set,
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync which means the normal document isn't available any more. We get
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync the data we need, uses a for-each to switch document and then a
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync key() to look up the interface by name. -->
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addifname">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="string(.)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="$G_root">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitAttributes">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="topclass" select="$topclass"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="pmode" select="$pmode"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:for-each>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- methods -->
667f78289bd66d491435551618fcfe60280c52fdvboxsync <xsl:call-template name="xsltprocNewlineOutputHack"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitMethods">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="topclass" select="$topclass"/>
03c2c1a3b8325020021d9869a3fb159405394c77vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="pmode" select="$pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <!-- This is super tricky, as the for-each switches to the node set,
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync which means the normal document isn't available any more. We get
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync the data we need, uses a for-each to switch document and then a
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync key() to look up the interface by name. -->
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addifname">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="string(.)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="$G_root">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitMethods">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="topclass" select="$topclass"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:with-param name="pmode" select="$pmode"/>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync </xsl:for-each>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync emit auxiliary method declarations of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitAuxMethodDefs">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="pmode" select="'code'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- currently nothing, maybe later some generic FinalConstruct/... implementation -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync emit the code file of the current interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitCode">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.cpp')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="." mode="startfile">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="file" select="$filename"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:apply-templates>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:call-template name="fileheader">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="name" select="$filename"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="class" select="substring(@name, 2)"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="type" select="'code'"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:call-template>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="." mode="codeheader">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- interface attributes/methods (public) -->
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:call-template name="emitInterfaceDefs">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
f0727af162a325277470f629cf0f94dde88f104cvboxsync <!-- auxiliary methods (public) -->
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitAuxMethodDefs"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="." mode="codefooter">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:apply-templates>
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:apply-templates select="." mode="endfile">
f0727af162a325277470f629cf0f94dde88f104cvboxsync <xsl:with-param name="file" select="$filename"/>
f0727af162a325277470f629cf0f94dde88f104cvboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync emit the DTrace probes for the current interface
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync<xsl:template name="emitDTraceProbes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:param name="addinterfaces"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- interface attributes/methods (public) -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:call-template name="emitInterfaceDefs">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="pmode">dtrace-probes</xsl:with-param>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:call-template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <!-- auxiliary methods (public) -->
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:call-template name="emitAuxMethodDefs">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:with-param name="pmode">dtrace-probes</xsl:with-param>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:call-template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync</xsl:template>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync wildcard match, ignore everything which has no explicit match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="*"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync ignore all if tags except those for XPIDL or MIDL target
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="if">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="(@target = 'xpidl') or (@target = 'midl')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync interface match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="not(@internal='yes') and not(@supportsErrorInfo='no')">
9c311bd1c2e6024ec33fc61f9aeafe1dff56c631vboxsync <xsl:call-template name="emitInterface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync library match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="library">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync root match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="/idl">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:when test="$generating = 'headers'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:when>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:when test="$generating = 'sources'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates/>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:when>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:when test="$generating = 'dtrace-probes'">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:apply-templates/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync <xsl:message terminate="yes">
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync Unknown string parameter value: generating='<xsl:value-of select="$generating"/>'
22687b2de721d6e27009b6335fb7481dcb4ea876vboxsync </xsl:message>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:stylesheet>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- vi: set tabstop=4 shiftwidth=4 expandtab: -->