VirtualBox

source: vbox/trunk/src/VBox/Main/webservice/websrv-python.xsl

Last change on this file was 98108, checked in by vboxsync, 16 months ago

Manual (C) year updates.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id Revision
File size: 29.5 KB
RevLine 
[16120]1<xsl:stylesheet version = '1.0'
2 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
3 xmlns:vbox="http://www.virtualbox.org/">
4
5<!--
6 websrv-python.xsl:
7 XSLT stylesheet that generates VirtualBox_services.py from
8 VirtualBox.xidl. This Python file represents our
9 web service API. Depends on WSDL file for actual SOAP bindings.
[96308]10-->
11<!--
[98103]12 Copyright (C) 2008-2023 Oracle and/or its affiliates.
[16120]13
[96407]14 This file is part of VirtualBox base platform packages, as
15 available from https://www.virtualbox.org.
16
17 This program is free software; you can redistribute it and/or
18 modify it under the terms of the GNU General Public License
19 as published by the Free Software Foundation, in version 3 of the
20 License.
21
22 This program is distributed in the hope that it will be useful, but
23 WITHOUT ANY WARRANTY; without even the implied warranty of
24 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25 General Public License for more details.
26
27 You should have received a copy of the GNU General Public License
28 along with this program; if not, see <https://www.gnu.org/licenses>.
29
30 SPDX-License-Identifier: GPL-3.0-only
[16120]31-->
32
33
34<xsl:output
35 method="text"
36 version="1.0"
37 encoding="utf-8"
38 indent="no"/>
39
[45483]40<xsl:include href="../idl/typemap-shared.inc.xsl" />
[16120]41
42<xsl:variable name="G_setSuppressedInterfaces"
43 select="//interface[@wsmap='suppress']" />
44
45<xsl:template name="emitConvertedType">
46 <xsl:param name="ifname" />
47 <xsl:param name="methodname" />
48 <xsl:param name="type" />
49 <xsl:choose>
50 <xsl:when test="$type='wstring'">String</xsl:when>
[23552]51 <xsl:when test="$type='uuid'">String</xsl:when>
[16120]52 <xsl:when test="$type='boolean'">Boolean</xsl:when>
53 <xsl:when test="$type='unsigned long'">UnsignedInt</xsl:when>
54 <xsl:when test="$type='double'">Double</xsl:when>
55 <xsl:when test="$type='float'">Float</xsl:when>
56 <xsl:when test="$type='long'">Int</xsl:when>
57 <xsl:when test="$type='long long'">Long</xsl:when>
58 <xsl:when test="$type='short'">Short</xsl:when>
59 <xsl:when test="$type='unsigned short'">UnsignedShort</xsl:when>
60 <xsl:when test="$type='unsigned long long'">UnsignedLong</xsl:when>
61 <xsl:when test="$type='result'">UnsignedInt</xsl:when>
[28675]62 <xsl:when test="$type='octet'">Octet</xsl:when>
[16120]63 <xsl:when test="$type='$unknown'">IUnknown</xsl:when>
64 <xsl:otherwise><xsl:value-of select="$type" /></xsl:otherwise>
65 </xsl:choose>
66</xsl:template>
67
68<xsl:template name="emitOutParam">
69 <xsl:param name="ifname" />
70 <xsl:param name="methodname" />
71 <xsl:param name="type" />
72 <xsl:param name="value" />
73 <xsl:param name="safearray" />
[21863]74
[36883]75 <xsl:choose>
76 <xsl:when test="$type='octet' and $safearray">
77 <xsl:value-of select="concat('self.mgr.decodebase64(',$value,')')" />
78 </xsl:when>
79 <xsl:otherwise>
80 <xsl:call-template name="emitConvertedType">
81 <xsl:with-param name="ifname" select="$ifname" />
82 <xsl:with-param name="methodname" select="$methodname" />
83 <xsl:with-param name="type" select="$type" />
84 </xsl:call-template>
85 <xsl:text>(</xsl:text>
86 <xsl:text>self.mgr,</xsl:text>
87 <xsl:value-of select="$value"/>
88 <xsl:if test="$safearray='yes'">
89 <xsl:value-of select="', True'"/>
90 </xsl:if>
91 <xsl:text>)</xsl:text>
92 </xsl:otherwise>
93 </xsl:choose>
[16120]94</xsl:template>
95
96
97<xsl:template name="emitGetAttribute">
98 <xsl:param name="ifname" />
99 <xsl:param name="attrname" />
100 <xsl:param name="attrtype" />
101 <xsl:param name="attrsafearray" />
102 <xsl:variable name="fname"><xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="$attrname"/></xsl:call-template> </xsl:variable>
103 def <xsl:value-of select="$fname"/>(self):
104 req=<xsl:value-of select="$ifname"/>_<xsl:value-of select="$fname"/>RequestMsg()
105 req._this=self.handle
[20036]106 val=self.mgr.getPort().<xsl:value-of select="$ifname"/>_<xsl:value-of select="$fname"/>(req)
[59486]107 <xsl:text>return </xsl:text>
[16120]108 <xsl:call-template name="emitOutParam">
109 <xsl:with-param name="ifname" select="$ifname" />
110 <xsl:with-param name="methodname" select="@name" />
111 <xsl:with-param name="type" select="$attrtype" />
112 <xsl:with-param name="value" select="concat('val.','_returnval')" />
[59486]113 <xsl:with-param name="safearray" select="$attrsafearray"/>
[21863]114 </xsl:call-template>
[16120]115</xsl:template>
116
117<xsl:template name="emitSetAttribute">
118 <xsl:param name="ifname" />
119 <xsl:param name="attrname" />
120 <xsl:param name="attrtype" />
121 <xsl:param name="attrsafearray" />
122 <xsl:variable name="fname"><xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="$attrname"/></xsl:call-template> </xsl:variable>
123 def <xsl:value-of select="$fname"/>(self, value):
124 req=<xsl:value-of select="$ifname"/>_<xsl:value-of select="$fname"/>RequestMsg()
125 req._this=self.handle
[59488]126 if type(value) in [int, bool, basestring, str<xsl:if test="$attrsafearray='yes'">, tuple, list</xsl:if>]:
[59487]127 req._<xsl:value-of select="$attrname"/> = value
[16120]128 else:
[59487]129 req._<xsl:value-of select="$attrname"/> = value.handle
[21863]130 self.mgr.getPort().<xsl:value-of select="$ifname"/>_<xsl:value-of select="$fname"/>(req)
[16120]131</xsl:template>
132
133<xsl:template name="collection">
134 <xsl:variable name="cname"><xsl:value-of select="@name" /></xsl:variable>
135 <xsl:variable name="ename"><xsl:value-of select="@type" /></xsl:variable>
136class <xsl:value-of select="$cname"/>:
[20036]137 def __init__(self, mgr, array):
[16120]138 self.array = array
[20036]139 self.mgr = mgr
[16120]140
141 def __next(self):
142 return self.array.__next()
143
144 def __size(self):
145 return self.array._array.__size()
146
147 def __len__(self):
148 return self.array._array.__len__()
149
150 def __getitem__(self, index):
[20036]151 return <xsl:value-of select="$ename"/>(self.mgr, self.array._array[index])
[21863]152
[16120]153</xsl:template>
154
[21640]155
156<xsl:template name="computeExtends">
157 <xsl:param name="base" />
[21863]158
[21640]159 <xsl:choose>
[50183]160 <xsl:when test="($base = '$unknown')">
[21640]161 <xsl:value-of select="'IUnknown'"/>
162 </xsl:when>
[21863]163 <xsl:when test="($base = '$errorinfo') ">
164 <xsl:value-of select="'IUnknown'"/>
165 </xsl:when>
166 <xsl:otherwise>
[21640]167 <xsl:value-of select="$base"/>
168 </xsl:otherwise>
169 </xsl:choose>
170</xsl:template>
171
[16120]172<xsl:template name="interface">
[21640]173 <xsl:variable name="base">
174 <xsl:call-template name="computeExtends">
175 <xsl:with-param name="base" select="@extends" />
176 </xsl:call-template>
177 </xsl:variable>
[16120]178 <xsl:variable name="ifname"><xsl:value-of select="@name" /></xsl:variable>
[21640]179
180class <xsl:value-of select="$ifname"/>(<xsl:value-of select="$base" />):
[20036]181 def __init__(self, mgr, handle, isarray = False):
182 self.mgr = mgr
[21640]183 if handle is None:
[20036]184 raise Exception("bad handle: "+str(handle))
[16120]185 self.handle = handle
186 self.isarray = isarray
[61186]187 if self.isarray:
188 for strHnd in handle:
189 mgr.register(strHnd)
190 else:
191 mgr.register(self.handle)
[16120]192
193 def __del__(self):
[61186]194 self.releaseRemote()
195
[16120]196 def releaseRemote(self):
197 try:
[61186]198 if self.handle is not None:
199 if self.isarray:
200 for strHnd in self.handle:
201 self.mgr.unregister(strHnd)
202 else:
203 self.mgr.unregister(self.handle)
204 self.handle = None;
[16120]205 except:
206 pass
207
208 def __next(self):
209 if self.isarray:
210 return self.handle.__next()
[59798]211 raise TypeError("iteration over non-sequence")
[16120]212
213 def __size(self):
[21863]214 if self.isarray:
[16120]215 return self.handle.__size()
[59798]216 raise TypeError("iteration over non-sequence")
[16120]217
218 def __len__(self):
219 if self.isarray:
220 return self.handle.__len__()
[59798]221 raise TypeError("iteration over non-sequence")
[16120]222
223 def __getitem__(self, index):
224 if self.isarray:
[20036]225 return <xsl:value-of select="$ifname" />(self.mgr, self.handle[index])
[59798]226 raise TypeError("iteration over non-sequence")
[16120]227
228 def __str__(self):
[61186]229 if self.isarray:
230 return str(self.handle)
231 else:
232 return self.handle
[21863]233
[16120]234 def isValid(self):
235 return self.handle != None and self.handle != ''
236
237 def __getattr__(self,name):
238 hndl = <xsl:value-of select="$ifname" />._Attrs_.get(name, None)
[21640]239 if hndl != None:
240 if hndl[0] != None:
241 return hndl[0](self)
242 else:
243 raise AttributeError
[16120]244 else:
[21640]245 return <xsl:value-of select="$base" />.__getattr__(self, name)
[16120]246
247 def __setattr__(self, name, val):
248 hndl = <xsl:value-of select="$ifname" />._Attrs_.get(name, None)
249 if (hndl != None and hndl[1] != None):
250 hndl[1](self,val)
251 else:
252 self.__dict__[name] = val
253
254 <xsl:for-each select="method">
255 <xsl:call-template name="method"/>
256 </xsl:for-each>
257
258 <xsl:for-each select="attribute">
259 <xsl:variable name="attrname"><xsl:value-of select="@name" /></xsl:variable>
260 <xsl:variable name="attrtype"><xsl:value-of select="@type" /></xsl:variable>
261 <xsl:variable name="attrreadonly"><xsl:value-of select="@readonly" /></xsl:variable>
[59486]262 <xsl:variable name="attrsafearray"><xsl:value-of select="@safearray" /></xsl:variable>
[16120]263 <!-- skip this attribute if it has parameters of a type that has wsmap="suppress" -->
264 <xsl:choose>
265 <xsl:when test="( $attrtype=($G_setSuppressedInterfaces/@name) )">
266 <xsl:comment><xsl:value-of select="concat('skipping attribute ', $attrtype, ' for it is of a suppressed type')" /></xsl:comment>
267 </xsl:when>
268 <xsl:otherwise>
269 <xsl:choose>
270 <xsl:when test="@readonly='yes'">
271 <xsl:comment> readonly attribute <xsl:copy-of select="$ifname" />::<xsl:copy-of select="$attrname" /> </xsl:comment>
272 </xsl:when>
273 <xsl:otherwise>
274 <xsl:comment> read/write attribute <xsl:copy-of select="$ifname" />::<xsl:copy-of select="$attrname" /> </xsl:comment>
275 </xsl:otherwise>
276 </xsl:choose>
277 <!-- aa) get method: emit request and result -->
278 <xsl:call-template name="emitGetAttribute">
279 <xsl:with-param name="ifname" select="$ifname" />
280 <xsl:with-param name="attrname" select="$attrname" />
281 <xsl:with-param name="attrtype" select="$attrtype" />
[59486]282 <xsl:with-param name="attrsafearray" select="$attrsafearray" />
[16120]283 </xsl:call-template>
284 <!-- bb) emit a set method if the attribute is read/write -->
285 <xsl:if test="not($attrreadonly='yes')">
286 <xsl:call-template name="emitSetAttribute">
287 <xsl:with-param name="ifname" select="$ifname" />
288 <xsl:with-param name="attrname" select="$attrname" />
289 <xsl:with-param name="attrtype" select="$attrtype" />
[59486]290 <xsl:with-param name="attrsafearray" select="$attrsafearray" />
[16120]291 </xsl:call-template>
292 </xsl:if>
293 </xsl:otherwise>
294 </xsl:choose>
295 </xsl:for-each>
296
297
298 _Attrs_=<xsl:text>{</xsl:text>
299 <xsl:for-each select="attribute">
300 <xsl:if test="not( @type=($G_setSuppressedInterfaces/@name) )">
301 <xsl:text> </xsl:text>'<xsl:value-of select="@name"/>'<xsl:text>:[</xsl:text>
302 <xsl:call-template name="makeGetterName">
303 <xsl:with-param name="attrname" select="@name"/>
304 </xsl:call-template>
305 <xsl:text>,</xsl:text>
306 <xsl:choose>
307 <xsl:when test="@readonly='yes'">
308 <xsl:text>None</xsl:text>
309 </xsl:when>
310 <xsl:otherwise>
311 <xsl:call-template name="makeSetterName">
312 <xsl:with-param name="attrname" select="@name"/>
313 </xsl:call-template>,
314 </xsl:otherwise>
315 </xsl:choose>
316 <xsl:text>]</xsl:text>
317 <xsl:if test="not(position()=last())"><xsl:text>,&#10;</xsl:text></xsl:if>
318 </xsl:if>
319 </xsl:for-each>
320 <xsl:text>}</xsl:text>
321</xsl:template>
322
323<xsl:template name="interfacestruct">
324 <xsl:variable name="ifname"><xsl:value-of select="@name" /></xsl:variable>
325class <xsl:value-of select="$ifname"/>:
[21640]326 def __init__(self, mgr, handle, isarray = False):
[20036]327 self.mgr = mgr
[21640]328 self.isarray = isarray
329 if isarray:
330 self.handle = handle
331 else:
332<xsl:for-each select="attribute">
333 self.<xsl:value-of select="@name"/> = <xsl:call-template name="emitConvertedType">
334 <xsl:with-param name="ifname" select="$ifname" />
335 <xsl:with-param name="methodname" select="''" />
336 <xsl:with-param name="type" select="@type" />
337 </xsl:call-template>(self.mgr, handle._<xsl:value-of select="@name"/>)
[16120]338 </xsl:for-each>
[21640]339 pass
[16120]340
341 <!-- also do getters/setters -->
342 <xsl:for-each select="attribute">
343 def <xsl:call-template name="makeGetterName"><xsl:with-param name="attrname" select="@name"/></xsl:call-template>(self):
344 return self.<xsl:value-of select="@name"/>
[21863]345
[16120]346 def <xsl:call-template name="makeSetterName"><xsl:with-param name="attrname" select="@name"/></xsl:call-template>(self):
[59798]347 raise Error('setters not supported')
[16120]348 </xsl:for-each>
[21640]349
350 def __next(self):
351 if self.isarray:
352 return self.handle.__next()
[59798]353 raise TypeError("iteration over non-sequence")
[21640]354
355 def __size(self):
[21863]356 if self.isarray:
[21640]357 return self.handle.__size()
[59798]358 raise TypeError("iteration over non-sequence")
[21640]359
360 def __len__(self):
361 if self.isarray:
362 return self.handle.__len__()
[59798]363 raise TypeError("iteration over non-sequence")
[21640]364
365 def __getitem__(self, index):
366 if self.isarray:
367 return <xsl:value-of select="$ifname" />(self.mgr, self.handle[index])
[59798]368 raise TypeError("iteration over non-sequence")
[53932]369<xsl:call-template name="xsltprocNewlineOutputHack"/>
[16120]370</xsl:template>
371
[36883]372<xsl:template name="convertInParam">
373 <xsl:param name="type" />
374 <xsl:param name="safearray" />
375 <xsl:param name="arg" />
[69381]376
[36883]377 <xsl:choose>
378 <xsl:when test="$type='octet' and $safearray">
379 <xsl:value-of select="concat('self.mgr.encodebase64(',$arg,')')" />
380 </xsl:when>
381 <xsl:otherwise>
382 <xsl:value-of select="$arg" />
383 </xsl:otherwise>
384 </xsl:choose>
385</xsl:template>
386
[16120]387<xsl:template name="genreq">
388 <xsl:text>req=</xsl:text><xsl:value-of select="../@name"/>_<xsl:value-of select="@name"/>RequestMsg()
389 req._this=self.handle
390 <xsl:for-each select="param[@dir='in']">
[36883]391 req._<xsl:value-of select="@name" />=<xsl:call-template name="convertInParam">
392 <xsl:with-param name="type" select="@type" />
393 <xsl:with-param name="safearray" select="@safearray" />
394 <xsl:with-param name="arg" select="concat('_arg_', @name)" />
395 </xsl:call-template>
[16120]396 </xsl:for-each>
[20036]397 val=self.mgr.getPort().<xsl:value-of select="../@name"/>_<xsl:value-of select="@name"/>(req)
[21863]398 <!-- return needs to be the first one -->
[16120]399 return <xsl:for-each select="param[@dir='return']">
400 <xsl:call-template name="emitOutParam">
401 <xsl:with-param name="ifname" select="../@name" />
402 <xsl:with-param name="methodname" select="@name" />
403 <xsl:with-param name="type" select="@type" />
404 <xsl:with-param name="value" select="concat('val.','_returnval')" />
405 <xsl:with-param name="safearray" select="@safearray"/>
[21863]406 </xsl:call-template>
[16120]407 <xsl:if test="../param[@dir='out']">
408 <xsl:text>, </xsl:text>
409 </xsl:if>
410 </xsl:for-each>
411 <xsl:for-each select="param[@dir='out']">
412 <xsl:if test="not(position()=1)">
413 <xsl:text>, </xsl:text>
414 </xsl:if>
415 <xsl:call-template name="emitOutParam">
416 <xsl:with-param name="ifname" select="../@name" />
417 <xsl:with-param name="methodname" select="@name" />
418 <xsl:with-param name="type" select="@type" />
419 <xsl:with-param name="value" select="concat('val._',@name)" />
420 <xsl:with-param name="safearray" select="@safearray"/>
421 </xsl:call-template>
422 </xsl:for-each>
423 <xsl:text>&#10;&#10;</xsl:text>
424</xsl:template>
425
[21863]426<xsl:template name="method" >
[16120]427 def <xsl:value-of select="@name"/><xsl:text>(self</xsl:text>
428 <xsl:for-each select="param[@dir='in']">
429 <xsl:text>, </xsl:text>
430 <xsl:value-of select="concat('_arg_',@name)"/>
431 </xsl:for-each><xsl:text>):&#10; </xsl:text>
432 <xsl:call-template name="genreq"/>
433</xsl:template>
434
[19320]435<xsl:template name="makeConstantName" >
436 <xsl:choose>
437 <!-- special case for reserved word, maybe will need more in the future -->
438 <xsl:when test="@name='None'">
439 <xsl:text>_None</xsl:text>
440 </xsl:when>
441 <xsl:otherwise>
442 <xsl:value-of select="@name"/>
443 </xsl:otherwise>
[21863]444 </xsl:choose>
[19320]445</xsl:template>
446
[16120]447<xsl:template name="enum">
448class <xsl:value-of select="@name"/>:
[20036]449 def __init__(self,mgr,handle):
450 self.mgr=mgr
[16120]451 if isinstance(handle,basestring):
452 self.handle=<xsl:value-of select="@name"/>._ValueMap[handle]
453 else:
454 self.handle=handle
455
456 def __eq__(self,other):
457 if isinstance(other,<xsl:value-of select="@name"/>):
458 return self.handle == other.handle
459 if isinstance(other,int):
460 return self.handle == other
[28751]461 if isinstance(other,basestring):
462 return str(self) == other
[16120]463 return False
464
465 def __ne__(self,other):
466 if isinstance(other,<xsl:value-of select="@name"/>):
467 return self.handle != other.handle
468 if isinstance(other,int):
469 return self.handle != other
[28751]470 if isinstance(other,basestring):
471 return str(self) != other
[16120]472 return True
473
474 def __str__(self):
475 return <xsl:value-of select="@name"/>._NameMap[self.handle]
476
477 def __int__(self):
478 return self.handle
479
480 _NameMap={<xsl:for-each select="const">
481 <xsl:value-of select="@value"/>:'<xsl:value-of select="@name"/>'<xsl:if test="not(position()=last())">,</xsl:if>
482 </xsl:for-each>}
483 _ValueMap={<xsl:for-each select="const">
484 '<xsl:value-of select="@name"/>':<xsl:value-of select="@value"/><xsl:if test="not(position()=last())">,</xsl:if>
485 </xsl:for-each>}
486
[19320]487<xsl:for-each select="const"><xsl:text> </xsl:text><xsl:call-template name="makeConstantName"><xsl:with-param name="name" select="@name"/></xsl:call-template>=<xsl:value-of select="@value"/><xsl:text>&#xa;</xsl:text>
[16120]488</xsl:for-each>
489</xsl:template>
490
491<xsl:template match="/">
[98108]492<xsl:text># Copyright (C) 2008-2023 Oracle and/or its affiliates.
[16120]493#
[29835]494# This file is part of a free software library; you can redistribute
495# it and/or modify it under the terms of the GNU Lesser General
496# Public License version 2.1 as published by the Free Software
497# Foundation and shipped in the "COPYING.LIB" file with this library.
498# The library is distributed in the hope that it will be useful,
499# but WITHOUT ANY WARRANTY of any kind.
[16120]500#
[29835]501# Oracle LGPL Disclaimer: For the avoidance of doubt, except that if
502# any license choice other than GPL or LGPL is available it will
503# apply instead, Oracle elects to use only the Lesser General Public
504# License version 2.1 (LGPLv2) at this time for any software where
505# a choice of LGPL license versions is made available with the
506# language indicating that LGPLv2 or any later version may be used,
507# or where a choice of which version of the LGPL is applied is
508# otherwise unspecified.
[16124]509#
[96417]510# SPDX-License-Identifier: LGPL-2.1-only
511#
512
513#
[16120]514# This file is autogenerated from VirtualBox.xidl, DO NOT EDIT!
515#
516
[59491]517# Works only with ZSI 2.0 generated stubs (part of the VirtualBox SDK).
518from VirtualBox_client import *
[31117]519
[61186]520class ObjectRefManager:
521 def __init__(self, sessionmgr):
[16120]522 self.map = {}
[61186]523 self.sessionmgr = sessionmgr
[16120]524
[61186]525 def register(self, handle):
[16120]526 if handle == None:
527 return
528 c = self.map.get(handle,0)
529 c = c + 1
530 self.map[handle]=c
531
[61186]532 def unregister(self, handle):
[16120]533 if handle == None:
534 return
535 c = self.map.get(handle,-1)
536 if c == -1:
[59798]537 raise Error('wrong refcount')
[16120]538 c = c - 1
539 if c == 0:
540 try:
[21863]541 req=IManagedObjectRef_releaseRequestMsg()
[16120]542 req._this=handle
[61186]543 self.sessionmgr.getPort().IManagedObjectRef_release(req)
[16120]544 except:
545 pass
[61186]546 del self.map[handle]
[16120]547 else:
548 self.map[handle] = c
[21863]549
[16120]550class String:
[20036]551 def __init__(self, mgr, handle, isarray = False):
[16120]552 self.handle = handle
[21640]553 self.mgr = mgr
[16120]554 self.isarray = isarray
[21863]555
[16120]556 def __next(self):
557 if self.isarray:
558 return self.handle.__next()
[59798]559 raise TypeError("iteration over non-sequence")
[16120]560
561 def __size(self):
[21863]562 if self.isarray:
[16120]563 return self.handle.__size()
[59798]564 raise TypeError("iteration over non-sequence")
[16120]565
566 def __len__(self):
567 if self.isarray:
568 return self.handle.__len__()
[59798]569 raise TypeError("iteration over non-sequence")
[16120]570
571 def __getitem__(self, index):
572 if self.isarray:
[21640]573 return String(self.mgr, self.handle[index])
[59798]574 raise TypeError("iteration over non-sequence")
[16120]575
576 def __str__(self):
[21640]577 return str(self.handle)
[16120]578
579 def __eq__(self,other):
580 if self.isarray:
581 return isinstance(other,String) and self.handle == other.handle
582 if isinstance(other,String):
583 return self.handle == other.handle
584 if isinstance(other,basestring):
585 return self.handle == other
586 return False
587
588 def __ne__(self,other):
589 if self.isarray:
[28751]590 return not isinstance(other,String) or self.handle != other.handle
[16120]591 if isinstance(other,String):
592 return self.handle != other.handle
593 if isinstance(other,basestring):
594 return self.handle != other
595 return True
596
[21640]597 def __add__(self,other):
598 return str(self.handle)+str(other)
[16120]599
[21640]600
[16120]601class Boolean:
[21863]602 def __init__(self, mgr, handle, isarray = False):
[16120]603 self.handle = handle
[21640]604 if self.handle == "false":
605 self.handle = None
606 self.mgr = mgr
[16120]607 self.isarray = isarray
[21863]608
[16120]609 def __str__(self):
[28675]610 if self.handle:
[21863]611 return "true"
612 else:
613 return "false"
[16120]614
615 def __eq__(self,other):
616 if isinstance(other,Bool):
617 return self.handle == other.value
618 if isinstance(other,bool):
619 return self.handle == other
620 return False
621
622 def __ne__(self,other):
623 if isinstance(other,Bool):
624 return self.handle != other.handle
625 if isinstance(other,bool):
626 return self.handle != other
627 return True
628
[21640]629 def __int__(self):
[21863]630 if self.handle:
[28675]631 return 1
[21863]632 else:
633 return 0
[21640]634
635 def __long__(self):
[21863]636 if self.handle:
[28675]637 return 1
[21863]638 else:
639 return 0
[21640]640
641 def __nonzero__(self):
[21863]642 if self.handle:
643 return True
644 else:
645 return False
[21640]646
647 def __next(self):
648 if self.isarray:
649 return self.handle.__next()
[59798]650 raise TypeError("iteration over non-sequence")
[21640]651
652 def __size(self):
[21863]653 if self.isarray:
[21640]654 return self.handle.__size()
[59798]655 raise TypeError("iteration over non-sequence")
[21640]656
657 def __len__(self):
658 if self.isarray:
659 return self.handle.__len__()
[59798]660 raise TypeError("iteration over non-sequence")
[21640]661
662 def __getitem__(self, index):
663 if self.isarray:
664 return Boolean(self.mgr, self.handle[index])
[59798]665 raise TypeError("iteration over non-sequence")
[21640]666
[28675]667class Number:
[20036]668 def __init__(self, mgr, handle, isarray = False):
[16120]669 self.handle = handle
[21640]670 self.mgr = mgr
[16120]671 self.isarray = isarray
[21863]672
[16120]673 def __next(self):
674 if self.isarray:
675 return self.handle.__next()
[59798]676 raise TypeError("iteration over non-sequence")
[16120]677
678 def __size(self):
[21863]679 if self.isarray:
[16120]680 return self.handle.__size()
[59798]681 raise TypeError("iteration over non-sequence")
[16120]682
683 def __len__(self):
684 if self.isarray:
685 return self.handle.__len__()
[59798]686 raise TypeError("iteration over non-sequence")
[16120]687
[28675]688 def __str__(self):
689 return str(self.handle)
[16120]690
[28675]691 def __int__(self):
692 return int(self.handle)
[21863]693
[28675]694 def __long__(self):
695 return long(self.handle)
696
697 def __float__(self):
698 return float(self.handle)
699
[28751]700 def __lt__(self, other):
701 if self.isarray:
702 return NotImplemented
703 else:
704 return self.handle &lt; other
705
706 def __le__(self, other):
707 if self.isarray:
708 return NotImplemented
709 else:
710 return self.handle &lt;= other
711
712 def __eq__(self, other):
713 return self.handle == other
714
715 def __ne__(self, other):
716 return self.handle != other
717
718 def __gt__(self, other):
719 if self.isarray:
720 return NotImplemented
721 else:
722 return self.handle &gt; other
723
724 def __ge__(self, other):
725 if self.isarray:
726 return NotImplemented
727 else:
728 return self.handle &gt;= other
729
[36883]730class Octet:
[20036]731 def __init__(self, mgr, handle, isarray = False):
[21640]732 self.mgr = mgr
[16120]733 self.isarray = isarray
[36883]734 if isarray:
735 self.handle = mgr.decodebase64(handle)
736 else:
[59798]737 raise TypeError("only octet arrays")
[16120]738
[28675]739 def __getitem__(self, index):
[36883]740 return self.handle[index]
[16120]741
[28675]742 def __str__(self):
[36883]743 return str(self.handle)
[16120]744
[36883]745 def __len__(self):
746 return self.handle.__len__()
747
[28675]748class UnsignedInt(Number):
749 def __init__(self, mgr, handle, isarray = False):
750 self.handle = handle
751 self.mgr = mgr
752 self.isarray = isarray
[16120]753
754 def __getitem__(self, index):
755 if self.isarray:
[28675]756 return UnsignedInt(self.mgr, self.handle[index])
[59798]757 raise TypeError("iteration over non-sequence")
[21863]758
759
[28675]760class Int(Number):
[20036]761 def __init__(self, mgr, handle, isarray = False):
[16120]762 self.handle = handle
[21640]763 self.mgr = mgr
[16120]764 self.isarray = isarray
[21863]765
[28675]766 def __getitem__(self, index):
[21640]767 if self.isarray:
[28675]768 return Int(self.mgr, self.handle[index])
[59798]769 raise TypeError("iteration over non-sequence")
[21640]770
[28675]771class UnsignedShort(Number):
772 def __init__(self, mgr, handle, isarray = False):
773 self.handle = handle
774 self.mgr = mgr
775 self.isarray = isarray
[21640]776
777 def __getitem__(self, index):
778 if self.isarray:
779 return UnsignedShort(self.mgr, self.handle[index])
[59798]780 raise TypeError("iteration over non-sequence")
[21640]781
[28675]782class Short(Number):
[20036]783 def __init__(self, mgr, handle, isarray = False):
[16120]784 self.handle = handle
[21640]785 self.mgr = mgr
786 self.isarray = isarray
[21863]787
[21640]788 def __getitem__(self, index):
789 if self.isarray:
790 return Short(self.mgr, self.handle[index])
[59798]791 raise TypeError("iteration over non-sequence")
[21640]792
[28675]793class UnsignedLong(Number):
[20036]794 def __init__(self, mgr, handle, isarray = False):
[16120]795 self.handle = handle
[21640]796 self.mgr = mgr
797 self.isarray = isarray
[21863]798
[21640]799 def __getitem__(self, index):
800 if self.isarray:
801 return UnsignedLong(self.mgr, self.handle[index])
[59798]802 raise TypeError("iteration over non-sequence")
[21640]803
[28675]804class Long(Number):
[20036]805 def __init__(self, mgr, handle, isarray = False):
[16120]806 self.handle = handle
[21640]807 self.mgr = mgr
808 self.isarray = isarray
809
810 def __getitem__(self, index):
811 if self.isarray:
812 return Long(self.mgr, self.handle[index])
[59798]813 raise TypeError("iteration over non-sequence")
[21640]814
[28675]815class Double(Number):
[20036]816 def __init__(self, mgr, handle, isarray = False):
[16120]817 self.handle = handle
[21640]818 self.mgr = mgr
819 self.isarray = isarray
[21863]820
[21640]821 def __getitem__(self, index):
822 if self.isarray:
823 return Double(self.mgr, self.handle[index])
[59798]824 raise TypeError("iteration over non-sequence")
[21640]825
[28675]826class Float(Number):
[20036]827 def __init__(self, mgr, handle, isarray = False):
[16120]828 self.handle = handle
[21863]829 self.mgr = mgr
[21640]830 self.isarray = isarray
831
832 def __getitem__(self, index):
833 if self.isarray:
834 return Float(self.mgr, self.handle[index])
[59798]835 raise TypeError("iteration over non-sequence")
[21640]836
[16120]837class IUnknown:
[20036]838 def __init__(self, mgr, handle, isarray = False):
[16120]839 self.handle = handle
[20036]840 self.mgr = mgr
[16120]841 self.isarray = isarray
842
[21640]843 def __nonzero__(self):
[21863]844 if self.handle != "":
[28675]845 return True
[21863]846 else:
847 return False
[21640]848
[16120]849 def __next(self):
850 if self.isarray:
851 return self.handle.__next()
[59798]852 raise TypeError("iteration over non-sequence")
[16120]853
854 def __size(self):
[21863]855 if self.isarray:
[16120]856 return self.handle.__size()
[59798]857 raise TypeError("iteration over non-sequence")
[16120]858
859 def __len__(self):
860 if self.isarray:
861 return self.handle.__len__()
[59798]862 raise TypeError("iteration over non-sequence")
[16120]863
864 def __getitem__(self, index):
865 if self.isarray:
[20036]866 return IUnknown(self.mgr, self.handle[index])
[59798]867 raise TypeError("iteration over non-sequence")
[21863]868
[16120]869 def __str__(self):
870 return str(self.handle)
871
[28751]872 def __eq__(self, other):
873 return self.handle == other
874
875 def __ne__(self, other):
876 return self.handle != other
877
[21640]878 def __getattr__(self,attr):
879 if self.__class__.__dict__.get(attr) != None:
880 return self.__class__.__dict__.get(attr)
881 if self.__dict__.get(attr) != None:
882 return self.__dict__.get(attr)
883 raise AttributeError
884
[16120]885</xsl:text>
886 <xsl:for-each select="//interface[@wsmap='managed' or @wsmap='global']">
887 <xsl:call-template name="interface"/>
888 </xsl:for-each>
889 <xsl:for-each select="//interface[@wsmap='struct']">
890 <xsl:call-template name="interfacestruct"/>
891 </xsl:for-each>
892 <xsl:for-each select="//enum">
893 <xsl:call-template name="enum"/>
894 </xsl:for-each>
[53932]895 <xsl:text>
[16120]896
[36883]897import base64
898
[61186]899class IWebsessionManager2(IWebsessionManager, ObjectRefManager):
[20036]900 def __init__(self, url):
901 self.url = url
902 self.port = None
903 self.handle = None
904 self.mgr = self
[61186]905 ObjectRefManager.__init__(self, self.mgr)
[16120]906
[20036]907 def getPort(self):
908 if self.port is None:
[31117]909 try:
910 self.port = vboxServiceLocator().getvboxPortType(self.url)
911 except:
912 self.port = vboxServiceLocator().getvboxServicePort(self.url)
[20036]913 return self.port
[16120]914
[36883]915 def decodebase64(self, str):
916 return base64.decodestring(str)
917
918 def encodebase64(self, str):
919 return base64.encodestring(str)
[53932]920</xsl:text>
[16120]921</xsl:template>
922
[21863]923</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use