apiwrap-server.xsl revision ec6ba6b64e8a0b6d09b24676d70d414e00c99ebb
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
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync Copyright (C) 2010-2014 Oracle Corporation
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync This file is part of VirtualBox Open Source Edition (OSE), as
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync available from http://www.virtualbox.org. This file is free software;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync you can redistribute it and/or modify it under the terms of the GNU
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync General Public License (GPL) as published by the Free Software
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync Foundation, in version 2 as it comes in the "COPYING" file of the
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBox OSE distribution. VirtualBox OSE is distributed in the
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync-->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl: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
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, ' \&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="startfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="file"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&#10;// ##### BEGINFILE &quot;', $file, '&quot;&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="endfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="file"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&#10;// ##### ENDFILE &quot;', $file, '&quot;&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsynctemplates for file headers/footers
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="fileheader">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="class"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>/** @file
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync *
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' * VirtualBox API class wrapper ', $type, ' for I', $class, '.')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync *
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * DO NOT EDIT! This is a generated file.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * Generated from: src/VBox/Main/idl/VirtualBox.xidl
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * Generator: src/VBox/Main/idl/apiwrap-server.xsl
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync */
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync/**
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync * Copyright (C) 2010-2014 Oracle Corporation
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync *
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * available from http://www.virtualbox.org. This file is free software;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * you can redistribute it and/or modify it under the terms of the GNU
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * General Public License (GPL) as published by the Free Software
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync */
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitCOMInterfaces">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' COM_INTERFACE_ENTRY(', $iface/@name, ')&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- now recurse to emit all base interfaces -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="extends" select="$iface/@extends"/>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync <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:value-of select="concat('#ifndef ', substring(@name, 2), 'Wrap_H_&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#define ', substring(@name, 2), 'Wrap_H_')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#include "VirtualBoxBase.h"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync#include "Wrapper.h"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('class ATL_NO_VTABLE ', substring(@name, 2), 'Wrap:')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync public VirtualBoxBase,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' VBOX_SCRIPTABLE_IMPL(', @name, ')&#10;')"/>
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, ')&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' DECLARE_NOT_AGGREGATABLE(', substring(@name, 2), 'Wrap)&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> DECLARE_PROTECT_FINAL_CONSTRUCT()
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' BEGIN_COM_MAP(', substring(@name, 2), 'Wrap)&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> COM_INTERFACE_ENTRY(ISupportErrorInfo)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitCOMInterfaces">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' COM_INTERFACE_ENTRY2(IDispatch, ', @name, ')&#10;')"/>
dcc162af9a2a47325b89f457ed215957415d3d3avboxsync <xsl:text> COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
dcc162af9a2a47325b89f457ed215957415d3d3avboxsync END_COM_MAP()
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' DECLARE_EMPTY_CTOR_DTOR(', substring(@name, 2), 'Wrap)&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="classfooter">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>};
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#endif // !', substring(@name, 2), 'Wrap_H_&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="codeheader">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#define LOG_GROUP_MAIN_OVERRIDE LOG_GROUP_MAIN_', translate(substring(@name, 2), $G_lowerCase, $G_upperCase), '&#10;&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('#include &quot;', substring(@name, 2), 'Wrap.h&quot;&#10;')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>#include "Logging.h"
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync<xsl:template name="emitISupports">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="classname"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="extends"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="depth"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:param name="interfacelist"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:choose>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync <xsl:when test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:variable name="newextends" select="//interface[@name=$extends]/@extends"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:variable name="newiflist" select="concat($interfacelist, ', ', $extends)"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:call-template name="emitISupports">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="classname" select="$classname"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="extends" select="$newextends"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="depth" select="$depth + 1"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="interfacelist" select="$newiflist"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:call-template>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:when>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:otherwise>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:value-of select="concat('NS_IMPL_THREADSAFE_ISUPPORTS', $depth, '_CI(', $classname, ', ', $interfacelist, ')&#10;')"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:otherwise>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:choose>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync</xsl:template>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface" mode="codefooter">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#ifdef VBOX_WITH_XPCOM
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:value-of select="concat('NS_DECL_CLASSINFO(', substring(@name, 2), 'Wrap)&#10;')"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:call-template name="emitISupports">
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="classname" select="concat(substring(@name, 2), 'Wrap')"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="extends" select="@extends"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="depth" select="1"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync <xsl:with-param name="interfacelist" select="@name"/>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync </xsl:call-template>
c9ffb32f7bfe2b467ba3ae35d640ac7b97e50a30vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>#endif // VBOX_WITH_XPCOM
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync templates for dealing with names and parameters
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="str"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="translate($str, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_', ' ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync<xsl:template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:param name="optionlist"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:param name="option"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="string-length($option) > 0 and contains(concat(',', translate($optionlist, ' ', ''), ','), concat(',', $option, ','))"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync</xsl:template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatepublictype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
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="$type='wstring' or $type='uuid'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>IN_BSTR</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>BSTR</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="string-length($gluetypefield)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$gluetypefield"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//enum[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($type, '_T')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>IUnknown *</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//interface[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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 <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>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$mod='ptr'">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text> *</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatewrappedtype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- 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="$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 <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 <xsl:when test="string-length($wraptypefield)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$wraptypefield"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//enum[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($type, '_T')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
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 <xsl:when test="//interface[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('ComPtr&lt;', $thatifname, '&gt; &amp;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
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>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$mod='ptr'">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:text> *</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="translatefmtspectype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="type"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="mod"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="safearray"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- get C format string for IDL type from table in typemap-shared.inc.xsl -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="wrapfmt" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluefmt"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="$mod='ptr' or ($isref='yes' and $dir!='in')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%p</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%zu</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="string-length($wrapfmt)">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$wrapfmt"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//enum[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%RU32</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%p</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="//interface[@name=$type]">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>%p</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="fatalError">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="msg" select="concat('translatefmtcpectype: Type &quot;', $type, '&quot; is not supported.')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync templates for handling entire interfaces and their contents
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync - - - - - - - - - - - - - - - - - - - - - - -->
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync<xsl:template name="emitInterface">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="iface"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:call-template name="emitHeader">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="iface" select="$iface"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:call-template>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:call-template name="emitCode">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="iface" select="$iface"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync </xsl:call-template>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync</xsl:template>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync
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"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$gluetype"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="'*'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
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:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="')'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="wraptype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="translatewrappedtype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="safearray" select="../@safearray"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>const </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>std::vector&lt;</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
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
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="substring($wraptype2,string-length($wraptype2))='&gt;'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($wraptype2, ' ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$isref!='yes' and ($dir='out' or $dir='ret')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>*</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>=</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="translatefmtspectype">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="$dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="safearray" select="../@safearray"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="$isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:param name="isref"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="../@safearray='yes' and $isref!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArraySize(</xsl:text>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="$isref!='yes' and $dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>*</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="$isref!='yes' and $dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>*</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="../@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:when test="../@safearray='yes' and $isref!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute/@type | param/@type" mode="paramvalconversion">
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"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="mod" select="../@mod"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="type" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="thatif" select="../../../..//interface[@name=$type]"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>Array</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComTypeInConverter&lt;IUnknown&gt;(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComTypeOutConverter&lt;IUnknown&gt;(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayInArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayOutArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$thatif">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>Array</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="thatifname" select="$thatif/@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComTypeInConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComTypeOutConverter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&lt;', $thatifname, '&gt;(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayInArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayOutArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
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'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>BSTRInConverter(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>BSTROutConverter(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayInArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayOutArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
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>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayInArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayOutArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <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:value-of select="concat('&lt;', $gluetype, '&gt;(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$dir='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayInArg(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>ComSafeArrayOutArg(</xsl:text>
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:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='$unknown' or $thatif">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)).array()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>).ptr()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='wstring'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)).array()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>).str()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$type='uuid'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)).array()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>).uuid()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="../@safearray='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)).array()</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit attribute
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute" mode="public">
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
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' STDMETHOD(COMSETTER(', $attrbasename, '))(')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="public">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="attrbasename">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' virtual HRESULT get', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="passAutoCaller">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:call-template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:variable>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>AutoCaller &amp;aAutoCaller, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>) = 0;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' virtual HRESULT set', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>AutoCaller &amp;aAutoCaller, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>) = 0;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="attribute" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="topclass"/>
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('STDMETHODIMP ', $topclass, 'Wrap::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{
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: enter </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>\n", this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::get', $attrbasename, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBoxBase::clearError();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync HRESULT hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync try
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync CheckComArgOutPointerValidThrow(a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$attrbasename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync AutoCaller autoCaller(this);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync if (FAILED(autoCaller.rc()))
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync throw autoCaller.rc();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' hrc = get', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="passAutoCaller">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:call-template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:variable>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>autoCaller, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = hrc2;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (...)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: leave </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> hrc=%Rhrc\n", this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::get', $attrbasename, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'out'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, hrc));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync return hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync}
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(@readonly) or @readonly!='yes'">
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 -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync{
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: enter </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>\n", this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::set', $attrbasename, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBoxBase::clearError();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync HRESULT hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync try
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync AutoCaller autoCaller(this);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync if (FAILED(autoCaller.rc()))
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync throw autoCaller.rc();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' hrc = set', $attrbasename, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>autoCaller, </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="'in'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = hrc2;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (...)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: leave hrc=%Rhrc\n", this, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&quot;', $topclass, '::set', $attrbasename, '&quot;, ')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>hrc));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync return hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync}
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </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="pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- first recurse to emit all base interfaces -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="extends" select="$iface/@extends"/>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync <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: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:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&#10; // ', $pmode, ' ', $iface/@name, ' properties&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='public'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/attribute" mode="public"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='wrapped'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/attribute" mode="wrapped"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='code'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/attribute" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit method
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="method" mode="public">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodindent">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> STDMETHOD(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>)(</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
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="$methodindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="method" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodindent">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> virtual HRESULT </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="uncapitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>(</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="passAutoCaller">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:call-template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:variable>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>AutoCaller &amp;aAutoCaller</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="count(param) > 0">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>,
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="$methodindent"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="wrapped">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="not(position()=last())">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>,
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="$methodindent"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>) = 0;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="method" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodindent">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodclassindent">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="tospace">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="concat($topclass, @name)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="methodbasename">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:variable>
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>)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync{
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s:enter</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>\n", this</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(', &quot;', $topclass, '::', @name, '&quot;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="'yes'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync VirtualBoxBase::clearError();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync HRESULT hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync try
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- @todo check in parameters if possible -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="@dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> CheckComArgOutPointerValidThrow(a</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="capitalize">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="str" select="@name"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync AutoCaller autoCaller(this);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync if (FAILED(autoCaller.rc()))
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync throw autoCaller.rc();
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(' hrc = ', @name, '(')"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:variable name="passAutoCaller">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:call-template name="checkoption">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:with-param name="option" select="'passcaller'"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:call-template>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:variable>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="$passAutoCaller = 'true'">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>autoCaller</xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:if test="count(param) > 0">
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:text>,
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:text>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync <xsl:value-of select="$methodindent"/>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
9f3a515a29d45728a5c5330459abd3429e35bda1vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="paramvalconversion">
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 }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (HRESULT hrc2)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = hrc2;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync catch (...)
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync {
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync }
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync LogRelFlow(("{%p} %s: leave</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="@dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamtext">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text> hrc=%Rhrc\n", this</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat(', &quot;', $topclass, '::', @name, '&quot;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:for-each select="param">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="@dir!='in'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, </xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="@type" mode="logparamval">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="dir" select="@dir"/>
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:with-param name="isref" select="''"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:for-each>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>, hrc));
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync return hrc;
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync}
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit all methods of an interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitMethods">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- first recurse to emit all base interfaces -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="extends" select="$iface/@extends"/>
681bb0bf6e9ab5a590d8afcdf37634e2fc29f595vboxsync <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitMethods">
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: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, ' methods')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync//
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('&#10; // ', $pmode, ' ', $iface/@name, ' methods&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='public'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/method" mode="public"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='wrapped'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/method" mode="wrapped"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$pmode='code'">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface/method" mode="code">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="$topclass"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit all attributes and methods declarations of an interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitInterfaceDecls">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- attributes -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitAttributes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="$pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- methods -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitMethods">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="$pmode"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit auxiliary method declarations of an interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitAuxMethodDecls">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- currently nothing, maybe later some generic FinalConstruct/... helper declaration for ComObjPtr -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit the header file of an interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitHeader">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.h')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$filelistonly=''">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface" mode="startfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="file" select="$filename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="fileheader">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="name" select="$filename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="class" select="substring(@name, 2)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="type" select="'header'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="." mode="classheader"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- interface attributes/methods (public) -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitInterfaceDecls">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="'public'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- auxiliary methods (public) -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitAuxMethodDecls">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- switch to private -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsyncprivate:</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- wrapped interface attributes/methods (private) -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitInterfaceDecls">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="'wrapped'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="." mode="classfooter"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface" mode="endfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="file" select="$filename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface" mode="listfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="file" select="$filename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit all attributes and methods definitions of an interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitInterfaceDefs">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat('DEFINE_EMPTY_CTOR_DTOR(', substring($iface/@name, 2), 'Wrap)&#10;&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- attributes -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitAttributes">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="substring($iface/@name, 2)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="'code'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- methods -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitMethods">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="topclass" select="substring($iface/@name, 2)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="pmode" select="'code'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit auxiliary method declarations of an interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitAuxMethodDefs">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- currently nothing, maybe later some generic FinalConstruct/... implementation -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync emit the code file of an interface
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template name="emitCode">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:param name="iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.cpp')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$filelistonly=''">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface" mode="startfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="file" select="$filename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="fileheader">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="name" select="$filename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="class" select="substring(@name, 2)"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="type" select="'code'"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="." mode="codeheader"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- @todo special thread logging for API methods returning IProgress??? would be very usefulcurrently nothing, maybe later some generic FinalConstruct/... implementation -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- interface attributes/methods (public) -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitInterfaceDefs">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <!-- auxiliary methods (public) -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:call-template name="emitAuxMethodDefs">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="$iface"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="." mode="codefooter"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface" mode="endfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="file" select="$filename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates select="$iface" mode="listfile">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="file" select="$filename"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:apply-templates>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync wildcard match, ignore everything which has no explicit match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="*"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync ignore all if tags except those for XPIDL or MIDL target
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="if">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:if test="(@target = 'xpidl') or (@target = 'midl')">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync interface match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="interface">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:if test="not(@internal='yes') and not(@supportsErrorInfo='no')">
ec6ba6b64e8a0b6d09b24676d70d414e00c99ebbvboxsync <xsl:call-template name="emitInterface">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:with-param name="iface" select="."/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:call-template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:if>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync library match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="library">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync root match
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<xsl:template match="/idl">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$filelistonly=''">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:value-of select="concat($filelistonly, ' := \&#10;')"/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:apply-templates/>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:when test="$filelistonly=''">
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:when>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync <xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:text>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:otherwise>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync </xsl:choose>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:template>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync</xsl:stylesheet>
c0d22c23d3289cef0332f4d61ab15df48ed34979vboxsync<!-- vi: set tabstop=4 shiftwidth=4 expandtab: -->