apiwrap-server.xsl revision 3d9dd3898847de5df077eb50b194708f6359728b
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
ad6416604f921c978764761778bfdcd1f4984b5avboxsync 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:variable name="G_sNewLine">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$KBUILD_HOST = 'win'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="'&#13;&#10;'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="'&#10;'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:include href="typemap-shared.inc.xsl"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsynctemplates for file separation
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="listfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="file"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&#9;', $file, ' \', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="startfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="file"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync</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/**
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * 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 */
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitCOMInterfaces">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' COM_INTERFACE_ENTRY(', $iface/@name, ')' , $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <!-- now recurse to emit all base interfaces -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="extends" select="$iface/@extends"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitCOMInterfaces">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="//interface[@name=$extends]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="classheader">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#ifndef ', substring(@name, 2), 'Wrap_H_', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#define ', substring(@name, 2), 'Wrap_H_')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync#include "VirtualBoxBase.h"
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync#include "Wrapper.h"
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat('class ATL_NO_VTABLE ', substring(@name, 2), 'Wrap:')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync public VirtualBoxBase,
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat(' VBOX_SCRIPTABLE_IMPL(', @name, ')')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:if test="count(exsl:node-set($addinterfaces)/token) > 0">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$G_sNewLine"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="exsl:node-set($addinterfaces)/token">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' VBOX_SCRIPTABLE_IMPL(', text(), ')')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(position()=last())">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$G_sNewLine"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>{
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync Q_OBJECT
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsyncpublic:
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(', substring(@name, 2), 'Wrap, ', @name, ')', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' DECLARE_NOT_AGGREGATABLE(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text> DECLARE_PROTECT_FINAL_CONSTRUCT()
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat(' BEGIN_COM_MAP(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text> COM_INTERFACE_ENTRY(ISupportErrorInfo)
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="emitCOMInterfaces">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="iface" select="."/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <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">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <!-- This is super tricky, as the for-each switches to the node
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync set, which means the normal document isn't available any more.
dcc162af9a2a47325b89f457ed215957415d3d3avboxsync So need to use the global root node to get back into the
dcc162af9a2a47325b89f457ed215957415d3d3avboxsync documemt to find corresponding interface data. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="addifname">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="string(.)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitCOMInterfaces">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$G_root//interface[@name=$addifname]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync END_COM_MAP()
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' DECLARE_EMPTY_CTOR_DTOR(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="classfooter">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="addinterfaces"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>};
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#endif // !', substring(@name, 2), 'Wrap_H_', $G_sNewLine)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync<xsl:template match="interface" mode="codeheader">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="addinterfaces"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <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)"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:value-of select="concat('#include &quot;', substring(@name, 2), 'Wrap.h&quot;', $G_sNewLine)"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:text>#include "Logging.h"
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync# include "dtrace/VBoxAPI.h"
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync#endif
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync</xsl:text>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync</xsl:template>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync<xsl:template name="emitISupports">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="classname"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="extends"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="addinterfaces"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="depth"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="interfacelist"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:choose>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:when test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="newextends" select="//interface[@name=$extends]/@extends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="newiflist" select="concat($interfacelist, ', ', $extends)"/>
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="$addinterfaces"/>
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>
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]"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="addif" select="//interface[@name=$addifname]/@extends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="newextends" select="$addif/@extends"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="newaddinterfaces" select="$addinterfaces_ns/token[position() > 1]"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:variable name="newiflist" select="concat($interfacelist, ', ', $addifname)"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:call-template name="emitISupports">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="classname" select="$classname"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="extends" select="$newextends"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="addinterfaces" select="$newaddinterfaces"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="depth" select="$depth + 1"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="interfacelist" select="$newiflist"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:when>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat('NS_IMPL_THREADSAFE_ISUPPORTS', $depth, '_CI(', $classname, ', ', $interfacelist, ')', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:choose>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:otherwise>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:choose>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync<xsl:template match="interface" mode="codefooter">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="addinterfaces"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>#ifdef VBOX_WITH_XPCOM
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="concat('NS_DECL_CLASSINFO(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
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"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="interfacelist" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitISupports">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="classname" select="concat(substring(@name, 2), 'Wrap')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="extends" select="@extends"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="depth" select="1"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="interfacelist" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#endif // VBOX_WITH_XPCOM
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync</xsl:template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync templates for dealing with names and parameters
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync - - - - - - - - - - - - - - - - - - - - - - -->
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync<xsl:template name="tospace">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="str"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="translate($str, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_', ' ')"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync<xsl:template name="checkoption">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="optionlist"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="option"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="string-length($option) > 0 and contains(concat(',', translate($optionlist, ' ', ''), ','), concat(',', $option, ','))"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
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)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </token>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="getattrlist">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="val" select="substring-after($val,$separator)"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="separator" select="$separator"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <token><xsl:value-of select="$val"/></token>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatepublictype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='wstring' or $type='uuid'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>IN_</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>BSTR</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>IUnknown *</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- Micro optimizations: Put off wraptypefield calculation as long as possible; Check interfaces before enums. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- get C++ glue type from IDL type from table in typemap-shared.inc.xsl -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="gluetypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="string-length($gluetypefield)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$gluetypefield"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="//interface[@name=$type]">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:variable name="thatif" select="//interface[@name=$type]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="thatifname" select="$thatif/@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($thatifname, ' *')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//enum[@name=$type]">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:value-of select="concat($type, '_T')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="fatalError">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="msg" select="concat('translatepublictype: Type &quot;', $type, '&quot; is not supported.')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$mod='ptr'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> *</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatewrappedtype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <!-- Micro optimizations: Put off wraptypefield calculation as long as possible; Check interfaces before enums. -->
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:otherwise>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <!-- get C++ wrap type from IDL type from table in typemap-shared.inc.xsl -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="wraptypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="string-length($wraptypefield)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$wraptypefield"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="//interface[@name=$type]">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:variable name="thatif" select="//interface[@name=$type]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="thatifname" select="$thatif/@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir='in' and not($safearray='yes')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>const </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:value-of select="concat('ComPtr&lt;', $thatifname, '&gt; &amp;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//enum[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($type, '_T')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="fatalError">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="msg" select="concat('translatewrappedtype: Type &quot;', $type, '&quot; is not supported.')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$mod='ptr'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> *</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </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"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="isref"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <!-- get C format string for IDL type from table in typemap-shared.inc.xsl -->
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:variable name="wrapfmt" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluefmt"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="$mod='ptr' or ($isref='yes' and $dir!='in')">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text>%p</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:when>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:when test="$safearray='yes'">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>%zu</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:when>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:when test="string-length($wrapfmt)">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:value-of select="$wrapfmt"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="//enum[@name=$type]">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text>%RU32</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="$type='$unknown'">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text>%p</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="//interface[@name=$type]">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>%p</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:otherwise>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <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
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatedtracetype">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- get dtrace probe type from IDL type from table in typemap-shared.inc.xsl -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="dtracetypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@dtracename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="string-length($dtracetypefield)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$dtracetypefield"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//enum[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- <xsl:value-of select="concat($type, '_T')"/> - later we can emit enums into dtrace the library -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>int</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- <xsl:text>struct IUnknown *</xsl:text> -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>void *</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//interface[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!--
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="thatif" select="//interface[@name=$type]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="thatifname" select="$thatif/@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('struct ', $thatifname, ' *')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>void *</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="fatalError">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="msg" select="concat('translatedtracetype Type &quot;', $type, '&quot; is not supported.')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$mod='ptr'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> *</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync templates for handling entire interfaces and their contents
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitInterface">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$generating != 'filelist'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- sources, headers and dtrace-probes all needs attribute lists -->
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:variable name="addinterfaces">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="getattrlist">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="val" select="$iface/@wrap-hint-server-addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$generating = 'sources'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitCode">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$generating = 'headers'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitHeader">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$generating = 'dtrace-probes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitDTraceProbes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$generating = 'filelist'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- Just output the name of the header and source filenames for this interface. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface" mode="listfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="file" select="concat(substring(@name, 2), 'Wrap.h')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface" mode="listfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="file" select="concat(substring(@name, 2), 'Wrap.cpp')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="public">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="gluetype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="translatepublictype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayIn(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayOut(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$gluetype"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="substring($gluetype,string-length($gluetype))!='*'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="'*'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:value-of select="')'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
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"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="safearray" select="../@safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="substring($wraptype,string-length($wraptype))='&amp;'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="wraptype2">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="substring($wraptype,1,string-length($wraptype)-2)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="substring($wraptype2,string-length($wraptype2))='&gt;'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($wraptype2, ' ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$wraptype2"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="substring($wraptype,string-length($wraptype))='&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"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="substring($wraptype,string-length($wraptype))!='&amp;'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="substring($wraptype,string-length($wraptype))!='*'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="'*'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
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"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="safearray" select="../@safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes' and $isref!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArraySize(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$isref!='yes' and $dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>*</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes' and $isref!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="dtraceparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="viatmpvar">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="paramconversionviatmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$viatmpvar = 'yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="tmpname">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>Tmp</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray = 'yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>(uint32_t)</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$tmpname"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.array().size(), </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- Later:
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($tmpname, '.array().data(), ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>NULL /*for now*/</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type = 'wstring'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$tmpname"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.str().c_str()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type = 'uuid'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$tmpname"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.uuid().toStringCurly().c_str()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type = '$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>(void *)</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$tmpname"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.ptr()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="thatif" select="//interface[@name=$type]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$thatif">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>(void *)</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$tmpname"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.ptr()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$tmpname"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir != 'in'">
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
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$type = 'boolean'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> != FALSE</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Same as dtraceparamval except no temporary variables are used (they are out of scope). -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="dtraceparamvalnotmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="viatmpvar">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="paramconversionviatmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:variable name="type" select="."/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="$viatmpvar = 'yes'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="../@safearray = 'yes'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>0, </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>0</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir != 'in'">
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
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$type = 'boolean'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> != FALSE</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="dtraceparamdecl">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:variable name="gluetype">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="translatedtracetype">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:variable>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <!-- Safe arrays get an extra size parameter. -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="../@safearray='yes'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>uint32_t a_c</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$gluetype"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:when test="../@safearray='yes'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text> *a_pa</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:when>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:otherwise>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="substring($gluetype,string-length($gluetype))!='*'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text> </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>a_</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Call this to determine whether a temporary conversion variable is used for the current parameter.
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsyncReturns empty if not needed, non-empty ('yes') if needed. -->
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync<xsl:template name="paramconversionviatmp">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or ../@safearray = 'yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>yes</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- Micro optimizations: Postpone calculating $thatif. -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:variable name="thatif" select="//interface[@name=$type]"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="$thatif">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>yes</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<!-- Call this to get the argument conversion class, if any is needed. -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template name="paramconversionclass">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="dir"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
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>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:when test="$dir='in'">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>ComTypeInConverter&lt;IUnknown&gt;</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:when>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:otherwise>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>ComTypeOutConverter&lt;IUnknown&gt;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
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'">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text>BSTRInConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>BSTROutConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
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'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>UuidInConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>UuidOutConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:when>
45a24008fece0d2b499202e004c982f3a430651cvboxsync
45a24008fece0d2b499202e004c982f3a430651cvboxsync <!-- Micro optimizations: Delay calculating thatif. -->
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:otherwise>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:variable name="thatif" select="//interface[@name=$type]"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:choose>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:when test="$thatif">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:if test="../@safearray='yes'">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>Array</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComTypeInConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>ComTypeOutConverter</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:otherwise>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:choose>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="thatifname" select="$thatif/@name"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="concat('&lt;', $thatifname, '&gt;')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:when>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:when test="../@safearray='yes'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>Array</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>InConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>OutConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="gluetype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="translatepublictype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&lt;', $gluetype, '&gt;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- Emits code for converting the parameter to a temporary variable. -->
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync<xsl:template match="attribute/@type | param/@type" mode="paramvalconversion2tmpvar">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="conversionclass">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="paramconversionclass">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:variable>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$conversionclass != ''">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$conversionclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> Tmp</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:if test="../@safearray = 'yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir = 'in'">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text>ComSafeArrayInArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayOutArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </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:if test="../@safearray = 'yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
45a24008fece0d2b499202e004c982f3a430651cvboxsync
45a24008fece0d2b499202e004c982f3a430651cvboxsync</xsl:template>
45a24008fece0d2b499202e004c982f3a430651cvboxsync
45a24008fece0d2b499202e004c982f3a430651cvboxsync<!-- Partner to paramvalconversion2tmpvar that emits the parameter when calling call the internal worker method. -->
45a24008fece0d2b499202e004c982f3a430651cvboxsync<xsl:template match="attribute/@type | param/@type" mode="paramvalconversionusingtmp">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:param name="dir"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:variable name="viatmpvar">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:call-template name="paramconversionviatmp">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="dir" select="$dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:when test="$viatmpvar = 'yes'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>Tmp</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.array()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type = 'wstring'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.str()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type = 'uuid'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.uuid()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type = '$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.ptr()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="thatif" select="//interface[@name=$type]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$thatif">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>.ptr()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>a</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- Make sure BOOL values we pass down are either TRUE or FALSE. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$type = 'boolean' and $dir = 'in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> != FALSE</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit attribute
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute" mode="public">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitTargetBegin">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="target" select="$target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' STDMETHOD(COMGETTER(', $attrbasename, '))(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="public">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat(' STDMETHOD(COMSETTER(', $attrbasename, '))(')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="public">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitTargetBegin">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:variable name="attrbasename">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="capitalize">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="str" select="@name"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:variable>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat(' virtual HRESULT get', $attrbasename, '(')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:variable name="passAutoCaller">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="checkoption">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="option" select="'passcaller'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:variable>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="$passAutoCaller = 'true'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>AutoCaller &amp;aAutoCaller, </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir" select="'out'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>) = 0;
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat(' virtual HRESULT set', $attrbasename, '(')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="$passAutoCaller = 'true'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>AutoCaller &amp;aAutoCaller, </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir" select="'in'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>) = 0;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitTargetEnd">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template match="attribute" mode="code">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="topclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitTargetBegin">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="target" select="$target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="limitedAutoCaller">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="checkoption">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="option" select="'limitedcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="dtraceattrname">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="@dtracename">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="@dtracename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="$attrbasename"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMGETTER(', $attrbasename, ')(')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir" select="'out'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>)
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync{
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync LogRelFlow(("{%p} %s: enter </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>));
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync VirtualBoxBase::clearError();
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync HRESULT hrc;
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync try
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync {
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync CheckComArgOutPointerValidThrow(a</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="$attrbasename"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>);
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="dir" select="'out'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_ENTER('), $G_lowerCase, $G_upperCase)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>this);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#endif</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="$limitedAutoCaller = 'true'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>AutoLimitedCaller</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>AutoCaller</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> autoCaller(this);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync if (FAILED(autoCaller.rc()))
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync throw autoCaller.rc();
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat(' hrc = get', $attrbasename, '(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="passAutoCaller">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="checkoption">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="option" select="'passcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$passAutoCaller = 'true'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>autoCaller, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>this, hrc, 0 /*normal*/,</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:apply-templates select="@type" mode="dtraceparamval">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="dir">out</xsl:with-param>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = hrc2;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>this, hrc, 1 /*hrc exception*/,</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="dtraceparamvalnotmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir">out</xsl:with-param>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (...)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$attrbasename != 'MidlDoesNotLikEmptyInterfaces'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>this, hrc, 9 /*unhandled exception*/,</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="dtraceparamvalnotmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir">out</xsl:with-param>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> hrc=%Rhrc\n", this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::get', $dtraceattrname, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="dir" select="'out'"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:with-param name="isref" select="''"/>
45a24008fece0d2b499202e004c982f3a430651cvboxsync </xsl:apply-templates>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>, hrc));
45a24008fece0d2b499202e004c982f3a430651cvboxsync return hrc;
45a24008fece0d2b499202e004c982f3a430651cvboxsync}
45a24008fece0d2b499202e004c982f3a430651cvboxsync</xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
45a24008fece0d2b499202e004c982f3a430651cvboxsync <xsl:text>
45a24008fece0d2b499202e004c982f3a430651cvboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMSETTER(', $attrbasename, ')(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="public">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- @todo check in parameters if possible -->
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>)
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync{
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync LogRelFlow(("{%p} %s: enter </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="dir" select="'in'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="isref" select="''"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:apply-templates>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>\n", this, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::set', $attrbasename, '&quot;, ')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:apply-templates select="@type" mode="logparamval">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="dir" select="'in'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="isref" select="''"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:apply-templates>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBoxBase::clearError();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync HRESULT hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync try
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $topclass, '_SET_', $dtraceattrname, '_ENTER('), $G_lowerCase, $G_upperCase)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="dtraceparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir">in</xsl:with-param>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$limitedAutoCaller = 'true'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>AutoLimitedCaller</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>AutoCaller</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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, '(')"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$passAutoCaller = 'true'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>autoCaller, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>this, hrc, 0 /*normal*/,</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="dtraceparamval">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir">in</xsl:with-param>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#endif
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync }
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync catch (HRESULT hrc2)
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync {
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync hrc = hrc2;
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>this, hrc, 1 /*hrc exception*/,</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="dtraceparamvalnotmp">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir">in</xsl:with-param>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync#endif
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync }
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync catch (...)
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync {
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>this, hrc, 9 /*unhandled exception*/,</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="dtraceparamvalnotmp">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir">in</xsl:with-param>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync#endif
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync }
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync LogRelFlow(("{%p} %s: leave hrc=%Rhrc\n", this, </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::set', $attrbasename, '&quot;, ')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>hrc));
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync return hrc;
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync}
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="emitTargetEnd">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="target" select="$target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync Emit DTrace probes for the given attribute.
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync<xsl:template match="attribute" mode="dtrace-probes">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="topclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="dtracetopclass"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:param name="target"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:variable name="dtraceattrname">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="@dtracename">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="@dtracename"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <!-- attrbasename -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:call-template name="capitalize">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="str" select="@name"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:call-template>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:variable>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="@name != 'midlDoesNotLikEmptyInterfaces'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text> probe </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <!-- <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__enter(struct ', $topclass)"/> -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__enter(void')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text> *a_pThis);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync probe </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <!-- <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__return(struct ', $topclass, ' *a_pThis')"/> -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__return(void *a_pThis')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>, uint32_t a_hrc, int32_t enmWhy, </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir">out</xsl:with-param>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:if>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:if test="(not(@readonly) or @readonly!='yes') and @name != 'midlDoesNotLikEmptyInterfaces'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text> probe </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <!-- <xsl:value-of select="concat($topclass, '__set__', $dtraceattrname, '__enter(struct ', $topclass, ' *a_pThis, ')"/>-->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat($topclass, '__set__', $dtraceattrname, '__enter(void *a_pThis, ')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir" select="'in'"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync probe </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <!-- <xsl:value-of select="concat($dtracetopclass, '__set__', $dtraceattrname, '__return(struct ', $topclass, ' *a_pThis')"/> -->
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat($dtracetopclass, '__set__', $dtraceattrname, '__return(void *a_pThis')"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>, uint32_t a_hrc, int32_t enmWhy, </xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="@type" mode="dtraceparamdecl">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="dir">in</xsl:with-param>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:apply-templates>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:text>);
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync</xsl:text>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit all attributes of an interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitAttributes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="pmode"/>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- first recurse to emit all base interfaces -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="extends" select="$iface/@extends"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitAttributes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="//interface[@name=$extends]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="$pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='code'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>//
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('// ', $iface/@name, ' properties')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync//
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode = 'dtrace-probes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:otherwise>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:value-of select="concat($G_sNewLine, ' // ', $pmode, ' ', $iface/@name, ' properties', $G_sNewLine)"/>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="$pmode='public'">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:apply-templates select="$iface/attribute | $iface/if" mode="public">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:when test="$pmode='wrapped'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/attribute | $iface/if" mode="wrapped">
2708eaa62821078ffc3eaef2d5ca7dd31c8e1ba7vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='code'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/attribute | $iface/if" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode = 'dtrace-probes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/attribute | $iface/if" mode="dtrace-probes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="emitmode" select="'attribute'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitTargetBegin">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$target = 'xpidl'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#ifdef VBOX_WITH_XPCOM
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$target = 'midl'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#ifndef VBOX_WITH_XPCOM
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitTargetEnd">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$target = 'xpidl'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#endif /* VBOX_WITH_XPCOM */
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$target = 'midl'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#endif /* !VBOX_WITH_XPCOM */
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync emit method
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="method" mode="public">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitTargetBegin">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="target" select="$target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="methodindent">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="tospace">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="str" select="@name"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text> STDMETHOD(</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="capitalize">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="str" select="@name"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>)(</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:for-each select="param">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:apply-templates select="@type" mode="public">
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>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitTargetEnd">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="target" select="$target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync<xsl:template match="method" mode="wrapped">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="target"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="emitTargetBegin">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="target" select="$target"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="methodindent">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="tospace">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="str" select="@name"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="passAutoCaller">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="checkoption">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="option" select="'passcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$passAutoCaller = 'true'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>AutoCaller &amp;aAutoCaller</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="count(param) > 0">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$methodindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </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>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:text>) = 0;
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="emitTargetEnd">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="target" select="$target"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync</xsl:template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync<xsl:template match="method" mode="code">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="topclass"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="dtracetopclass"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:param name="target"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="emitTargetBegin">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="target" select="$target"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </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>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="methodclassindent">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="tospace">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="str" select="concat($topclass, @name)"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="methodbasename">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="capitalize">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="str" select="@name"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:call-template>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:variable name="limitedAutoCaller">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:call-template name="checkoption">
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="option" select="'limitedcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="dtracemethodname">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="@dtracename">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="@dtracename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="dtracenamehack"> <!-- Ugly hack to deal with Session::assignMachine and similar. -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="name(..) = 'if'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('__', ../@target)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::', $methodbasename, '(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="public">
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="$methodclassindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync{
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync LogRelFlow(("{%p} %s:enter</xsl:text>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <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"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="isref" select="'yes'"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </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"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync <xsl:with-param name="isref" select="'yes'"/>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </xsl:apply-templates>
1000fd01b52f6f6b49e4bbaf57903c1bf637a8aevboxsync </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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync#ifdef VBOX_WITH_DTRACE_R3_MAIN
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_ENTER('), $G_lowerCase, $G_upperCase)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>this</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:for-each select="param[@dir='in']">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text>, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="dtraceparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#endif
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$limitedAutoCaller = 'true'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>AutoLimitedCaller</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>AutoCaller</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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, '(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="passAutoCaller">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="checkoption">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="option" select="'passcaller'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$passAutoCaller = 'true'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>autoCaller</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="count(param) > 0">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$methodindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
<xsl:with-param name="dir" select="@dir"/>
</xsl:apply-templates>
<xsl:if test="not(position()=last())">
<xsl:text>,
</xsl:text>
<xsl:value-of select="$methodindent"/>
</xsl:if>
</xsl:for-each>
<xsl:text>);
#ifdef VBOX_WITH_DTRACE_R3_MAIN
</xsl:text>
<xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
<xsl:text>this, hrc, 0 /*normal*/</xsl:text>
<xsl:for-each select="param">
<xsl:text>, </xsl:text>
<xsl:apply-templates select="@type" mode="dtraceparamval">
<xsl:with-param name="dir" select="@dir"/>
</xsl:apply-templates>
</xsl:for-each>
<xsl:text>);
#endif
}
catch (HRESULT hrc2)
{
hrc = hrc2;
#ifdef VBOX_WITH_DTRACE_R3_MAIN
</xsl:text>
<xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
<xsl:text>this, hrc, 1 /*hrc exception*/</xsl:text>
<xsl:for-each select="param">
<xsl:text>, </xsl:text>
<xsl:apply-templates select="@type" mode="dtraceparamvalnotmp">
<xsl:with-param name="dir" select="@dir"/>
</xsl:apply-templates>
</xsl:for-each>
<xsl:text>);
#endif
}
catch (...)
{
hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
#ifdef VBOX_WITH_DTRACE_R3_MAIN
</xsl:text>
<xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
<xsl:text>this, hrc, 9 /*unhandled exception*/</xsl:text>
<xsl:for-each select="param">
<xsl:text>, </xsl:text>
<xsl:apply-templates select="@type" mode="dtraceparamvalnotmp">
<xsl:with-param name="dir" select="@dir"/>
</xsl:apply-templates>
</xsl:for-each>
<xsl:text>);
#endif
}
LogRelFlow(("{%p} %s: leave</xsl:text>
<xsl:for-each select="param">
<xsl:if test="@dir!='in'">
<xsl:text> </xsl:text>
<xsl:apply-templates select="@type" mode="logparamtext">
<xsl:with-param name="dir" select="@dir"/>
<xsl:with-param name="isref" select="''"/>
</xsl:apply-templates>
</xsl:if>
</xsl:for-each>
<xsl:text> hrc=%Rhrc\n", this</xsl:text>
<xsl:value-of select="concat(', &quot;', $topclass, '::', @name, '&quot;')"/>
<xsl:for-each select="param">
<xsl:if test="@dir!='in'">
<xsl:text>, </xsl:text>
<xsl:apply-templates select="@type" mode="logparamval">
<xsl:with-param name="dir" select="@dir"/>
<xsl:with-param name="isref" select="''"/>
</xsl:apply-templates>
</xsl:if>
</xsl:for-each>
<xsl:text>, hrc));
return hrc;
}
</xsl:text>
<xsl:call-template name="emitTargetEnd">
<xsl:with-param name="target" select="$target"/>
</xsl:call-template>
<xsl:text>
</xsl:text>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
Emits the DTrace probes for a method.
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template match="method" mode="dtrace-probes">
<xsl:param name="topclass"/>
<xsl:param name="dtracetopclass"/>
<xsl:param name="target"/>
<xsl:variable name="dtracemethodname">
<xsl:choose>
<xsl:when test="@dtracename">
<xsl:value-of select="@dtracename"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="dtracenamehack"> <!-- Ugly hack to deal with Session::assignMachine and similar. -->
<xsl:if test="name(..) = 'if'">
<xsl:value-of select="concat('__', ../@target)"/>
</xsl:if>
</xsl:variable>
<xsl:text> probe </xsl:text>
<!-- <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__enter(struct ', $dtracetopclass, ' *a_pThis')"/> -->
<xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__enter(void *a_pThis')"/>
<xsl:for-each select="param[@dir='in']">
<xsl:text>, </xsl:text>
<xsl:apply-templates select="@type" mode="dtraceparamdecl">
<xsl:with-param name="dir" select="'@dir'"/>
</xsl:apply-templates>
</xsl:for-each>
<xsl:text>);
probe </xsl:text>
<!-- <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, '__return(struct ', $dtracetopclass, ' *a_pThis')"/> -->
<xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__return(void *a_pThis')"/>
<xsl:text>, uint32_t a_hrc, int32_t enmWhy</xsl:text>
<xsl:for-each select="param">
<xsl:text>, </xsl:text>
<xsl:apply-templates select="@type" mode="dtraceparamdecl">
<xsl:with-param name="dir" select="'@dir'"/>
</xsl:apply-templates>
</xsl:for-each>
<xsl:text>);
</xsl:text>
</xsl:template>
<xsl:template name="emitIf">
<xsl:param name="passmode"/>
<xsl:param name="target"/>
<xsl:param name="topclass"/>
<xsl:param name="emitmode"/>
<xsl:param name="dtracetopclass"/>
<xsl:if test="($target = 'xpidl') or ($target = 'midl')">
<xsl:choose>
<xsl:when test="$generating != 'filelist'">
<xsl:choose>
<xsl:when test="$passmode='public'">
<xsl:choose>
<xsl:when test="$emitmode='method'">
<xsl:apply-templates select="method" mode="public">
<xsl:with-param name="target" select="$target"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$emitmode='attribute'">
<xsl:apply-templates select="attribute" mode="public">
<xsl:with-param name="target" select="$target"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:when>
<xsl:when test="$passmode='wrapped'">
<xsl:choose>
<xsl:when test="$emitmode='method'">
<xsl:apply-templates select="method" mode="wrapped">
<xsl:with-param name="target" select="$target"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$emitmode='attribute'">
<xsl:apply-templates select="attribute" mode="wrapped">
<xsl:with-param name="target" select="$target"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:when>
<xsl:when test="$passmode='code'">
<xsl:choose>
<xsl:when test="$emitmode='method'">
<xsl:apply-templates select="method" mode="code">
<xsl:with-param name="target" select="$target"/>
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$emitmode='attribute'">
<xsl:apply-templates select="attribute" mode="code">
<xsl:with-param name="target" select="$target"/>
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:when>
<xsl:when test="$passmode = 'dtrace-probes'">
<xsl:choose>
<xsl:when test="$emitmode = 'method'">
<xsl:apply-templates select="method" mode="dtrace-probes">
<xsl:with-param name="target" select="$target"/>
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$emitmode = 'attribute'">
<xsl:apply-templates select="attribute" mode="dtrace-probes">
<xsl:with-param name="target" select="$target"/>
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template match="if" mode="public">
<xsl:param name="emitmode"/>
<xsl:call-template name="emitIf">
<xsl:with-param name="passmode" select="'public'"/>
<xsl:with-param name="target" select="@target"/>
<xsl:with-param name="emitmode" select="$emitmode"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="if" mode="wrapped">
<xsl:param name="emitmode"/>
<xsl:call-template name="emitIf">
<xsl:with-param name="passmode" select="'wrapped'"/>
<xsl:with-param name="target" select="@target"/>
<xsl:with-param name="emitmode" select="$emitmode"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="if" mode="code">
<xsl:param name="topclass"/>
<xsl:param name="emitmode"/>
<xsl:param name="dtracetopclass"/>
<xsl:call-template name="emitIf">
<xsl:with-param name="passmode" select="'code'"/>
<xsl:with-param name="target" select="@target"/>
<xsl:with-param name="emitmode" select="$emitmode"/>
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="if" mode="dtrace-probes">
<xsl:param name="topclass"/>
<xsl:param name="emitmode"/>
<xsl:param name="dtracetopclass"/>
<xsl:call-template name="emitIf">
<xsl:with-param name="passmode" select="'dtrace-probes'"/>
<xsl:with-param name="target" select="@target"/>
<xsl:with-param name="emitmode" select="$emitmode"/>
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
</xsl:call-template>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
emit all methods of an interface
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template name="emitMethods">
<xsl:param name="iface"/>
<xsl:param name="topclass"/>
<xsl:param name="pmode"/>
<xsl:param name="dtracetopclass"/>
<!-- first recurse to emit all base interfaces -->
<xsl:variable name="extends" select="$iface/@extends"/>
<xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
<xsl:call-template name="emitMethods">
<xsl:with-param name="iface" select="//interface[@name=$extends]"/>
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="pmode" select="$pmode"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
</xsl:call-template>
</xsl:if>
<xsl:choose>
<xsl:when test="$pmode='code'">
<xsl:text>//
</xsl:text>
<xsl:value-of select="concat('// ', $iface/@name, ' methods')"/>
<xsl:text>
//
</xsl:text>
</xsl:when>
<xsl:when test="$pmode='dtrace-probes'"/>
<xsl:otherwise>
<xsl:value-of select="concat($G_sNewLine, ' // ', $pmode, ' ', $iface/@name, ' methods', $G_sNewLine)"/>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$pmode='public'">
<xsl:apply-templates select="$iface/method | $iface/if" mode="public">
<xsl:with-param name="emitmode" select="'method'"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$pmode='wrapped'">
<xsl:apply-templates select="$iface/method | $iface/if" mode="wrapped">
<xsl:with-param name="emitmode" select="'method'"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$pmode='code'">
<xsl:apply-templates select="$iface/method | $iface/if" mode="code">
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
<xsl:with-param name="emitmode" select="'method'"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test="$pmode='dtrace-probes'">
<xsl:apply-templates select="$iface/method | $iface/if" mode="dtrace-probes">
<xsl:with-param name="topclass" select="$topclass"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
<xsl:with-param name="emitmode" select="'method'"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
emit all attributes and methods declarations of an interface
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template name="emitInterfaceDecls">
<xsl:param name="iface"/>
<xsl:param name="pmode"/>
<!-- attributes -->
<xsl:call-template name="emitAttributes">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="pmode" select="$pmode"/>
</xsl:call-template>
<!-- methods -->
<xsl:call-template name="emitMethods">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="pmode" select="$pmode"/>
</xsl:call-template>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
emit auxiliary method declarations of an interface
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template name="emitAuxMethodDecls">
<xsl:param name="iface"/>
<!-- currently nothing, maybe later some generic FinalConstruct/... helper declaration for ComObjPtr -->
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
emit the header file of an interface
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template name="emitHeader">
<xsl:param name="iface"/>
<xsl:param name="addinterfaces"/>
<xsl:if test="$generating != 'headers'"> <!-- Paranoia -->
<xsl:message terminate="yes">
Did not expect generating='<xsl:value-of select="$generating"/>' in the emitHeader template.
</xsl:message>
</xsl:if>
<xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.h')"/>
<xsl:apply-templates select="$iface" mode="startfile">
<xsl:with-param name="file" select="$filename"/>
</xsl:apply-templates>
<xsl:call-template name="fileheader">
<xsl:with-param name="name" select="$filename"/>
<xsl:with-param name="class" select="substring(@name, 2)"/>
<xsl:with-param name="type" select="'header'"/>
</xsl:call-template>
<xsl:apply-templates select="$iface" mode="classheader">
<xsl:with-param name="addinterfaces" select="$addinterfaces"/>
</xsl:apply-templates>
<!-- interface attributes/methods (public) -->
<xsl:call-template name="emitInterfaceDecls">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="pmode" select="'public'"/>
</xsl:call-template>
<xsl:for-each select="exsl:node-set($addinterfaces)/token">
<!-- This is super tricky, as the for-each switches to the node
set, which means the normal document isn't available any
more. So need to use the global root node to get back into
the documemt to find corresponding interface data. -->
<xsl:variable name="addifname">
<xsl:value-of select="string(.)"/>
</xsl:variable>
<xsl:call-template name="emitInterfaceDecls">
<xsl:with-param name="iface" select="$G_root//interface[@name=$addifname]"/>
<xsl:with-param name="pmode" select="'public'"/>
</xsl:call-template>
</xsl:for-each>
<!-- auxiliary methods (public) -->
<xsl:call-template name="emitAuxMethodDecls">
<xsl:with-param name="iface" select="$iface"/>
</xsl:call-template>
<!-- switch to private -->
<xsl:text>
private:</xsl:text>
<!-- wrapped interface attributes/methods (private) -->
<xsl:call-template name="emitInterfaceDecls">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="pmode" select="'wrapped'"/>
</xsl:call-template>
<xsl:for-each select="exsl:node-set($addinterfaces)/token">
<!-- This is super tricky, as the for-each switches to the node
set, which means the normal document isn't available any
more. So need to use the global root node to get back into
the documemt to find corresponding interface data. -->
<xsl:variable name="addifname">
<xsl:value-of select="string(.)"/>
</xsl:variable>
<xsl:call-template name="emitInterfaceDecls">
<xsl:with-param name="iface" select="$G_root//interface[@name=$addifname]"/>
<xsl:with-param name="pmode" select="'wrapped'"/>
</xsl:call-template>
</xsl:for-each>
<xsl:apply-templates select="$iface" mode="classfooter"/>
<xsl:apply-templates select="$iface" mode="endfile">
<xsl:with-param name="file" select="$filename"/>
</xsl:apply-templates>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
emit all attributes and methods definitions (pmode=code) or probes (pmode=dtrace-probes) of an interface
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template name="emitInterfaceDefs">
<xsl:param name="iface"/>
<xsl:param name="addinterfaces"/>
<xsl:param name="pmode" select="'code'"/>
<xsl:if test="$pmode = 'code'">
<xsl:value-of select="concat('DEFINE_EMPTY_CTOR_DTOR(', substring($iface/@name, 2), 'Wrap)', $G_sNewLine, $G_sNewLine)"/>
</xsl:if>
<xsl:variable name="dtracetopclass">
<xsl:choose>
<xsl:when test="$iface/@dtracename"><xsl:value-of select="$iface/@dtracename"/></xsl:when>
<xsl:otherwise><xsl:value-of select="substring($iface/@name, 2)"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- attributes -->
<xsl:call-template name="emitAttributes">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="topclass" select="substring($iface/@name, 2)"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
<xsl:with-param name="pmode" select="$pmode"/>
</xsl:call-template>
<xsl:for-each select="exsl:node-set($addinterfaces)/token">
<!-- This is super tricky, as the for-each switches to the node set,
which means the normal document isn't available any more. So need
to use the global root node to get back into the documemt to find
corresponding interface data. -->
<xsl:variable name="addifname">
<xsl:value-of select="string(.)"/>
</xsl:variable>
<xsl:call-template name="emitAttributes">
<xsl:with-param name="iface" select="$G_root//interface[@name=$addifname]"/>
<xsl:with-param name="topclass" select="substring($iface/@name, 2)"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
<xsl:with-param name="pmode" select="$pmode"/>
</xsl:call-template>
</xsl:for-each>
<!-- methods -->
<xsl:call-template name="emitMethods">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="topclass" select="substring($iface/@name, 2)"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
<xsl:with-param name="pmode" select="$pmode"/>
</xsl:call-template>
<xsl:for-each select="exsl:node-set($addinterfaces)/token">
<!-- This is super tricky, as the for-each switches to the node set,
which means the normal document isn't available any more. So need
to use the global root node to get back into the documemt to find
corresponding interface data. -->
<xsl:variable name="addifname">
<xsl:value-of select="string(.)"/>
</xsl:variable>
<xsl:call-template name="emitMethods">
<xsl:with-param name="iface" select="$G_root//interface[@name=$addifname]"/>
<xsl:with-param name="topclass" select="substring($iface/@name, 2)"/>
<xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
<xsl:with-param name="pmode" select="$pmode"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
emit auxiliary method declarations of an interface
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template name="emitAuxMethodDefs">
<xsl:param name="iface"/>
<xsl:param name="pmode" select="'code'"/>
<!-- currently nothing, maybe later some generic FinalConstruct/... implementation -->
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
emit the code file of an interface
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template name="emitCode">
<xsl:param name="iface"/>
<xsl:param name="addinterfaces"/>
<xsl:if test="$generating != 'sources'"> <!-- Paranoia -->
<xsl:message terminate="yes">
Did not expect generating='<xsl:value-of select="$generating"/>' in the emitCode template.
</xsl:message>
</xsl:if>
<xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.cpp')"/>
<xsl:apply-templates select="$iface" mode="startfile">
<xsl:with-param name="file" select="$filename"/>
</xsl:apply-templates>
<xsl:call-template name="fileheader">
<xsl:with-param name="name" select="$filename"/>
<xsl:with-param name="class" select="substring(@name, 2)"/>
<xsl:with-param name="type" select="'code'"/>
</xsl:call-template>
<xsl:apply-templates select="$iface" mode="codeheader">
<xsl:with-param name="addinterfaces" select="$addinterfaces"/>
</xsl:apply-templates>
<!-- interface attributes/methods (public) -->
<xsl:call-template name="emitInterfaceDefs">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="addinterfaces" select="$addinterfaces"/>
</xsl:call-template>
<!-- auxiliary methods (public) -->
<xsl:call-template name="emitAuxMethodDefs">
<xsl:with-param name="iface" select="$iface"/>
</xsl:call-template>
<xsl:apply-templates select="$iface" mode="codefooter">
<xsl:with-param name="addinterfaces" select="$addinterfaces"/>
</xsl:apply-templates>
<xsl:apply-templates select="$iface" mode="endfile">
<xsl:with-param name="file" select="$filename"/>
</xsl:apply-templates>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
emit the DTrace probes for an interface
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template name="emitDTraceProbes">
<xsl:param name="iface"/>
<xsl:param name="addinterfaces"/>
<xsl:if test="$generating != 'dtrace-probes'"> <!-- Paranoia -->
<xsl:message terminate="yes">
Did not expect generating='<xsl:value-of select="$generating"/>' in the emitDTraceProbes template.
</xsl:message>
</xsl:if>
<!-- interface attributes/methods (public) -->
<xsl:call-template name="emitInterfaceDefs">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="addinterfaces" select="$addinterfaces"/>
<xsl:with-param name="pmode">dtrace-probes</xsl:with-param>
</xsl:call-template>
<!-- auxiliary methods (public) -->
<xsl:call-template name="emitAuxMethodDefs">
<xsl:with-param name="iface" select="$iface"/>
<xsl:with-param name="pmode">dtrace-probes</xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
wildcard match, ignore everything which has no explicit match
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template match="*"/>
<!-- - - - - - - - - - - - - - - - - - - - - - -
ignore all if tags except those for XPIDL or MIDL target
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template match="if">
<xsl:if test="(@target = 'xpidl') or (@target = 'midl')">
<xsl:apply-templates/>
</xsl:if>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
interface match
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template match="interface">
<xsl:if test="not(@internal='yes') and not(@supportsErrorInfo='no')">
<xsl:call-template name="emitInterface">
<xsl:with-param name="iface" select="."/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
library match
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template match="library">
<xsl:apply-templates/>
</xsl:template>
<!-- - - - - - - - - - - - - - - - - - - - - - -
root match
- - - - - - - - - - - - - - - - - - - - - - -->
<xsl:template match="/idl">
<xsl:choose>
<xsl:when test="$generating = 'filelist'">
<xsl:value-of select="concat($filelistonly, ' := \', $G_sNewLine)"/>
<xsl:apply-templates/>
</xsl:when>
<xsl:when test="$generating = 'headers'">
<xsl:apply-templates/>
</xsl:when>
<xsl:when test="$generating = 'sources'">
<xsl:apply-templates/>
</xsl:when>
<xsl:when test="$generating = 'dtrace-probes'">
<xsl:apply-templates/>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">
Unknown string parameter value: generating='<xsl:value-of select="$generating"/>'
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
<!-- vi: set tabstop=4 shiftwidth=4 expandtab: -->