5
XSLT stylesheet that generates vboxweb_gsoapH.h from
6
the WSDL file previously generated from VirtualBox.xidl.
7
The gsoap.h "header" file can then be fed into gSOAP's
8
soapcpp2 to create web service client headers and server
10
See webservice/Makefile.kmk for an overview of all the things
11
generated for the webservice.
13
Copyright (C) 2006-2010 Oracle Corporation
15
This file is part of VirtualBox Open Source Edition (OSE), as
16
available from http://www.virtualbox.org. This file is free software;
17
you can redistribute it and/or modify it under the terms of the GNU
18
General Public License (GPL) as published by the Free Software
19
Foundation, in version 2 as it comes in the "COPYING" file of the
20
VirtualBox OSE distribution. VirtualBox OSE is distributed in the
21
hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
26
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
27
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
29
<xsl:param name="G_argDebug" />
31
<xsl:output method="text"/>
33
<xsl:strip-space elements="*"/>
35
<!-- - - - - - - - - - - - - - - - - - - - - - -
37
- - - - - - - - - - - - - - - - - - - - - - -->
39
<xsl:variable name="G_xsltFilename" select="'websrv-gsoapH.xsl'" />
41
<xsl:include href="websrv-shared.inc.xsl" />
43
<!-- collect all interfaces with "wsmap='suppress'" in a global variable for
45
<xsl:variable name="G_setSuppressedInterfaces"
46
select="//interface[@wsmap='suppress']" />
50
first type converter (from XIDL type to SOAP/C++ input types),
51
used for generating the argument lists with method implementation
54
<xsl:template name="emitConvertedType">
55
<xsl:param name="type" />
58
<xsl:when test="$type='wstring'">std::string</xsl:when>
59
<xsl:when test="$type='boolean'">bool</xsl:when>
60
<xsl:when test="$type='double'">double</xsl:when>
61
<xsl:when test="$type='float'">float</xsl:when>
62
<!-- <xsl:when test="$type='octet'">byte</xsl:when> -->
63
<xsl:when test="$type='short'">short</xsl:when>
64
<xsl:when test="$type='unsigned short'">unsigned short</xsl:when>
65
<xsl:when test="$type='long'">long</xsl:when>
66
<xsl:when test="$type='long long'">long long</xsl:when>
67
<xsl:when test="$type='unsigned long'">unsigned long</xsl:when>
68
<xsl:when test="$type='unsigned long long'">unsigned long long</xsl:when>
69
<xsl:when test="$type='result'">unsigned long</xsl:when>
70
<xsl:when test="$type='uuid'">std::string</xsl:when>
71
<xsl:when test="$type='global'"><xsl:value-of select="$G_typeObjectRef_gsoapH" /></xsl:when>
72
<xsl:when test="$type='managed'"><xsl:value-of select="$G_typeObjectRef_gsoapH" /></xsl:when>
73
<xsl:when test="$type='explicit'"><xsl:value-of select="$G_typeObjectRef_gsoapH" /></xsl:when>
74
<!-- not a standard type: then it better be one of the types defined in the XIDL -->
75
<xsl:when test="//enum[@name=$type]">
76
<xsl:value-of select="concat('enum vbox__', $type)" />
78
<xsl:when test="//collection[@name=$type]">
79
<xsl:value-of select="concat('vbox__ArrayOf', //collection[@name=$type]/@type, '*')" />
81
<xsl:when test="//interface[@name=$type]">
82
<!-- the type is one of our own interfaces: then it must have a wsmap attr -->
83
<xsl:variable name="wsmap" select="(//interface[@name=$type]/@wsmap) | (//collection[@name=$type]/@wsmap)" />
85
<xsl:when test="$wsmap='global'"><xsl:value-of select="$G_typeObjectRef_gsoapH" /></xsl:when>
86
<xsl:when test="$wsmap='managed'"><xsl:value-of select="$G_typeObjectRef_gsoapH" /></xsl:when>
87
<xsl:when test="$wsmap='explicit'"><xsl:value-of select="$G_typeObjectRef_gsoapH" /></xsl:when>
88
<xsl:when test="$wsmap='struct'"><xsl:value-of select="concat('vbox__', $type, '*')" /></xsl:when>
94
<xsl:template name="convertTypeAndEmitPartOrElement">
95
<xsl:param name="ifname" />
96
<xsl:param name="methodname" />
97
<xsl:param name="name" />
98
<xsl:param name="type" />
100
<xsl:call-template name="debugMsg"><xsl:with-param name="msg" select="concat('....', $type, ' ', $name)" /></xsl:call-template>
102
<xsl:value-of select="concat(' ', '')"/>
103
<xsl:call-template name="emitConvertedType">
104
<xsl:with-param name="ifname" select="$ifname" />
105
<xsl:with-param name="methodname" select="$methodname" />
106
<xsl:with-param name="type" select="$type" />
108
<xsl:value-of select="concat(' ', $name, ' 1;')"/>
109
<xsl:call-template name="emitNewline" />
112
<xsl:template name="emitRequestArgs">
113
<xsl:param name="_ifname" /> <!-- interface name -->
114
<xsl:param name="_wsmap" /> <!-- interface's wsmap attribute -->
115
<xsl:param name="_methodname" />
116
<xsl:param name="_params" />
117
<xsl:param name="_valuetype" /> <!-- optional, for attribute setter messages -->
119
<xsl:call-template name="debugMsg"><xsl:with-param name="msg" select="concat('..', $_ifname, '::', $_methodname, ': ', 'emitRequestArgs')" /></xsl:call-template>
120
<!-- first parameter will be object on which method is called, depending on wsmap attribute -->
122
<xsl:when test="($_wsmap='managed') or ($_wsmap='explicit')">
123
<xsl:call-template name="convertTypeAndEmitPartOrElement">
124
<xsl:with-param name="ifname" select="$_ifname" />
125
<xsl:with-param name="methodname" select="$_methodname" />
126
<xsl:with-param name="name" select="$G_nameObjectRefEncoded" />
127
<xsl:with-param name="type" select="$_wsmap" />
131
<!-- now for the real parameters, if any -->
132
<xsl:for-each select="$_params">
133
<!-- <xsl:value-of select="concat('// param "', @name, '": direction "', @dir, '"')" />
134
<xsl:call-template name="emitNewline" /> -->
135
<!-- emit only parts for "in" parameters -->
136
<xsl:if test="@dir='in'">
137
<xsl:call-template name="convertTypeAndEmitPartOrElement">
138
<xsl:with-param name="ifname" select="$_ifname" />
139
<xsl:with-param name="methodname" select="$_methodname" />
140
<xsl:with-param name="name" select="@name" />
141
<xsl:with-param name="type" select="@type" />
145
<xsl:if test="$_valuetype">
146
<xsl:call-template name="convertTypeAndEmitPartOrElement">
147
<xsl:with-param name="ifname" select="$_ifname" />
148
<xsl:with-param name="methodname" select="$_methodname" />
149
<xsl:with-param name="name" select="@name" />
150
<xsl:with-param name="type" select="@type" />
155
<xsl:template name="emitResultArgs">
156
<xsl:param name="_ifname" />
157
<xsl:param name="_methodname" />
158
<xsl:param name="_params" /> <!-- set of parameter elements -->
159
<xsl:param name="_resulttype" /> <!-- for attribute getter methods only -->
161
<xsl:call-template name="debugMsg"><xsl:with-param name="msg" select="concat('..', $_ifname, '::', $_methodname, ': ', 'emitResultArgs')" /></xsl:call-template>
163
<xsl:when test="$_resulttype">
164
<xsl:call-template name="convertTypeAndEmitPartOrElement">
165
<xsl:with-param name="ifname" select="$_ifname" />
166
<xsl:with-param name="methodname" select="$_methodname" />
167
<xsl:with-param name="name" select="$G_result" />
168
<xsl:with-param name="type" select="$_resulttype" />
172
<xsl:for-each select="$_params">
173
<!-- emit only parts for "out" parameters -->
174
<xsl:if test="@dir='out'">
175
<xsl:call-template name="convertTypeAndEmitPartOrElement">
176
<xsl:with-param name="ifname" select="$_ifname" />
177
<xsl:with-param name="methodname" select="$_methodname" />
178
<xsl:with-param name="name"><xsl:value-of select="@name" /></xsl:with-param>
179
<xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
182
<xsl:if test="@dir='return'">
183
<xsl:call-template name="convertTypeAndEmitPartOrElement">
184
<xsl:with-param name="ifname" select="$_ifname" />
185
<xsl:with-param name="methodname" select="$_methodname" />
186
<xsl:with-param name="name"><xsl:value-of select="$G_result" /></xsl:with-param>
187
<xsl:with-param name="type"><xsl:value-of select="@type" /></xsl:with-param>
196
<!-- - - - - - - - - - - - - - - - - - - - - - -
198
- - - - - - - - - - - - - - - - - - - - - - -->
200
<xsl:template match="/idl">
202
/* DO NOT EDIT! This is a generated file.
203
* Generated from: src/VBox/Main/idl/VirtualBox.xidl (VirtualBox's interface definitions in XML)
204
* Generator: src/VBox/Main/webservice/websrv-gsoapH.xsl
206
* Note: This is not a real C/C++ header file. Instead, gSOAP uses files like this
207
* one -- with a pseudo-C-header syntax -- to describe a web service API.
210
// STL vector containers
211
#import "stlvector.h"
215
<xsl:value-of select="concat('//gsoap vbox schema namespace: ', $G_targetNamespace)" />
216
<xsl:value-of select="concat('//gsoap vbox schema form: unqualified', '')" />
218
<xsl:apply-templates />
221
<!-- - - - - - - - - - - - - - - - - - - - - - -
223
- - - - - - - - - - - - - - - - - - - - - - -->
226
* ignore all |if|s except those for WSDL target
228
<xsl:template match="if">
229
<xsl:if test="@target='wsdl'">
230
<xsl:apply-templates/>
234
<!-- - - - - - - - - - - - - - - - - - - - - - -
236
- - - - - - - - - - - - - - - - - - - - - - -->
238
<xsl:template match="cpp">
242
<!-- - - - - - - - - - - - - - - - - - - - - - -
244
- - - - - - - - - - - - - - - - - - - - - - -->
246
<xsl:template match="library">
248
/****************************************************************************
250
* forward declarations
252
****************************************************************************/
255
<xsl:call-template name="emitNewline" />
256
<xsl:text>// *** interfaces with wsmap="struct"</xsl:text>
257
<xsl:call-template name="emitNewline" />
259
<xsl:for-each select="//interface[@wsmap='struct']">
260
<xsl:value-of select="concat('class vbox__', @name, ';')" />
261
<xsl:call-template name="emitNewline" />
264
<xsl:call-template name="emitNewline" />
265
<xsl:text>// *** collections</xsl:text>
266
<xsl:call-template name="emitNewline" />
268
<xsl:for-each select="//collection">
269
<xsl:value-of select="concat('class vbox__ArrayOf', @type, ';')" />
270
<xsl:call-template name="emitNewline" />
273
<xsl:if test="$G_basefmt='document'">
274
<xsl:call-template name="emitNewline" />
275
<xsl:text>// elements for message arguments (parts)</xsl:text>
276
<xsl:call-template name="emitNewline" />
278
<xsl:for-each select="//interface">
279
<xsl:variable name="ifname"><xsl:value-of select="@name" /></xsl:variable>
280
<xsl:variable name="wsmap"><xsl:value-of select="@wsmap" /></xsl:variable>
282
<xsl:if test='not( ($wsmap="suppress") or ($wsmap="struct") )'>
283
<xsl:value-of select="concat('// Interface ', $ifname)" />
284
<xsl:call-template name="emitNewline" />
286
<xsl:for-each select="attribute">
287
<xsl:variable name="attrname"><xsl:value-of select="@name" /></xsl:variable>
288
<xsl:variable name="attrtype"><xsl:value-of select="@type" /></xsl:variable>
289
<xsl:variable name="attrreadonly"><xsl:value-of select="@readonly" /></xsl:variable>
291
<xsl:when test="( $attrtype=($G_setSuppressedInterfaces/@name) )">
292
<xsl:value-of select="concat('// skipping attribute ', $attrtype, ' for it is of a suppressed type')" />
293
<xsl:call-template name="emitNewline" />
297
<xsl:when test="@readonly='yes'">
298
<xsl:value-of select="concat('// readonly attribute ', $ifname, '::', $attrname)" />
301
<xsl:value-of select="concat('// read/write attribute ', $ifname, '::', $attrname)" />
304
<xsl:call-template name="emitNewline" />
305
<!-- aa) emit getter -->
306
<xsl:variable name="attrGetter"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
307
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $attrGetter, $G_requestMessageElementSuffix, ';')" />
308
<xsl:call-template name="emitNewline" />
309
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $attrGetter, $G_responseMessageElementSuffix, ';')" />
310
<xsl:call-template name="emitNewline" />
311
<!-- bb) emit setter if the attribute is read/write -->
312
<xsl:if test="not($attrreadonly='yes')">
313
<xsl:variable name="attrSetter"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
314
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $attrSetter, $G_requestMessageElementSuffix, ';')" />
315
<xsl:call-template name="emitNewline" />
316
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $attrSetter, $G_responseMessageElementSuffix, ';')" />
317
<xsl:call-template name="emitNewline" />
321
</xsl:for-each> <!-- select="attribute" -->
322
<xsl:for-each select="method">
323
<xsl:variable name="methodname"><xsl:value-of select="@name" /></xsl:variable>
324
<!-- skip this method if it has parameters of a type that has wsmap="suppress" -->
326
<xsl:when test="param[@type=($G_setSuppressedInterfaces/@name)]">
327
<xsl:value-of select="concat('// skipping method ', $ifname, '::', $methodname, ' for it has parameters with suppressed types')" />
328
<xsl:call-template name="emitNewline" />
331
<xsl:value-of select="concat('// method ', $ifname, '::', $methodname)" />
332
<xsl:call-template name="emitNewline" />
333
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $methodname, $G_requestMessageElementSuffix, ';')" />
334
<xsl:call-template name="emitNewline" />
335
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $methodname, $G_responseMessageElementSuffix, ';')" />
336
<xsl:call-template name="emitNewline" />
342
</xsl:if> <!-- document style -->
345
/****************************************************************************
349
****************************************************************************/
353
class _vbox__InvalidObjectFault
355
std::string badObjectID 1;
359
class _vbox__RuntimeFault
362
std::string interfaceID 1;
363
std::string component 1;
368
struct SOAP_ENV__Detail
370
_vbox__InvalidObjectFault *vbox__InvalidObjectFault;
371
_vbox__RuntimeFault *vbox__RuntimeFault;
376
<xsl:call-template name="emitNewline" />
379
/****************************************************************************
383
****************************************************************************/
386
<xsl:for-each select="//enum">
387
<xsl:call-template name="emitNewline" />
388
<xsl:variable name="enumname" select="@name" />
389
<xsl:value-of select="concat('enum vbox__', $enumname)" />
390
<xsl:call-template name="emitNewline" />
391
<xsl:text>{</xsl:text>
392
<xsl:call-template name="emitNewline" />
393
<xsl:for-each select="const">
394
<xsl:if test="position() > 1">
395
<xsl:text>,</xsl:text>
396
<xsl:call-template name="emitNewline" />
398
<xsl:value-of select="concat(' vbox__', $enumname, '__')" />
399
<!-- escape all "_" in @name -->
400
<xsl:call-template name="escapeUnderscores">
401
<xsl:with-param name="string" select="@name" />
404
<xsl:call-template name="emitNewline" />
405
<xsl:text>};</xsl:text>
406
<xsl:call-template name="emitNewline" />
410
/****************************************************************************
414
****************************************************************************/
417
<xsl:for-each select="//interface[@wsmap='struct']">
418
<xsl:call-template name="emitNewline" />
419
<xsl:value-of select="concat('// interface ', @name, ' as struct: ')" />
420
<xsl:call-template name="emitNewline" />
422
<xsl:value-of select="concat('class vbox__', @name)" />
423
<xsl:call-template name="emitNewline" />
424
<xsl:text>{ public:</xsl:text>
425
<xsl:call-template name="emitNewline" />
427
<xsl:for-each select="attribute">
428
<xsl:text> </xsl:text>
429
<xsl:call-template name="emitConvertedType"><xsl:with-param name="type" select="@type" /></xsl:call-template>
430
<xsl:value-of select="concat(' ', @name, ' 1;')" />
431
<xsl:call-template name="emitNewline" />
434
<xsl:text> struct soap *soap;</xsl:text>
435
<xsl:call-template name="emitNewline" />
436
<xsl:text>};</xsl:text>
437
<xsl:call-template name="emitNewline" />
441
/****************************************************************************
445
****************************************************************************/
448
<xsl:for-each select="//collection">
449
<xsl:call-template name="emitNewline" />
450
<xsl:value-of select="concat('class vbox__ArrayOf', @type)" />
451
<xsl:call-template name="emitNewline" />
452
<xsl:text>{ public:</xsl:text>
453
<xsl:call-template name="emitNewline" />
454
<xsl:text> std::vector<</xsl:text>
455
<xsl:call-template name="emitConvertedType"><xsl:with-param name="type" select="@type" /></xsl:call-template>
456
<xsl:text>> array 0;</xsl:text>
457
<xsl:call-template name="emitNewline" />
459
<xsl:text> struct soap *soap;</xsl:text>
460
<xsl:call-template name="emitNewline" />
461
<xsl:text>};</xsl:text>
462
<xsl:call-template name="emitNewline" />
466
<xsl:if test="$G_basefmt='document'">
468
/****************************************************************************
470
* elements for message arguments (parts); generated for WSDL 'document' style
472
****************************************************************************/
476
<xsl:for-each select="//interface">
477
<xsl:variable name="ifname"><xsl:value-of select="@name" /></xsl:variable>
478
<xsl:variable name="wsmap"><xsl:value-of select="@wsmap" /></xsl:variable>
480
<xsl:if test='not( ($wsmap="suppress") or ($wsmap="struct") )'>
481
<xsl:call-template name="emitNewline" />
482
<xsl:value-of select="concat('// Interface ', $ifname)" />
483
<xsl:call-template name="emitNewline" />
485
<xsl:call-template name="debugMsg"><xsl:with-param name="msg" select="concat($ifname, ' interface: ', 'all attributes')" /></xsl:call-template>
486
<xsl:for-each select="attribute">
487
<xsl:variable name="attrname"><xsl:value-of select="@name" /></xsl:variable>
488
<xsl:variable name="attrtype"><xsl:value-of select="@type" /></xsl:variable>
489
<xsl:variable name="attrreadonly"><xsl:value-of select="@readonly" /></xsl:variable>
490
<xsl:call-template name="emitNewline" />
492
<xsl:when test="( $attrtype=($G_setSuppressedInterfaces/@name) )">
493
<xsl:value-of select="concat('// skipping attribute ', $attrtype, ' for it is of a suppressed type')" />
494
<xsl:call-template name="emitNewline" />
498
<xsl:when test="@readonly='yes'">
499
<xsl:value-of select="concat('// readonly attribute ', $ifname, '::', $attrname)" />
502
<xsl:value-of select="concat('// read/write attribute ', $ifname, '::', $attrname)" />
505
<xsl:call-template name="emitNewline" />
506
<!-- aa) emit getter -->
507
<xsl:variable name="attrGetter"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
508
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $attrGetter, $G_requestMessageElementSuffix)" />
509
<xsl:call-template name="emitNewline" />
510
<xsl:text>{ public:</xsl:text>
511
<xsl:call-template name="emitNewline" />
512
<xsl:call-template name="emitRequestArgs">
513
<xsl:with-param name="_ifname" select="$ifname" />
514
<xsl:with-param name="_wsmap" select="$wsmap" />
515
<xsl:with-param name="_methodname" select="$attrGetter" />
516
<xsl:with-param name="_params" select="/.." />
517
<!-- <xsl:with-param name="_valuetype" select="$attrtype" /> -->
519
<xsl:text> struct soap *soap;</xsl:text>
520
<xsl:call-template name="emitNewline" />
521
<xsl:text>};</xsl:text>
522
<xsl:call-template name="emitNewline" />
524
<xsl:call-template name="emitNewline" />
525
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $attrGetter, $G_responseMessageElementSuffix)" />
526
<xsl:call-template name="emitNewline" />
527
<xsl:text>{ public:</xsl:text>
528
<xsl:call-template name="emitNewline" />
529
<xsl:call-template name="emitResultArgs">
530
<xsl:with-param name="_ifname" select="$ifname" />
531
<xsl:with-param name="_methodname" select="$attrGetter" />
532
<xsl:with-param name="_params" select="/.." />
533
<xsl:with-param name="_resulttype" select="$attrtype" />
535
<xsl:text> struct soap *soap;</xsl:text>
536
<xsl:call-template name="emitNewline" />
537
<xsl:text>};</xsl:text>
538
<xsl:call-template name="emitNewline" />
539
<!-- bb) emit setter if the attribute is read/write -->
540
<xsl:if test="not($attrreadonly='yes')">
541
<xsl:variable name="attrSetter"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
542
<xsl:call-template name="emitNewline" />
543
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $attrSetter, $G_requestMessageElementSuffix)" />
544
<xsl:call-template name="emitNewline" />
545
<xsl:text>{ public:</xsl:text>
546
<xsl:call-template name="emitRequestArgs">
547
<xsl:with-param name="_ifname" select="$ifname" />
548
<xsl:with-param name="_wsmap" select="$wsmap" />
549
<xsl:with-param name="_methodname" select="$attrSetter" />
550
<xsl:with-param name="_params" select="/.." />
551
<xsl:with-param name="_valuetype" select="$attrtype" />
553
<xsl:call-template name="emitNewline" />
554
<xsl:text> struct soap *soap;</xsl:text>
555
<xsl:call-template name="emitNewline" />
556
<xsl:text>};</xsl:text>
557
<xsl:call-template name="emitNewline" />
558
<xsl:call-template name="emitNewline" />
559
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $attrSetter, $G_responseMessageElementSuffix)" />
560
<xsl:call-template name="emitNewline" />
561
<xsl:text>{ public:</xsl:text>
562
<xsl:call-template name="emitNewline" />
563
<xsl:call-template name="emitResultArgs">
564
<xsl:with-param name="_ifname" select="$ifname" />
565
<xsl:with-param name="_methodname" select="$attrSetter" />
566
<xsl:with-param name="_params" select="/.." />
568
<xsl:text> struct soap *soap;</xsl:text>
569
<xsl:call-template name="emitNewline" />
570
<xsl:text>};</xsl:text>
571
<xsl:call-template name="emitNewline" />
575
</xsl:for-each> <!-- select="attribute" -->
577
<xsl:call-template name="debugMsg"><xsl:with-param name="msg" select="concat($ifname, ' interface: ', 'all methods')" /></xsl:call-template>
578
<xsl:for-each select="method">
579
<xsl:variable name="methodname"><xsl:value-of select="@name" /></xsl:variable>
580
<xsl:call-template name="emitNewline" />
581
<!-- skip this method if it has parameters of a type that has wsmap="suppress" -->
583
<xsl:when test="param[@type=($G_setSuppressedInterfaces/@name)]">
584
<xsl:value-of select="concat('// skipping method ', $ifname, '::', $methodname, ' for it has parameters with suppressed types')" />
585
<xsl:call-template name="emitNewline" />
588
<xsl:value-of select="concat('// method ', $ifname, '::', $methodname)" />
589
<xsl:call-template name="emitNewline" />
590
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $methodname, $G_requestMessageElementSuffix)" />
591
<xsl:call-template name="emitNewline" />
592
<xsl:text>{ public:</xsl:text>
593
<xsl:call-template name="emitNewline" />
594
<xsl:call-template name="emitRequestArgs">
595
<xsl:with-param name="_ifname" select="$ifname" />
596
<xsl:with-param name="_wsmap" select="$wsmap" />
597
<xsl:with-param name="_methodname" select="$methodname" />
598
<xsl:with-param name="_params" select="param" />
600
<xsl:text> struct soap *soap;</xsl:text>
601
<xsl:call-template name="emitNewline" />
602
<xsl:text>};</xsl:text>
603
<xsl:call-template name="emitNewline" />
604
<!-- <xsl:if test="(count(param[@dir='out'] | param[@dir='return']) > 0)"> -->
605
<xsl:call-template name="emitNewline" />
606
<xsl:value-of select="concat('class _vbox__', $ifname, '_USCORE', $methodname, $G_responseMessageElementSuffix)" />
607
<xsl:call-template name="emitNewline" />
608
<xsl:text>{ public:</xsl:text>
609
<xsl:call-template name="emitNewline" />
610
<xsl:call-template name="emitResultArgs">
611
<xsl:with-param name="_ifname" select="$ifname" />
612
<xsl:with-param name="_wsmap" select="$wsmap" />
613
<xsl:with-param name="_methodname" select="$methodname" />
614
<xsl:with-param name="_params" select="param" />
616
<xsl:text> struct soap *soap;</xsl:text>
617
<xsl:call-template name="emitNewline" />
618
<xsl:text>};</xsl:text>
619
<xsl:call-template name="emitNewline" />
625
</xsl:for-each> <!-- interface (element declarations -->
628
/****************************************************************************
630
* service descriptions
632
****************************************************************************/
636
<xsl:value-of select="concat('//gsoap vbox service name: vbox', $G_bindingSuffix)" />
637
<xsl:call-template name="emitNewline" />
638
<xsl:value-of select="concat('//gsoap vbox service type: vbox', $G_portTypeSuffix)" />
639
<xsl:call-template name="emitNewline" />
640
<xsl:value-of select="concat('//gsoap vbox service namespace: ', $G_targetNamespace, $G_targetNamespaceSeparator)" />
641
<xsl:call-template name="emitNewline" />
642
<xsl:value-of select="concat('//gsoap vbox service transport: ', 'http://schemas.xmlsoap.org/soap/http')" />
643
<xsl:call-template name="emitNewline" />
645
</xsl:if> <!-- document style -->
647
<xsl:apply-templates />
651
<!-- - - - - - - - - - - - - - - - - - - - - - -
653
- - - - - - - - - - - - - - - - - - - - - - -->
655
<xsl:template match="module/class">
659
<!-- - - - - - - - - - - - - - - - - - - - - - -
661
- - - - - - - - - - - - - - - - - - - - - - -->
663
<xsl:template match="enum">
666
<!-- - - - - - - - - - - - - - - - - - - - - - -
668
- - - - - - - - - - - - - - - - - - - - - - -->
671
<xsl:template match="const">
672
<xsl:apply-templates />
676
<!-- - - - - - - - - - - - - - - - - - - - - - -
678
- - - - - - - - - - - - - - - - - - - - - - -->
680
<xsl:template match="desc">
684
<!-- - - - - - - - - - - - - - - - - - - - - - -
686
- - - - - - - - - - - - - - - - - - - - - - -->
688
<xsl:template match="note">
689
<xsl:apply-templates />
692
<xsl:template name="emitMethod">
693
<xsl:param name="ifname" />
694
<xsl:param name="methodname" />
695
<xsl:param name="fOutParams" />
697
<xsl:variable name="methodname2" select="concat($ifname, '_USCORE', $methodname)" />
699
<xsl:call-template name="emitNewline" />
700
<xsl:value-of select="concat('//gsoap vbox service method-style: ', $methodname2, ' ', $G_basefmt)" />
701
<xsl:call-template name="emitNewline" />
702
<xsl:value-of select="concat('//gsoap vbox service method-encoding: ', $methodname2, ' ', $G_parmfmt)" />
703
<xsl:call-template name="emitNewline" />
704
<xsl:value-of select="concat('//gsoap vbox service method-action: ', $methodname2, ' ""')" />
705
<xsl:call-template name="emitNewline" />
706
<xsl:value-of select="concat('//gsoap vbox service method-fault: ', $methodname2, ' vbox__InvalidObjectFault')" />
707
<xsl:call-template name="emitNewline" />
708
<xsl:value-of select="concat('//gsoap vbox service method-fault: ', $methodname2, ' vbox__RuntimeFault')" />
709
<xsl:call-template name="emitNewline" />
710
<xsl:value-of select="concat('int __vbox__', $methodname2, '(')" />
711
<xsl:call-template name="emitNewline" />
712
<xsl:value-of select="concat(' _vbox__', $methodname2, $G_requestMessageElementSuffix, '* vbox__', $ifname, '_USCORE', $methodname, $G_requestMessageElementSuffix)" />
713
<xsl:if test="$fOutParams">
714
<xsl:text>,</xsl:text>
715
<xsl:call-template name="emitNewline" />
716
<xsl:value-of select="concat(' _vbox__', $methodname2, $G_responseMessageElementSuffix, '* vbox__', $ifname, '_USCORE', $methodname, $G_responseMessageElementSuffix)" />
718
<xsl:call-template name="emitNewline" />
719
<xsl:text>);</xsl:text>
720
<xsl:call-template name="emitNewline" />
724
<!-- - - - - - - - - - - - - - - - - - - - - - -
726
- - - - - - - - - - - - - - - - - - - - - - -->
728
<xsl:template match="interface">
729
<!-- remember the interface name in local variables -->
730
<xsl:variable name="ifname"><xsl:value-of select="@name" /></xsl:variable>
731
<xsl:variable name="wsmap"><xsl:value-of select="@wsmap" /></xsl:variable>
733
<!-- we can save ourselves verifying the interface here as it's already
734
done in the WSDL converter -->
736
<xsl:if test='not( ($wsmap="suppress") or ($wsmap="struct") )'>
738
/****************************************************************************
740
* interface </xsl:text>
741
<xsl:value-of select="$ifname" />
744
****************************************************************************/
748
here come the attributes
750
<xsl:for-each select="attribute">
751
<xsl:variable name="attrname"><xsl:value-of select="@name" /></xsl:variable>
752
<xsl:variable name="attrtype"><xsl:value-of select="@type" /></xsl:variable>
753
<xsl:variable name="attrreadonly"><xsl:value-of select="@readonly" /></xsl:variable>
754
<xsl:call-template name="debugMsg"><xsl:with-param name="msg" select="concat('messages for ', $ifname, '::', $attrname, ': attribute of type "', $attrtype, '", readonly: ', $attrreadonly)" /></xsl:call-template>
755
<!-- skip this attribute if it has parameters of a type that has wsmap="suppress" -->
757
<xsl:when test="( $attrtype=($G_setSuppressedInterfaces/@name) )">
758
<xsl:comment><xsl:value-of select="concat('skipping attribute ', $attrtype, ' for it is of a suppressed type')" /></xsl:comment>
762
<xsl:when test="@readonly='yes'">
763
<xsl:comment> readonly attribute <xsl:copy-of select="$ifname" />::<xsl:copy-of select="$attrname" /> </xsl:comment>
766
<xsl:comment> read/write attribute <xsl:copy-of select="$ifname" />::<xsl:copy-of select="$attrname" /> </xsl:comment>
769
<!-- aa) get method: emit request and result -->
770
<xsl:variable name="attrGetter"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
771
<xsl:call-template name="emitMethod">
772
<xsl:with-param name="ifname" select="$ifname" />
773
<xsl:with-param name="methodname" select="$attrGetter" />
774
<xsl:with-param name="fOutParams" select="1" />
776
<!-- bb) emit a set method if the attribute is read/write -->
777
<xsl:if test="not($attrreadonly='yes')">
778
<xsl:variable name="attrSetter"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname" /></xsl:call-template></xsl:variable>
779
<xsl:call-template name="emitMethod">
780
<xsl:with-param name="ifname" select="$ifname" />
781
<xsl:with-param name="methodname" select="$attrSetter" />
782
<xsl:with-param name="fOutParams" select="1" />
787
</xsl:for-each> <!-- select="attribute" -->
790
here come the real methods
793
<xsl:for-each select="method">
794
<xsl:variable name="methodname"><xsl:value-of select="@name" /></xsl:variable>
797
<xsl:when test="param[@type=($G_setSuppressedInterfaces/@name)]">
798
<xsl:comment><xsl:value-of select="concat('skipping method ', $methodname, ' for it has parameters with suppressed types')" /></xsl:comment>
801
<xsl:call-template name="emitMethod">
802
<xsl:with-param name="ifname" select="$ifname" />
803
<xsl:with-param name="methodname" select="$methodname" />
804
<xsl:with-param name="fOutParams" select="1" /> <!-- (count(param[@dir='out'] | param[@dir='return']) > 0)" /> -->