websrv-cpp.xsl revision 2738bcf18cad2bbc505529d49a8e0f60b79c0c35
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 Copyright (C) 2006-2010 Oracle Corporation
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 version="1.0"
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync global XSLT variables
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:variable name="G_xsltFilename" select="'websrv-cpp.xsl'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- collect all interfaces with "wsmap='suppress'" in a global variable for
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync quick lookup -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync select="//interface[@wsmap='suppress']" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
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// shared webservice header
db328d9a0c557c268222858740db4860d4f22a95vboxsync// vbox headers
db328d9a0c557c268222858740db4860d4f22a95vboxsync// gSOAP headers (must come after vbox includes because it checks for conflicting defs)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync// standard headers
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#include <map>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#include <sstream>
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// generated string constants for all interface names
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncconst char *g_pcszIUnknown = "IUnknown";
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('const char *g_pcsz', $ifname, ' = "', $ifname, '";')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * ignore all |if|s except those for WSDL target
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- ignore this -->
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/****************************************************************************
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * types: enum converter helper functions
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync ****************************************************************************/
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync enum converter functions at top of file
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- generate enum converter for COM-to-SOAP -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('vbox__', $enumname, ' ', $G_funcPrefixOutputEnumConverter, $enumname, '(', $enumname, '_T e)')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' vbox__', $enumname, ' v;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="const[not(@wsmap='suppress')]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' case ', $enumname, '_', $enumconst, ':')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' v = vbox__', $enumname, '__')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- escape all "_" in $enumconst -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="string" select="$enumconst" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- Add a default case so gcc gives us a rest, esp. on darwin. -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> AssertMsgFailed(("e=%d\n", (int)e));</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' v = (vbox__', $enumname, ')0x7fffdead;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- generate enum converter for SOAP-to-COM -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat($enumname, '_T ', $G_funcPrefixInputEnumConverter, $enumname, '(vbox__', $enumname, ' v)')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' ', $enumname, '_T e;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="const[not(@wsmap='suppress')]">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' case vbox__', $enumname, '__')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- escape all "_" in $enumconst -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="string" select="$enumconst" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' e = ', $enumname, '_', $enumconst, ';')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- Insert a default case so gcc gives us a rest, esp. on darwin. -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> AssertMsgFailed(("v=%d\n", (int)v));</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' e = (', $enumname, '_T)0x7fffbeef;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/****************************************************************************
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * types: struct converter helper functions
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync ****************************************************************************/
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="//interface[@wsmap='struct']">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('// ', $structname, ' converter: called from method mappers to convert data from')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('// COM interface ', $structname, ', which has wsmap="struct", to SOAP structures')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('vbox__', $structname, '* ', $G_funcPrefixOutputEnumConverter, $structname, '(')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' const WSDLT_ID &idThis,'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' ComPtr<', $structname, '> &in)')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' vbox__', $structname, ' *resp = NULL;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitPrologue"><xsl:with-param name="fSkipHRESULT" select="'1'"/></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' resp = soap_new_vbox__', $structname, '(soap, -1);')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:for-each select="//interface[@name=$structname]/attribute">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' // -- ', $structname, '.', @name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- recurse! -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname" select="$structname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="callerprefix" select="concat('out', '.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitEpilogue"><xsl:with-param name="fSkipHRESULT" select="'1'"/></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- TODO swallow for now -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<xsl:template match="const">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:apply-templates />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync</xsl:template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- TODO swallow for now -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- TODO -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitBeginOfFunctionHeader:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('int __vbox__', $ifname, '_USCORE', $method, '(')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitCppTypeForIDLType:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emits the C++ type that corresponds to the given WSDL type in $type.
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 <!-- 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 <xsl:value-of select="'com::SafeArray<IN_BSTR>'" /> <!-- input string arrays must use IN_BSTR (see com/array.h) -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'com::SafeArray<BSTR>'" /> <!-- output string arrays use raw BSTR -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- if above lookup in table succeeded, use that type -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="$gluetypefield"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$safearray"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="type" select="concat($type, '_T ')"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$safearray"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="'com::SafeIfaceArray<IUnknown>'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatif" select="//interface[@name=$type]" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatifname" select="$thatif/@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('com::SafeIfaceArray<', $thatifname, '>')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ComPtr<', $thatifname, '>')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatif" select="//collection[@name=$type]" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="thatifname" select="$thatif/@name" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ComPtr<', $thatifname, '>')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="msg" select="concat('emitCppTypeForIDLType: Type "', $type, '" in method "', $method, '" is not supported.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitDocumentStyleArgStructs:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync with WSDL "document" style only, emits those lengthy structs for
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync the input and output argument in the function header.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="fOutputs" /> <!-- if 1, emit output struct as well -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' _vbox__', $ifname, '_USCORE', $methodname, $G_requestMessageElementSuffix, ' *', $G_requestElementVarName)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' _vbox__', $ifname, '_USCORE', $methodname, $G_responseMessageElementSuffix, ' *', $G_responseElementVarName)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- <xsl:value-of select="concat(' struct ', $ifname, '__', $methodname, 'Response &', $G_result)" /> -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitPrologue:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emits the closing ")" for the parameter list and the beginning
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync of the function body.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> WEBDEBUG((g_pcszEntering, __FUNCTION__));
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitEpilogue
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> WEBDEBUG((g_pcszLeaving, __FUNCTION__, rc, rc));</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync if (FAILED(rc))
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync return SOAP_FAULT;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitObjForMethod:
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync after the function prologue, emit a "pObj" object that
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync specifies the object upon which the method should be invoked.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="structprefix" /> <!-- with WSDL document style: req element prefix, like "vbox__IVirtualBox_USCOREcreateMachineRequestElement->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> // invoke method on global IVirtualBox instance</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>ComPtr<IVirtualBox> pObj = G_pVirtualBox;</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="msg" select="concat('emitObjForMethod: Unknown interface "', $ifname, '" with wsmap=global in XIDL.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> // look up managed object reference for method call </xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' ComPtr<', $ifname, '> pObj; ')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' if (!', $G_requestElementVarName, ') ')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text> RaiseSoapInvalidObjectFault(soap, ""); </xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' const WSDLT_ID &idThis = ', $structprefix, $G_nameObjectRefEncoded, '; ')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' if ((rc = findComPtrFromId(soap, idThis, pObj, false))) '" />
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 <xsl:param name="structprefix" /> <!-- with WSDL document style: req element prefix, like "vbox__IVirtualBox_USCOREcreateMachineRequestElement->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' // convert input arg ', $name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('size_t c', $name, ' = ', $structprefix, $name, '.size();')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$safearray"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '(c', $name, ');')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('for (size_t i = 0; i < c', $name, '; ++i)')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' ComPtr<IUnknown> tmpObject;'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' if ((rc = findComPtrFromId(soap, ', $structprefix, $name, '[i], tmpObject, true)))')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' IUnknown *tmpObject2(tmpObject); tmpObject2->AddRef(); comcall_', $name, '[i] = tmpObject;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' com::Bstr tmpObject(', $structprefix, $name, '[i].c_str());')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="' tmpObject.detachTo(&tmpObjectB);'" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '[i] = tmpObjectB;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '[i] = ', $structprefix, $name, '[i];')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '[i] = ', $structprefix, $name, '[i];')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '[i] = ', $G_funcPrefixInputEnumConverter, $type, '(', $structprefix, $name, '[i]);')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="msg" select="concat('emitInputArgConverter Type "', $type, '" in arg "', $name, '" of method "', $method, '" is not yet supported in safearrays.')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$safearray"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, '(', $structprefix, $name, '.c_str())')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, ' = ', $G_funcPrefixInputEnumConverter, $type, '(', $structprefix, $name, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' comcall_', $name, ';')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('if ((rc = findComPtrFromId(soap, ', $structprefix, $name, ', comcall_', $name,', true)))')" />
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" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:with-param name="msg" select="concat('emitInputArgConverter: Type "', $type, '" in arg "', $name, '" of method "', $method, '" lacks wsmap attribute in XIDL.')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat(' comcall_', $name, ';')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat('if ((rc = findComPtrFromId(soap, ', $structprefix, $name, ', comcall_', $name,', true)))')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:with-param name="msg" select="concat('emitInputArgConverter: Type "', $type, '" in arg "', $name, '" of method "', $method, '" has unsupported wsmap attribute value "', $wsmap, '" in XIDL.')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat(' comcall_', $name, ' = ', $structprefix, $name)" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emitTypeOrArray
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat('com::SafeArray<', $type, '>')" />
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 <xsl:param name="varprefix" /> <!-- only with nested get-attribute calls -->
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:text> // com output arg for </xsl:text><xsl:value-of select="concat($name, ' (safearray: ', $safearray, ')')" /><xsl:text>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:with-param name="safearray" select="$safearray" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat(' comcall_', $varprefix, $name, ';')" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emitOutParam:
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:param name="varprefix" /> <!-- only with nested get-attribute calls -->
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:variable name="varname" select="concat('comcall_', $varprefix, $name)" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="concat('ComSafeArrayAsOutParam(', $varname, ')')" />
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>&</xsl:text><xsl:value-of select="$varname" />
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:value-of select="$varname" /><xsl:text>.asOutParam()</xsl:text>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emitComCall:
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync emits the actual method call with the arguments.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="object" /> <!-- normally "pObj->" -->
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 <xsl:call-template name="capitalize"><xsl:with-param name="str" select="$methodname" /></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('WEBDEBUG((g_pcszCallingComMethod, "', $comMethodName, '"));')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('rc = ', $object, '->', $comMethodName, '(')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('comcall_', $varprefix, @name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ComSafeArrayAsInParam(comcall_', $varprefix, @name, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('comcall_', $varprefix, @name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' RaiseSoapRuntimeFault(soap, rc, ', $object, ');')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:text>WEBDEBUG((g_pcszDoneCallingComMethod));</xsl:text>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitOutputArgBackConverter2: implementation details of emitOutputArgBackConverter.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ConvertComString(', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- the "!!" avoids a microsoft compiler warning -->
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="concat($G_funcPrefixOutputEnumConverter, $type, '(', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('createOrFindRefFromComPtr(idThis, g_pcszIUnknown, ', $varname, ')')" />
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:when test=" ($wsmap='managed') or ($wsmap='global')">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('createOrFindRefFromComPtr(idThis, g_pcsz', $thatifname, ', ', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- prevent infinite recursion -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- <xsl:call-template name="fatalError"><xsl:with-param name="msg" select="concat('emitOutputArgBackConverter2: attempted infinite recursion for type "', $type, '" in arg "', $name, '" of method "', $ifname, '::', $method)" /></xsl:call-template> -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('/* convert COM interface to struct */ ', $G_funcPrefixOutputEnumConverter, $type, '(soap, idThis, rc, ', $varname, ')')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="msg" select="concat('emitOutputArgBackConverter2: Type "', $type, '" in arg "', $name, '" of method "', $ifname, '::', $method, '" has invalid wsmap attribute value "', $wsmap, '" in XIDL.')" />
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:variable name="enumerator" select="concat('comcall_', $callerprefix, $name, '_enum')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('ComPtr<', $collectiontype, 'Enumerator> ', $enumerator, ';')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('CHECK_ERROR_BREAK( comcall_', $callerprefix, $name, ', Enumerate(', $enumerator, '.asOutParam()) );')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('BOOL comcall_', $callerprefix, $name, '_hasmore = FALSE;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' CHECK_ERROR_BREAK( ', $enumerator, ', HasMore(&comcall_', $callerprefix, $name, '_hasmore) );')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' if (!comcall_', $callerprefix, $name, '_hasmore) break;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' ComPtr<', $collectiontype, '> arrayitem;')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' CHECK_ERROR_BREAK( ', $enumerator, ', GetNext(arrayitem.asOutParam()) );')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' // collection of "', $collectiontype, '", target interface wsmap: "', $targetwsmap, '"')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ', $G_responseElementVarName, '->', $G_result)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat('createOrFindRefFromComPtr(idThis, g_pcsz', $collectiontype, ', arrayitem));')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat($G_funcPrefixOutputEnumConverter, $collectiontype, '(soap, idThis, rc, arrayitem));')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="msg" select="concat('emitOutputArgBackConverter2: Type "', $collectiontype, '" of collection "', $type, '", used in method "', $method, '", has unsupported wsmap "', $targetwsmap, '".')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="msg" select="concat('emitOutputArgBackConverter2: Type "', $type, '" in arg "', $name, '" of method "', $method, '" is not supported.')" />
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 <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 <xsl:variable name="varname" select="concat('comcall_', $varprefix, $name)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat('WEBDEBUG((g_pcszConvertComOutputBack, "', $name, '"));')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:when test="$callerprefix"> <!-- callerprefix set but varprefix not: then this is an out parameter :-) -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat($G_responseElementVarName, '->', $name)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat($G_responseElementVarName, '->', $G_result)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat($callerprefix, $G_result, '->', $name)" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat('for (size_t i = 0; i < ', $varname, '.size(); ++i)')" />
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:value-of select="concat(' ComPtr<', $type, '> tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ', $type, '_T tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ComPtr<IUnknown> tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' com::Bstr tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ', $gluetypefield, ' tmpObject(', $varname, '[i]);')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="msg" select="concat('emitOutputArgBackConverter (1): Type "', $type, '" in arg "', $name, '" of method "', $method, '" is not yet supported in safearrays.')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:value-of select="concat(' ', $receiverVariable, '.push_back(')" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:call-template name="emitOutputArgBackConverter2">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varname" select="'tmpObject'"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="callerprefix" select="$callerprefix"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- emit variable name: "resp->retval = " -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitOutputArgBackConverter2">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="callerprefix" select="$callerprefix"/>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' WEBDEBUG((g_pcszDoneConvertingComOutputBack, "', $name, '"));')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitGetAttributeComCall
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="object" /> <!-- normally "pObj->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="varprefix" /> <!-- only when called recursively from emitOutputArgBackConverter-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="callerprefix" /> <!-- only when called recursively from emitOutputArgBackConverter-->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="gettername"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
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>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
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:with-param name="methodname" select="concat('COMGETTER(', $upperattrname, ')')" />
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 <!-- 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="safearray" select="$attrsafearray" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="varprefix" select="$varprefix" />
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:with-param name="callerprefix" select="$callerprefix" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync emitSetAttributeComCall
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="object" /> <!-- normally "pObj->" -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:param name="callerprefix" /> <!-- only when called recursively from emitOutputArgBackConverter-->
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>
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync <xsl:with-param name="method" select="concat($ifname, '::', $settername)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="structprefix" select="concat($G_requestElementVarName, '->')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="$attrsafearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="concat('COMSETTER(', $upperattrname, ')')" />
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 emitGetAttributeMapper
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="gettername"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync <xsl:call-template name="emitBeginOfFunctionHeader">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$gettername" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitDocumentStyleArgStructs">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="$gettername" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="fOutputs" select="$attrtype" />
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 "', $attrname, '" because it has array type. THIS SOAP METHOD WILL NOT DO ANYTHING!')" /></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise> -->
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, '->')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
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:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose> -->
db328d9a0c557c268222858740db4860d4f22a95vboxsync emitSetAttributeMapper:
db328d9a0c557c268222858740db4860d4f22a95vboxsync <xsl:param name="attrreadonly" select="$attrreadonly" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="settername"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitBeginOfFunctionHeader">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$settername" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitDocumentStyleArgStructs">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="$settername" />
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 "', $attrname, '" because it has array type. THIS SOAP METHOD WILL NOT DO ANYTHING!')" /></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:when>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:otherwise> -->
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, '->')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="ifname"><xsl:value-of select="$ifname" /></xsl:with-param>
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:otherwise>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync </xsl:choose> -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync<!-- - - - - - - - - - - - - - - - - - - - - - -
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync - - - - - - - - - - - - - - - - - - - - - - -->
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 <!-- we can save ourselves verifying the interface here as it's already
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync done in the WSDL converter -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:if test='not( ($wsmap="suppress") or ($wsmap="struct") or ($wscpp="hardcoded") )'>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/****************************************************************************
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync ****************************************************************************/
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync here come the attributes
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 <!-- skip this attribute if it has parameters of a type that has wsmap="suppress" -->
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:value-of select="concat('// read-only attribute ', $ifname, '::', $attrname, ' of type ', $attrtype)" />
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:value-of select="concat('// read/write attribute ', $ifname, '::', $attrname, ' of type ', $attrtype)" />
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <xsl:value-of select="concat(' (safearray: ', $attrsafearray, ')')" />
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync <!-- emit getter method -->
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 <!-- for read-write attributes, emit setter method -->
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 here come the real methods
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: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:variable name="fHasReturnParms" select="param[@dir='return']" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:variable name="fHasOutParms" select="param[@dir='out']" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat('/* method ', $ifname, '::', $methodname, '(')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:value-of select="concat(' [', @dir, '] ', @type, ' ', @name)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitBeginOfFunctionHeader">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="$methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="emitDocumentStyleArgStructs">
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="methodname" select="$methodname" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:call-template name="warning"><xsl:with-param name="msg" select="concat('emitComCall: SKIPPING METHOD IMPLEMENTATION for "', $methodname, '" because it has arguments with "array" types. THIS SOAP METHOD WILL NOT DO ANYTHING!')" /></xsl:call-template>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- emit the object upon which to invoke the method -->
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, '->')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- next, emit storage variables to convert the SOAP/C++ arguments to COM types -->
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="concat($ifname, '::', $methodname)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="structprefix" select="concat($G_requestElementVarName, '->')" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="concat($ifname, '::', $methodname)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="method" select="concat($ifname, '::', $methodname)" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <xsl:with-param name="safearray" select="@safearray" />
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync <!-- actual COM method call -->
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" 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 <!-- 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: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 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>