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