websrv-cpp.xsl revision 2738bcf18cad2bbc505529d49a8e0f60b79c0c35
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<?xml version="1.0"?>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync websrv-cpp.xsl:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync XSLT stylesheet that generates methodmaps.cpp from
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync VirtualBox.xidl. This generated C++ code contains
e64031e20c39650a7bc902a3e1aba613b9415deevboxsync all the service implementations that one would
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync normally have to implement manually to create a
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync web service; our generated code automatically maps
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync all SOAP calls into COM/XPCOM method calls.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync See webservice/Makefile.kmk for an overview of all the things
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync generated for the webservice.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync Copyright (C) 2006-2010 Oracle Corporation
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync This file is part of VirtualBox Open Source Edition (OSE), as
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync available from http://www.virtualbox.org. This file is free software;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync you can redistribute it and/or modify it under the terms of the GNU
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync General Public License (GPL) as published by the Free Software
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync Foundation, in version 2 as it comes in the "COPYING" file of the
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync VirtualBox OSE distribution. VirtualBox OSE is distributed in the
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:stylesheet
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync version="1.0"
3d0f3ca0cd1069534be3ea175f883f1f53b69bdbvboxsync xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync xmlns:xsd="http://www.w3.org/2001/XMLSchema"
ba6206b9b2f863489c4b95178af0dbda929f6cc1vboxsync xmlns:exsl="http://exslt.org/common"
ba6206b9b2f863489c4b95178af0dbda929f6cc1vboxsync extension-element-prefixes="exsl">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:output method="text"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:strip-space elements="*"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync global XSLT variables
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:variable name="G_xsltFilename" select="'websrv-cpp.xsl'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:include href="websrv-shared.inc.xsl" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- collect all interfaces with "wsmap='suppress'" in a global variable for
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync quick lookup -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:variable name="G_setSuppressedInterfaces"
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync select="//interface[@wsmap='suppress']" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync root match
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="/idl">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text><![CDATA[
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/* DO NOT EDIT! This is a generated file.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Generated from: src/VBox/Main/idl/VirtualBox.xidl (VirtualBox's interface definitions in XML)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Generator: src/VBox/Main/webservice/websrv-cpp.xsl
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync// shared webservice header
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include "vboxweb.h"
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync// vbox headers
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <VBox/com/com.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <VBox/com/array.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <VBox/com/ErrorInfo.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <VBox/com/errorprint.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <VBox/com/EventQueue.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <VBox/VRDPAuth.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <VBox/version.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <iprt/assert.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <iprt/initterm.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <iprt/stream.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include <iprt/string.h>
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync// gSOAP headers (must come after vbox includes because it checks for conflicting defs)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#include "soapH.h"
db328d9a0c557c268222858740db4860d4f22a95vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync// standard headers
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#include <map>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#include <sstream>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync// shared strings for debug output
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncconst char *g_pcszCallingComMethod = " calling COM method %s\n";
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncconst char *g_pcszDoneCallingComMethod = " done calling COM method\n";
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncconst char *g_pcszConvertComOutputBack = " convert COM output \"%s\" back to caller format\n";
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncconst char *g_pcszDoneConvertingComOutputBack = " done converting COM output \"%s\" back to caller format\n";
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncconst char *g_pcszEntering = "\n-- entering %s\n";
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncconst char *g_pcszLeaving = "-- leaving %s, rc: 0x%lX (%d)\n";
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync// generated string constants for all interface names
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncconst char *g_pcszIUnknown = "IUnknown";
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync]]></xsl:text>
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="//interface">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="ifname" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('const char *g_pcsz', $ifname, ' = &quot;', $ifname, '&quot;;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:apply-templates />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync if
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * ignore all |if|s except those for WSDL target
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="if">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="@target='wsdl'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:apply-templates/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync cpp
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="cpp">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- ignore this -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync library
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="library">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/****************************************************************************
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync *
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * types: enum converter helper functions
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync *
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync ****************************************************************************/
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync </xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync enum converter functions at top of file
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="//enum">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="enumname" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- generate enum converter for COM-to-SOAP -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('vbox__', $enumname, ' ', $G_funcPrefixOutputEnumConverter, $enumname, '(', $enumname, '_T e)')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>{</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' vbox__', $enumname, ' v;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> switch(e)</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> {</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="const[not(@wsmap='suppress')]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="enumconst" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' case ', $enumname, '_', $enumconst, ':')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' v = vbox__', $enumname, '__')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- escape all "_" in $enumconst -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="escapeUnderscores">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="string" select="$enumconst" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="';'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>break;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- Add a default case so gcc gives us a rest, esp. on darwin. -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>default:</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> AssertMsgFailed(("e=%d\n", (int)e));</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' v = (vbox__', $enumname, ')0x7fffdead;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>break; </xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> }</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> return v;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>}</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- generate enum converter for SOAP-to-COM -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat($enumname, '_T ', $G_funcPrefixInputEnumConverter, $enumname, '(vbox__', $enumname, ' v)')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>{</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' ', $enumname, '_T e;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> switch(v)</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> {</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="const[not(@wsmap='suppress')]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="enumconst" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' case vbox__', $enumname, '__')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- escape all "_" in $enumconst -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="escapeUnderscores">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="string" select="$enumconst" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="':'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' e = ', $enumname, '_', $enumconst, ';')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>break;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- Insert a default case so gcc gives us a rest, esp. on darwin. -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>default:</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> AssertMsgFailed(("v=%d\n", (int)v));</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' e = (', $enumname, '_T)0x7fffbeef;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>break; </xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> }</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> return e;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:text>}</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/****************************************************************************
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync *
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * types: struct converter helper functions
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync *
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync ****************************************************************************/
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="//interface[@wsmap='struct']">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="structname" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('// ', $structname, ' converter: called from method mappers to convert data from')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('// COM interface ', $structname, ', which has wsmap=&quot;struct&quot;, to SOAP structures')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('vbox__', $structname, '* ', $G_funcPrefixOutputEnumConverter, $structname, '(')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' struct soap *soap,'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' const WSDLT_ID &amp;idThis,'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' HRESULT &amp;rc,'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' ComPtr&lt;', $structname, '&gt; &amp;in)')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>{</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' vbox__', $structname, ' *resp = NULL;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitPrologue"><xsl:with-param name="fSkipHRESULT" select="'1'"/></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' resp = soap_new_vbox__', $structname, '(soap, -1);')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="//interface[@name=$structname]/attribute">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' // -- ', $structname, '.', @name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- recurse! -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitGetAttributeComCall">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$structname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="object" select="'in'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrname" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrtype" select="@type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="callerprefix" select="concat('out', '.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitEpilogue"><xsl:with-param name="fSkipHRESULT" select="'1'"/></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:apply-templates />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync class
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="module/class">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- TODO swallow for now -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync enum
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="enum">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync const
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="const">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:apply-templates />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync desc
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="desc">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- TODO swallow for now -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync note
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="note">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- TODO -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:apply-templates />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitBeginOfFunctionHeader:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitBeginOfFunctionHeader">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="method" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('int __vbox__', $ifname, '_USCORE', $method, '(')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> struct soap *soap</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitCppTypeForIDLType:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emits the C++ type that corresponds to the given WSDL type in $type.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitCppTypeForIDLType">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="method" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="varprefix" /> <!-- only with nested get-attribute calls -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="inptr" /> <!-- whether to add INPTR to BSTR (Dmitry template magic) -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- look up C++ glue type from IDL type from table array in websrv-shared.inc.xsl -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="gluetypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluename" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='wstring' or $type='uuid'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$safearray='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$inptr='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'com::SafeArray&lt;IN_BSTR&gt;'" /> <!-- input string arrays must use IN_BSTR (see com/array.h) -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'com::SafeArray&lt;BSTR&gt;'" /> <!-- output string arrays use raw BSTR -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'com::Bstr'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- if above lookup in table succeeded, use that type -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="string-length($gluetypefield)">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitTypeOrArray">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$gluetypefield"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$safearray"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="//enum[@name=$type]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitTypeOrArray">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="concat($type, '_T ')"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$safearray"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='$unknown'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$safearray='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'com::SafeIfaceArray&lt;IUnknown&gt;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'ComPtr&lt;IUnknown&gt;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="//interface[@name=$type]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatif" select="//interface[@name=$type]" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatifname" select="$thatif/@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$safearray='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('com::SafeIfaceArray&lt;', $thatifname, '&gt;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ComPtr&lt;', $thatifname, '&gt;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="//collection[@name=$type]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatif" select="//collection[@name=$type]" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatifname" select="$thatif/@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ComPtr&lt;', $thatifname, '&gt;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="fatalError">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="msg" select="concat('emitCppTypeForIDLType: Type &quot;', $type, '&quot; in method &quot;', $method, '&quot; is not supported.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitDocumentStyleArgStructs:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync with WSDL "document" style only, emits those lengthy structs for
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync the input and output argument in the function header.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitDocumentStyleArgStructs">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="fOutputs" /> <!-- if 1, emit output struct as well -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>,</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' _vbox__', $ifname, '_USCORE', $methodname, $G_requestMessageElementSuffix, ' *', $G_requestElementVarName)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="$fOutputs">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>,</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' _vbox__', $ifname, '_USCORE', $methodname, $G_responseMessageElementSuffix, ' *', $G_responseElementVarName)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- <xsl:value-of select="concat(' struct ', $ifname, '__', $methodname, 'Response &amp;', $G_result)" /> -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitPrologue:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emits the closing ")" for the parameter list and the beginning
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync of the function body.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitPrologue">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> WEBDEBUG((g_pcszEntering, __FUNCTION__));
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync do {</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitEpilogue
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitEpilogue">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="fSkipHRESULT" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> } while (0);</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> WEBDEBUG((g_pcszLeaving, __FUNCTION__, rc, rc));</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="not($fSkipHRESULT)">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync if (FAILED(rc))
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync return SOAP_FAULT;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync return SOAP_OK;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="$fSkipHRESULT">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> return resp;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>}</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitObjForMethod:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync after the function prologue, emit a "pObj" object that
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync specifies the object upon which the method should be invoked.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitObjForMethod">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="wsmap" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="structprefix" /> <!-- with WSDL document style: req element prefix, like "vbox__IVirtualBox_USCOREcreateMachineRequestElement->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$wsmap='global'">
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$ifname='IVirtualBox'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> // invoke method on global IVirtualBox instance</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>ComPtr&lt;IVirtualBox&gt; pObj = G_pVirtualBox;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="fatalError">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="msg" select="concat('emitObjForMethod: Unknown interface &quot;', $ifname, '&quot; with wsmap=global in XIDL.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="($wsmap='managed')">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> // look up managed object reference for method call&#10;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' ComPtr&lt;', $ifname, '&gt; pObj;&#10;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' if (!', $G_requestElementVarName, ')&#10;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> {&#10;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> RaiseSoapInvalidObjectFault(soap, "");&#10;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> break;&#10;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> }&#10;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' const WSDLT_ID &amp;idThis = ', $structprefix, $G_nameObjectRefEncoded, ';&#10;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' if ((rc = findComPtrFromId(soap, idThis, pObj, false)))&#10;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> break;&#10;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitInputArgConverter:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync another type converter (from wsdl type to COM types),
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync that generates temporary variables on the stack with
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync the WSDL input parameters converted to the COM types,
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync so we can then pass them to the actual COM method call.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitInputArgConverter">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="method" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="structprefix" /> <!-- with WSDL document style: req element prefix, like "vbox__IVirtualBox_USCOREcreateMachineRequestElement->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' // convert input arg ', $name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$safearray='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('size_t c', $name, ' = ', $structprefix, $name, '.size();')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitCppTypeForIDLType">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$method"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$type"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$safearray"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="inptr" select="'yes'"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '(c', $name, ');')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('for (size_t i = 0; i &lt; c', $name, '; ++i)')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'{'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='$unknown'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' ComPtr&lt;IUnknown&gt; tmpObject;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' if ((rc = findComPtrFromId(soap, ', $structprefix, $name, '[i], tmpObject, true)))')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> break;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' IUnknown *tmpObject2(tmpObject); tmpObject2->AddRef(); comcall_', $name, '[i] = tmpObject;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='wstring'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' com::Bstr tmpObject(', $structprefix, $name, '[i].c_str());')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' BSTR tmpObjectB;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' tmpObject.detachTo(&amp;tmpObjectB);'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '[i] = tmpObjectB;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='long'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '[i] = ', $structprefix, $name, '[i];')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='boolean'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '[i] = ', $structprefix, $name, '[i];')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="//enum[@name=$type]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '[i] = ', $G_funcPrefixInputEnumConverter, $type, '(', $structprefix, $name, '[i]);')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="fatalError">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="msg" select="concat('emitInputArgConverter Type &quot;', $type, '&quot; in arg &quot;', $name, '&quot; of method &quot;', $method, '&quot; is not yet supported in safearrays.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'}'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitCppTypeForIDLType">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$method"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$type"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$safearray"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="inptr" select="'yes'"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='wstring' or $type='uuid'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '(', $structprefix, $name, '.c_str())')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="//enum[@name=$type]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, ' = ', $G_funcPrefixInputEnumConverter, $type, '(', $structprefix, $name, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='$unknown'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, ';')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('if ((rc = findComPtrFromId(soap, ', $structprefix, $name, ', comcall_', $name,', true)))')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> break</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="(//interface[@name=$type]) or (//collection[@name=$type])">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- the type is one of our own interfaces: then it must have a wsmap attr -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatif" select="(//interface[@name=$type]) | (//collection[@name=$type])" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="wsmap" select="$thatif/@wsmap" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatifname" select="$thatif/@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:when test="not($wsmap)">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="fatalError">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:with-param name="msg" select="concat('emitInputArgConverter: Type &quot;', $type, '&quot; in arg &quot;', $name, '&quot; of method &quot;', $method, '&quot; lacks wsmap attribute in XIDL.')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:call-template>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:when>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:when test="($wsmap='managed')">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat(' comcall_', $name, ';')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="emitNewlineIndent8" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat('if ((rc = findComPtrFromId(soap, ', $structprefix, $name, ', comcall_', $name,', true)))')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="emitNewlineIndent8" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:text> break</xsl:text>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:when>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="fatalError">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:with-param name="msg" select="concat('emitInputArgConverter: Type &quot;', $type, '&quot; in arg &quot;', $name, '&quot; of method &quot;', $method, '&quot; has unsupported wsmap attribute value &quot;', $wsmap, '&quot; in XIDL.')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:call-template>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:when>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat(' comcall_', $name, ' = ', $structprefix, $name)" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:text>;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync</xsl:text>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync</xsl:template>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync<!--
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emitTypeOrArray
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync-->
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync<xsl:template name="emitTypeOrArray">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="type" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="safearray" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:when test="$safearray='yes'">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat('com::SafeArray&lt;', $type, '&gt;')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:when>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="$type" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync</xsl:template>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync<!--
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emitOutputArgBuffer:
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync another type converter (from wsdl type to COM types)
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync that generates a buffer variable which receives the
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync data from 'out' and 'return' parameters of the COM method call.
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync-->
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync<xsl:template name="emitOutputArgBuffer">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="method" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="name" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="type" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="safearray" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="varprefix" /> <!-- only with nested get-attribute calls -->
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:text> // com output arg for </xsl:text><xsl:value-of select="concat($name, ' (safearray: ', $safearray, ')')" /><xsl:text>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:text>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="emitCppTypeForIDLType">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:with-param name="method" select="$method" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:with-param name="type" select="$type" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:with-param name="safearray" select="$safearray" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:call-template>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat(' comcall_', $varprefix, $name, ';')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="emitNewline" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync</xsl:template>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync<!--
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emitOutParam:
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync-->
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync<xsl:template name="emitOutParam">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="name" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="type" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="safearray" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="varprefix" /> <!-- only with nested get-attribute calls -->
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:variable name="varname" select="concat('comcall_', $varprefix, $name)" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:when test="$safearray='yes'">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat('ComSafeArrayAsOutParam(', $varname, ')')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:when>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:when test=" ($type='boolean')
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync or ($type='short')
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync or ($type='unsigned short')
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync or ($type='long')
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync or ($type='unsigned long')
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync or ($type='long long')
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync or ($type='unsigned long long')
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync or ($type='result')
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync or (//enum[@name=$type])">
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:text>&amp;</xsl:text><xsl:value-of select="$varname" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:when>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="$varname" /><xsl:text>.asOutParam()</xsl:text>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:otherwise>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync </xsl:choose>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync</xsl:template>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync<!--
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emitComCall:
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emits the actual method call with the arguments.
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync-->
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync<xsl:template name="emitComCall">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="object" /> <!-- normally "pObj->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrname" /> <!-- with attributes only -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrtype" /> <!-- with attributes only -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrsafearray" /> <!-- with attributes only -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrdir" /> <!-- with attributes only: "in" or "return" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="varprefix" /> <!-- only with nested get-attribute calls -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="comMethodName">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="capitalize"><xsl:with-param name="str" select="$methodname" /></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('WEBDEBUG((g_pcszCallingComMethod, &quot;', $comMethodName, '&quot;));')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('rc = ', $object, '-&gt;', $comMethodName, '(')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="$attrtype">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync <xsl:when test="$attrdir='in'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('comcall_', $varprefix, @name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$attrdir='return'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutParam">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="$attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="param">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="position()=1">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="position() > 1">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>,</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> </xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="@dir='in'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="@safearray='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ComSafeArrayAsInParam(comcall_', $varprefix, @name, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('comcall_', $varprefix, @name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="@dir='out'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutParam">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="@type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="@dir='return'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutParam">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="$G_result" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="@type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>);</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>if (FAILED(rc))</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>{</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' RaiseSoapRuntimeFault(soap, rc, ', $object, ');')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> break;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>}</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>WEBDEBUG((g_pcszDoneCallingComMethod));</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitOutputArgBackConverter2: implementation details of emitOutputArgBackConverter.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync<xsl:template name="emitOutputArgBackConverter2">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="varname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="callerprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='wstring' or $type='uuid'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ConvertComString(', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='boolean'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- the "!!" avoids a microsoft compiler warning -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('!!', $varname)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test=" ($type='octet')
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync or ($type='short')
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync or ($type='unsigned short')
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync or ($type='long')
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync or ($type='unsigned long')
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync or ($type='long long')
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync or ($type='unsigned long long')
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync or ($type='result')">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="$varname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="//enum[@name=$type]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat($G_funcPrefixOutputEnumConverter, $type, '(', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$type='$unknown'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('createOrFindRefFromComPtr(idThis, g_pcszIUnknown, ', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="//interface[@name=$type]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- the type is one of our own interfaces: then it must have a wsmap attr -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatif" select="//interface[@name=$type]" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="wsmap" select="$thatif/@wsmap" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatifname" select="$thatif/@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test=" ($wsmap='managed') or ($wsmap='global')">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('createOrFindRefFromComPtr(idThis, g_pcsz', $thatifname, ', ', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$wsmap='struct'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- prevent infinite recursion -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- <xsl:call-template name="fatalError"><xsl:with-param name="msg" select="concat('emitOutputArgBackConverter2: attempted infinite recursion for type &quot;', $type, '&quot; in arg &quot;', $name, '&quot; of method &quot;', $ifname, '::', $method)" /></xsl:call-template> -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="not($callerprefix)">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('/* convert COM interface to struct */ ', $G_funcPrefixOutputEnumConverter, $type, '(soap, idThis, rc, ', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="fatalError">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="msg" select="concat('emitOutputArgBackConverter2: Type &quot;', $type, '&quot; in arg &quot;', $name, '&quot; of method &quot;', $ifname, '::', $method, '&quot; has invalid wsmap attribute value &quot;', $wsmap, '&quot; in XIDL.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="//collection[@name=$type]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- the type is a collection of our own types: then build an array from it -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="collectiontype" select="//collection[@name=$type]/@type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="targetwsmap" select="//interface[@name=$collectiontype]/@wsmap" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('soap_new_vbox__ArrayOf', $collectiontype, '(soap, -1);')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="enumerator" select="concat('comcall_', $callerprefix, $name, '_enum')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ComPtr&lt;', $collectiontype, 'Enumerator&gt; ', $enumerator, ';')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('CHECK_ERROR_BREAK( comcall_', $callerprefix, $name, ', Enumerate(', $enumerator, '.asOutParam()) );')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('BOOL comcall_', $callerprefix, $name, '_hasmore = FALSE;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'do {'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' CHECK_ERROR_BREAK( ', $enumerator, ', HasMore(&amp;comcall_', $callerprefix, $name, '_hasmore) );')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' if (!comcall_', $callerprefix, $name, '_hasmore) break;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' ComPtr&lt;', $collectiontype, '&gt; arrayitem;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' CHECK_ERROR_BREAK( ', $enumerator, ', GetNext(arrayitem.asOutParam()) );')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' // collection of &quot;', $collectiontype, '&quot;, target interface wsmap: &quot;', $targetwsmap, '&quot;')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitNewlineIndent8" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ', $G_responseElementVarName, '-&gt;', $G_result)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="'->array.push_back('" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="($targetwsmap='managed')">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat('createOrFindRefFromComPtr(idThis, g_pcsz', $collectiontype, ', arrayitem));')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="$targetwsmap='struct'">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat($G_funcPrefixOutputEnumConverter, $collectiontype, '(soap, idThis, rc, arrayitem));')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="fatalError">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="msg" select="concat('emitOutputArgBackConverter2: Type &quot;', $collectiontype, '&quot; of collection &quot;', $type, '&quot;, used in method &quot;', $method, '&quot;, has unsupported wsmap &quot;', $targetwsmap, '&quot;.')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:call-template>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitNewlineIndent8" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="'} while (1)'" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="fatalError">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="msg" select="concat('emitOutputArgBackConverter2: Type &quot;', $type, '&quot; in arg &quot;', $name, '&quot; of method &quot;', $method, '&quot; is not supported.')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:call-template>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync</xsl:template>
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync<!--
db328d9a0c557c268222858740db4860d4f22a95vboxsync emitOutputArgBackConverter:
db328d9a0c557c268222858740db4860d4f22a95vboxsync another type converter (from COM type back to WSDL)
db328d9a0c557c268222858740db4860d4f22a95vboxsync which converts the output argument from the COM
db328d9a0c557c268222858740db4860d4f22a95vboxsync method call back to the WSDL type passed in by the
db328d9a0c557c268222858740db4860d4f22a95vboxsync caller.
db328d9a0c557c268222858740db4860d4f22a95vboxsync-->
db328d9a0c557c268222858740db4860d4f22a95vboxsync<xsl:template name="emitOutputArgBackConverter">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="ifname" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="method" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="name" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="type" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="safearray" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="varprefix" /> <!-- only when called recursively from emitGetAttributeComCall -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="callerprefix" /> <!-- only for out params or when called recursively from emitGetAttributeComCall -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:variable name="topname" select="$name" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:variable name="varname" select="concat('comcall_', $varprefix, $name)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitNewlineIndent8" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat('WEBDEBUG((g_pcszConvertComOutputBack, &quot;', $name, '&quot;));')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitNewlineIndent8" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:variable name="receiverVariable">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="(not($varprefix))">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="$callerprefix"> <!-- callerprefix set but varprefix not: then this is an out parameter :-) -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat($G_responseElementVarName, '-&gt;', $name)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat($G_responseElementVarName, '-&gt;', $G_result)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat($callerprefix, $G_result, '-&gt;', $name)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:variable>
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="$safearray='yes'">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat('for (size_t i = 0; i &lt; ', $varname, '.size(); ++i)')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitNewlineIndent8" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="'{'" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitNewlineIndent8" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <!-- look up C++ glue type from IDL type from table array in websrv-shared.inc.xsl -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:variable name="gluetypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluename" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="//interface[@name=$type]">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ComPtr&lt;', $type, '&gt; tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="//enum[@name=$type]">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ', $type, '_T tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="$type='$unknown'">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ComPtr&lt;IUnknown&gt; tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="$type='wstring' or $type='uuid'">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' com::Bstr tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="$gluetypefield">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ', $gluetypefield, ' tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:when>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="fatalError">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="msg" select="concat('emitOutputArgBackConverter (1): Type &quot;', $type, '&quot; in arg &quot;', $name, '&quot; of method &quot;', $method, '&quot; is not yet supported in safearrays.')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:call-template>
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:otherwise>
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:choose>
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitNewlineIndent8" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ', $receiverVariable, '.push_back(')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitOutputArgBackConverter2">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="$name"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varname" select="'tmpObject'"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$type"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="callerprefix" select="$callerprefix"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="');'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewlineIndent8" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'}'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- emit variable name: "resp->retval = " -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="$receiverVariable" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' = '" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutputArgBackConverter2">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="$name"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varname" select="$varname"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$type"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="callerprefix" select="$callerprefix"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="';'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' WEBDEBUG((g_pcszDoneConvertingComOutputBack, &quot;', $name, '&quot;));')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitGetAttributeComCall
db328d9a0c557c268222858740db4860d4f22a95vboxsync -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync<xsl:template name="emitGetAttributeComCall">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="object" /> <!-- normally "pObj->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="varprefix" /> <!-- only when called recursively from emitOutputArgBackConverter-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="callerprefix" /> <!-- only when called recursively from emitOutputArgBackConverter-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="gettername"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
fbb253906aeb0ea1fc004ab4241d395d97ae221evboxsync <xsl:call-template name="emitOutputArgBuffer">
fbb253906aeb0ea1fc004ab4241d395d97ae221evboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
fbb253906aeb0ea1fc004ab4241d395d97ae221evboxsync <xsl:with-param name="method"><xsl:value-of select="$gettername" /></xsl:with-param>
fbb253906aeb0ea1fc004ab4241d395d97ae221evboxsync <xsl:with-param name="name" select="$attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="upperattrname"><xsl:call-template name="capitalize"><xsl:with-param name="str" select="$attrname" /></xsl:call-template></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- actual COM method call -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitComCall">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="concat('COMGETTER(', $upperattrname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="object" select="$object" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrname" select="$attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrtype" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrsafearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrdir" select="'return'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- convert back the output data -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutputArgBackConverter">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method"><xsl:value-of select="$gettername" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="$attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$attrsafearray" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="callerprefix" select="$callerprefix" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync </xsl:call-template>
db328d9a0c557c268222858740db4860d4f22a95vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitSetAttributeComCall
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitSetAttributeComCall">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="object" /> <!-- normally "pObj->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="callerprefix" /> <!-- only when called recursively from emitOutputArgBackConverter-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="settername"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="upperattrname"><xsl:call-template name="capitalize"><xsl:with-param name="str" select="$attrname" /></xsl:call-template></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitInputArgConverter">
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync <xsl:with-param name="method" select="concat($ifname, '::', $settername)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="$attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="structprefix" select="concat($G_requestElementVarName, '-&gt;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitComCall">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="concat('COMSETTER(', $upperattrname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="object" select="$object" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrname" select="$attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrtype" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrsafearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrdir" select="'in'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitGetAttributeMapper
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template name="emitGetAttributeMapper">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="wsmap" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrreadonly" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="gettername"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="emitBeginOfFunctionHeader">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$gettername" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitDocumentStyleArgStructs">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="$gettername" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="fOutputs" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>)</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>{</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' HRESULT rc = S_OK;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="emitPrologue" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- actual COM method call -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync array attributes/parameters are not supported yet...
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="@array or @safearray='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="warning"><xsl:with-param name="msg" select="concat('emitComCall: SKIPPING ATTRIBUTE IMPLEMENTATION for &quot;', $attrname, '&quot; because it has array type. THIS SOAP METHOD WILL NOT DO ANYTHING!')" /></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise> -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitObjForMethod">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="wsmap"><xsl:value-of select="$wsmap" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="structprefix" select="concat($G_requestElementVarName, '-&gt;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitGetAttributeComCall">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="object" select='"pObj"' />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrname"><xsl:value-of select="$attrname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrtype"><xsl:value-of select="$attrtype" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrsafearray"><xsl:value-of select="$attrsafearray" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose> -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitEpilogue" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync<!--
db328d9a0c557c268222858740db4860d4f22a95vboxsync emitSetAttributeMapper:
db328d9a0c557c268222858740db4860d4f22a95vboxsync -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync<xsl:template name="emitSetAttributeMapper">
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="ifname" select="$ifname" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="wsmap" select="$wsmap" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="attrname" select="$attrname" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="attrtype" select="$attrtype" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="attrreadonly" select="$attrreadonly" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="settername"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitBeginOfFunctionHeader">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$settername" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitDocumentStyleArgStructs">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="$settername" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="fOutputs" select="1" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>)</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>{</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' HRESULT rc = S_OK;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitPrologue" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- actual COM method call -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync array attributes/parameters are not supported yet...
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="@array or @safearray='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="warning"><xsl:with-param name="msg" select="concat('emitComCall: SKIPPING ATTRIBUTE IMPLEMENTATION for &quot;', $attrname, '&quot; because it has array type. THIS SOAP METHOD WILL NOT DO ANYTHING!')" /></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise> -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitObjForMethod">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="wsmap"><xsl:value-of select="$wsmap" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="structprefix" select="concat($G_requestElementVarName, '-&gt;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitSetAttributeComCall">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="object" select='"pObj"' />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrname"><xsl:value-of select="$attrname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrtype"><xsl:value-of select="$attrtype" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose> -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitEpilogue" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync interface
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="interface">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- remember the interface name in local variables -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="ifname"><xsl:value-of select="@name" /></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="wsmap"><xsl:value-of select="@wsmap" /></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="wscpp"><xsl:value-of select="@wscpp" /></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- we can save ourselves verifying the interface here as it's already
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync done in the WSDL converter -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test='not( ($wsmap="suppress") or ($wsmap="struct") or ($wscpp="hardcoded") )'>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/****************************************************************************
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync *
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * interface </xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:copy-of select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync *
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync ****************************************************************************/
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync here come the attributes
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="attribute">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="attrname"><xsl:value-of select="@name" /></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="attrtype"><xsl:value-of select="@type" /></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="attrreadonly"><xsl:value-of select="@readonly" /></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="attrsafearray"><xsl:value-of select="@safearray" /></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- skip this attribute if it has parameters of a type that has wsmap="suppress" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:when test="( $attrtype=($G_setSuppressedInterfaces/@name) )">
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:value-of select="concat('// Skipping attribute ', $attrtype, ' for it is of suppressed type ', $attrtype)" />
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync </xsl:when>
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:otherwise>
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:choose>
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:when test="@readonly='yes'">
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:value-of select="concat('// read-only attribute ', $ifname, '::', $attrname, ' of type ', $attrtype)" />
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync </xsl:when>
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:otherwise>
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:value-of select="concat('// read/write attribute ', $ifname, '::', $attrname, ' of type ', $attrtype)" />
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync </xsl:otherwise>
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync </xsl:choose>
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:value-of select="concat(' (safearray: ', $attrsafearray, ')')" />
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <!-- emit getter method -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitGetAttributeMapper">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="wsmap" select="$wsmap" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrname" select="$attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrtype" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrreadonly" select="$attrreadonly" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrsafearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- for read-write attributes, emit setter method -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="not(@readonly='yes')">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitSetAttributeMapper">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="wsmap" select="$wsmap" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrname" select="$attrname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrtype" select="$attrtype" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="attrreadonly" select="$attrreadonly" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise> <!-- not wsmap=suppress -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!--
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync here come the real methods
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="method">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="methodname"><xsl:value-of select="@name" /></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- method header: return value "int", method name, soap arguments -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- skip this method if it has parameters of a type that has wsmap="suppress" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test=" (param[@type=($G_setSuppressedInterfaces/@name)])
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync or (param[@mod='ptr'])" >
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:comment><xsl:value-of select="concat('Skipping method ', $methodname, ' for it has parameters with suppressed types')" /></xsl:comment>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="fHasReturnParms" select="param[@dir='return']" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="fHasOutParms" select="param[@dir='out']" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('/* method ', $ifname, '::', $methodname, '(')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="param">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' [', @dir, '] ', @type, ' ', @name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="@safearray='yes'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>[]</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="not(position()=last())">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>,</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>)</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> */</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitBeginOfFunctionHeader">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitDocumentStyleArgStructs">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$ifname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="$methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="fOutputs" select="1" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>)</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>{</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' HRESULT rc = S_OK;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitNewline" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitPrologue" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="param[@array]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="warning"><xsl:with-param name="msg" select="concat('emitComCall: SKIPPING METHOD IMPLEMENTATION for &quot;', $methodname, '&quot; because it has arguments with &quot;array&quot; types. THIS SOAP METHOD WILL NOT DO ANYTHING!')" /></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- emit the object upon which to invoke the method -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitObjForMethod">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="wsmap"><xsl:value-of select="$wsmap" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="structprefix" select="concat($G_requestElementVarName, '-&gt;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- next, emit storage variables to convert the SOAP/C++ arguments to COM types -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="param">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="dir" select="@dir" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$dir='in'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitInputArgConverter">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="concat($ifname, '::', $methodname)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="structprefix" select="concat($G_requestElementVarName, '-&gt;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="@type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$dir='out'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutputArgBuffer">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="concat($ifname, '::', $methodname)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="@type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$dir='return'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutputArgBuffer">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="concat($ifname, '::', $methodname)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name" select="$G_result" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="@type" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:for-each>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- actual COM method call -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitComCall">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="object" select='"pObj"' />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="capitalize">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="str" select="$methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- convert back the output data -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="param">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="dir" select="@dir" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="$dir='out'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutputArgBackConverter">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray"><xsl:value-of select="@safearray" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="callerprefix" select="'outparms.'"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test="$dir='return'">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- return values _normally_ should convert to the input arg from the function prototype,
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync except when there are both return and out params; in that case gsoap squeezes them all
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync into the output args structure and the return thing is called "retval" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:when test="$fHasOutParms">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutputArgBackConverter">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name"><xsl:value-of select="$G_result" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray"><xsl:value-of select="@safearray" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="callerprefix" select="'outparms.'"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutputArgBackConverter">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="name"><xsl:value-of select="$G_result" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray"><xsl:value-of select="@safearray" /></xsl:with-param>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:if>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync </xsl:for-each>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync </xsl:otherwise>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync </xsl:choose>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync <xsl:call-template name="emitEpilogue" />
171f7694ec7932516e3b96aafac975853e3fe754vboxsync </xsl:otherwise>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync </xsl:choose>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync </xsl:for-each>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync </xsl:if>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync
171f7694ec7932516e3b96aafac975853e3fe754vboxsync</xsl:template>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync
171f7694ec7932516e3b96aafac975853e3fe754vboxsync
171f7694ec7932516e3b96aafac975853e3fe754vboxsync</xsl:stylesheet>
171f7694ec7932516e3b96aafac975853e3fe754vboxsync