[45491] | 1 | <?xml version="1.0"?>
|
---|
| 2 |
|
---|
| 3 | <!--
|
---|
| 4 | apiwrap-server.xsl:
|
---|
| 5 | XSLT stylesheet that generates C++ API wrappers (server side) from
|
---|
| 6 | VirtualBox.xidl.
|
---|
[96308] | 7 | -->
|
---|
| 8 | <!--
|
---|
[98103] | 9 | Copyright (C) 2010-2023 Oracle and/or its affiliates.
|
---|
[45491] | 10 |
|
---|
[96407] | 11 | This file is part of VirtualBox base platform packages, as
|
---|
| 12 | available from https://www.virtualbox.org.
|
---|
| 13 |
|
---|
| 14 | This program is free software; you can redistribute it and/or
|
---|
| 15 | modify it under the terms of the GNU General Public License
|
---|
| 16 | as published by the Free Software Foundation, in version 3 of the
|
---|
| 17 | License.
|
---|
| 18 |
|
---|
| 19 | This program is distributed in the hope that it will be useful, but
|
---|
| 20 | WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 21 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
| 22 | General Public License for more details.
|
---|
| 23 |
|
---|
| 24 | You should have received a copy of the GNU General Public License
|
---|
| 25 | along with this program; if not, see <https://www.gnu.org/licenses>.
|
---|
| 26 |
|
---|
| 27 | SPDX-License-Identifier: GPL-3.0-only
|
---|
[45491] | 28 | -->
|
---|
| 29 |
|
---|
| 30 | <xsl:stylesheet
|
---|
| 31 | version="1.0"
|
---|
| 32 | xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
---|
| 33 | xmlns:exsl="http://exslt.org/common"
|
---|
| 34 | extension-element-prefixes="exsl">
|
---|
| 35 |
|
---|
| 36 | <xsl:output method="text"/>
|
---|
| 37 |
|
---|
| 38 | <xsl:strip-space elements="*"/>
|
---|
| 39 |
|
---|
| 40 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 41 | global XSLT variables
|
---|
| 42 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 43 |
|
---|
| 44 | <xsl:variable name="G_xsltFilename" select="'apiwrap-server.xsl'"/>
|
---|
| 45 |
|
---|
[51426] | 46 | <xsl:variable name="G_root" select="/"/>
|
---|
| 47 |
|
---|
[45491] | 48 | <xsl:include href="typemap-shared.inc.xsl"/>
|
---|
| 49 |
|
---|
| 50 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53917] | 51 | Keys for more efficiently looking up of types.
|
---|
[53903] | 52 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 53 |
|
---|
| 54 | <xsl:key name="G_keyEnumsByName" match="//enum[@name]" use="@name"/>
|
---|
| 55 | <xsl:key name="G_keyInterfacesByName" match="//interface[@name]" use="@name"/>
|
---|
| 56 |
|
---|
| 57 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[45491] | 58 | templates for file separation
|
---|
| 59 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 60 |
|
---|
| 61 | <xsl:template match="interface" mode="startfile">
|
---|
| 62 | <xsl:param name="file"/>
|
---|
| 63 |
|
---|
[53915] | 64 | <xsl:call-template name="xsltprocNewlineOutputHack"/>
|
---|
[53875] | 65 | <xsl:value-of select="concat($G_sNewLine, '// ##### BEGINFILE "', $file, '"', $G_sNewLine)"/>
|
---|
[45491] | 66 | </xsl:template>
|
---|
| 67 |
|
---|
| 68 | <xsl:template match="interface" mode="endfile">
|
---|
| 69 | <xsl:param name="file"/>
|
---|
| 70 |
|
---|
[53875] | 71 | <xsl:value-of select="concat($G_sNewLine, '// ##### ENDFILE "', $file, '"', $G_sNewLine)"/>
|
---|
[45491] | 72 | </xsl:template>
|
---|
| 73 |
|
---|
| 74 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 75 | templates for file headers/footers
|
---|
| 76 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 77 |
|
---|
| 78 | <xsl:template name="fileheader">
|
---|
| 79 | <xsl:param name="class"/>
|
---|
| 80 | <xsl:param name="name"/>
|
---|
| 81 | <xsl:param name="type"/>
|
---|
| 82 |
|
---|
| 83 | <xsl:text>/** @file
|
---|
| 84 | </xsl:text>
|
---|
| 85 | <xsl:value-of select="concat(' * VirtualBox API class wrapper ', $type, ' for I', $class, '.')"/>
|
---|
| 86 | <xsl:text>
|
---|
| 87 | *
|
---|
| 88 | * DO NOT EDIT! This is a generated file.
|
---|
| 89 | * Generated from: src/VBox/Main/idl/VirtualBox.xidl
|
---|
| 90 | * Generator: src/VBox/Main/idl/apiwrap-server.xsl
|
---|
| 91 | */
|
---|
| 92 |
|
---|
[79737] | 93 | /*
|
---|
[98108] | 94 | * Copyright (C) 2010-2023 Oracle and/or its affiliates.
|
---|
[45491] | 95 | *
|
---|
[96412] | 96 | * This file is part of VirtualBox base platform packages, as
|
---|
| 97 | * available from https://www.virtualbox.org.
|
---|
| 98 | *
|
---|
| 99 | * This program is free software; you can redistribute it and/or
|
---|
| 100 | * modify it under the terms of the GNU General Public License
|
---|
| 101 | * as published by the Free Software Foundation, in version 3 of the
|
---|
| 102 | * License.
|
---|
| 103 | *
|
---|
| 104 | * This program is distributed in the hope that it will be useful, but
|
---|
| 105 | * WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 106 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
| 107 | * General Public License for more details.
|
---|
| 108 | *
|
---|
| 109 | * You should have received a copy of the GNU General Public License
|
---|
| 110 | * along with this program; if not, see <https://www.gnu.org/licenses>.
|
---|
| 111 | *
|
---|
| 112 | * SPDX-License-Identifier: GPL-3.0-only
|
---|
[45491] | 113 | */
|
---|
| 114 |
|
---|
| 115 | </xsl:text>
|
---|
| 116 | </xsl:template>
|
---|
| 117 |
|
---|
[53903] | 118 | <!-- Emits COM_INTERFACE_ENTRY statements for the current interface node and whatever it inherits from. -->
|
---|
[45491] | 119 | <xsl:template name="emitCOMInterfaces">
|
---|
[53903] | 120 | <xsl:value-of select="concat(' COM_INTERFACE_ENTRY(', @name, ')' , $G_sNewLine)"/>
|
---|
[45491] | 121 | <!-- now recurse to emit all base interfaces -->
|
---|
[53903] | 122 | <xsl:variable name="extends" select="@extends"/>
|
---|
[50183] | 123 | <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
|
---|
[53903] | 124 | <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
|
---|
| 125 | <xsl:call-template name="emitCOMInterfaces"/>
|
---|
| 126 | </xsl:for-each>
|
---|
[45491] | 127 | </xsl:if>
|
---|
| 128 | </xsl:template>
|
---|
| 129 |
|
---|
| 130 | <xsl:template match="interface" mode="classheader">
|
---|
[51426] | 131 | <xsl:param name="addinterfaces"/>
|
---|
[53875] | 132 | <xsl:value-of select="concat('#ifndef ', substring(@name, 2), 'Wrap_H_', $G_sNewLine)"/>
|
---|
[45491] | 133 | <xsl:value-of select="concat('#define ', substring(@name, 2), 'Wrap_H_')"/>
|
---|
| 134 | <xsl:text>
|
---|
[76488] | 135 | #ifndef RT_WITHOUT_PRAGMA_ONCE
|
---|
| 136 | # pragma once
|
---|
| 137 | #endif
|
---|
[45491] | 138 |
|
---|
| 139 | #include "VirtualBoxBase.h"
|
---|
| 140 | #include "Wrapper.h"
|
---|
| 141 |
|
---|
| 142 | </xsl:text>
|
---|
[79737] | 143 | <xsl:value-of select="concat('class ATL_NO_VTABLE ', substring(@name, 2), 'Wrap')"/>
|
---|
[45491] | 144 | <xsl:text>
|
---|
[79737] | 145 | : public VirtualBoxBase
|
---|
[45491] | 146 | </xsl:text>
|
---|
[79737] | 147 | <xsl:value-of select="concat(' , VBOX_SCRIPTABLE_IMPL(', @name, ')')"/>
|
---|
[53875] | 148 | <xsl:value-of select="$G_sNewLine"/>
|
---|
[51426] | 149 | <xsl:for-each select="exsl:node-set($addinterfaces)/token">
|
---|
[79737] | 150 | <xsl:value-of select="concat(' , VBOX_SCRIPTABLE_IMPL(', text(), ')')"/>
|
---|
[53875] | 151 | <xsl:value-of select="$G_sNewLine"/>
|
---|
[51426] | 152 | </xsl:for-each>
|
---|
[45491] | 153 | <xsl:text>{
|
---|
| 154 | Q_OBJECT
|
---|
| 155 |
|
---|
| 156 | public:
|
---|
| 157 | </xsl:text>
|
---|
[53875] | 158 | <xsl:value-of select="concat(' VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(', substring(@name, 2), 'Wrap, ', @name, ')', $G_sNewLine)"/>
|
---|
| 159 | <xsl:value-of select="concat(' DECLARE_NOT_AGGREGATABLE(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
|
---|
[45491] | 160 | <xsl:text> DECLARE_PROTECT_FINAL_CONSTRUCT()
|
---|
| 161 |
|
---|
| 162 | </xsl:text>
|
---|
[53875] | 163 | <xsl:value-of select="concat(' BEGIN_COM_MAP(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
|
---|
[45491] | 164 | <xsl:text> COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
---|
| 165 | </xsl:text>
|
---|
[53903] | 166 | <xsl:call-template name="emitCOMInterfaces"/>
|
---|
[53875] | 167 | <xsl:value-of select="concat(' COM_INTERFACE_ENTRY2(IDispatch, ', @name, ')', $G_sNewLine)"/>
|
---|
[51426] | 168 | <xsl:variable name="manualAddInterfaces">
|
---|
| 169 | <xsl:call-template name="checkoption">
|
---|
| 170 | <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
|
---|
| 171 | <xsl:with-param name="option" select="'manualaddinterfaces'"/>
|
---|
| 172 | </xsl:call-template>
|
---|
| 173 | </xsl:variable>
|
---|
| 174 | <xsl:if test="not($manualAddInterfaces = 'true')">
|
---|
| 175 | <xsl:for-each select="exsl:node-set($addinterfaces)/token">
|
---|
[53903] | 176 | <!-- This is super tricky, as the for-each switches to the node set,
|
---|
| 177 | which means the normal document isn't available any more. We get
|
---|
| 178 | the data we need, uses a for-each to switch document and then a
|
---|
| 179 | key() to look up the interface by name. -->
|
---|
[51426] | 180 | <xsl:variable name="addifname">
|
---|
| 181 | <xsl:value-of select="string(.)"/>
|
---|
| 182 | </xsl:variable>
|
---|
[53903] | 183 | <xsl:for-each select="$G_root">
|
---|
| 184 | <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
|
---|
| 185 | <xsl:call-template name="emitCOMInterfaces"/>
|
---|
| 186 | </xsl:for-each>
|
---|
| 187 | </xsl:for-each>
|
---|
[51426] | 188 | </xsl:for-each>
|
---|
| 189 | </xsl:if>
|
---|
[60765] | 190 | <xsl:value-of select="concat(' VBOX_TWEAK_INTERFACE_ENTRY(', @name, ')', $G_sNewLine)"/>
|
---|
| 191 | <xsl:text> END_COM_MAP()
|
---|
[45491] | 192 |
|
---|
| 193 | </xsl:text>
|
---|
[90828] | 194 | <xsl:value-of select="concat(' DECLARE_COMMON_CLASS_METHODS(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
|
---|
[45491] | 195 | </xsl:template>
|
---|
| 196 |
|
---|
| 197 | <xsl:template match="interface" mode="classfooter">
|
---|
[51426] | 198 | <xsl:param name="addinterfaces"/>
|
---|
[76091] | 199 | <xsl:if test="@wrap-gen-hook = 'yes'">
|
---|
| 200 | <xsl:text>
|
---|
| 201 | public:
|
---|
| 202 | virtual void i_callHook(const char *a_pszFunction) { RT_NOREF_PV(a_pszFunction); }
|
---|
| 203 | </xsl:text>
|
---|
| 204 | </xsl:if>
|
---|
[63147] | 205 | <xsl:text>
|
---|
| 206 | private:
|
---|
| 207 | DECLARE_CLS_COPY_CTOR_ASSIGN_NOOP(</xsl:text>
|
---|
| 208 | <xsl:value-of select="concat(substring(@name, 2),'Wrap')"/>
|
---|
| 209 | <xsl:text>); /* Shuts up MSC warning C4625. */
|
---|
[45491] | 210 |
|
---|
[63147] | 211 | };
|
---|
| 212 |
|
---|
[45491] | 213 | </xsl:text>
|
---|
[53875] | 214 | <xsl:value-of select="concat('#endif // !', substring(@name, 2), 'Wrap_H_', $G_sNewLine)"/>
|
---|
[45491] | 215 | </xsl:template>
|
---|
| 216 |
|
---|
| 217 | <xsl:template match="interface" mode="codeheader">
|
---|
[51426] | 218 | <xsl:param name="addinterfaces"/>
|
---|
[76590] | 219 | <xsl:value-of select="concat('#define LOG_GROUP LOG_GROUP_MAIN_', translate(substring(@name, 2), $G_lowerCase, $G_upperCase), $G_sNewLine, $G_sNewLine)"/>
|
---|
[53875] | 220 | <xsl:value-of select="concat('#include "', substring(@name, 2), 'Wrap.h"', $G_sNewLine)"/>
|
---|
[76590] | 221 | <xsl:text>#include "LoggingNew.h"
|
---|
[53865] | 222 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 223 | # include "dtrace/VBoxAPI.h"
|
---|
| 224 | #endif
|
---|
[45491] | 225 |
|
---|
| 226 | </xsl:text>
|
---|
| 227 | </xsl:template>
|
---|
| 228 |
|
---|
[49994] | 229 | <xsl:template name="emitISupports">
|
---|
| 230 | <xsl:param name="classname"/>
|
---|
| 231 | <xsl:param name="extends"/>
|
---|
[51426] | 232 | <xsl:param name="addinterfaces"/>
|
---|
[49994] | 233 | <xsl:param name="depth"/>
|
---|
| 234 | <xsl:param name="interfacelist"/>
|
---|
| 235 |
|
---|
| 236 | <xsl:choose>
|
---|
[50183] | 237 | <xsl:when test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
|
---|
[53903] | 238 | <xsl:variable name="newextends" select="key('G_keyInterfacesByName', $extends)/@extends"/>
|
---|
[49994] | 239 | <xsl:variable name="newiflist" select="concat($interfacelist, ', ', $extends)"/>
|
---|
| 240 | <xsl:call-template name="emitISupports">
|
---|
| 241 | <xsl:with-param name="classname" select="$classname"/>
|
---|
| 242 | <xsl:with-param name="extends" select="$newextends"/>
|
---|
[51426] | 243 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
[49994] | 244 | <xsl:with-param name="depth" select="$depth + 1"/>
|
---|
| 245 | <xsl:with-param name="interfacelist" select="$newiflist"/>
|
---|
| 246 | </xsl:call-template>
|
---|
| 247 | </xsl:when>
|
---|
| 248 | <xsl:otherwise>
|
---|
[51426] | 249 | <xsl:variable name="addinterfaces_ns" select="exsl:node-set($addinterfaces)"/>
|
---|
| 250 | <xsl:choose>
|
---|
| 251 | <xsl:when test="count($addinterfaces_ns/token) > 0">
|
---|
| 252 | <xsl:variable name="addifname" select="$addinterfaces_ns/token[1]"/>
|
---|
[53903] | 253 | <xsl:variable name="addif" select="key('G_keyInterfacesByName', $addifname)/@extends"/>
|
---|
[51426] | 254 | <xsl:variable name="newextends" select="$addif/@extends"/>
|
---|
| 255 | <xsl:variable name="newaddinterfaces" select="$addinterfaces_ns/token[position() > 1]"/>
|
---|
| 256 | <xsl:variable name="newiflist" select="concat($interfacelist, ', ', $addifname)"/>
|
---|
| 257 | <xsl:call-template name="emitISupports">
|
---|
| 258 | <xsl:with-param name="classname" select="$classname"/>
|
---|
| 259 | <xsl:with-param name="extends" select="$newextends"/>
|
---|
| 260 | <xsl:with-param name="addinterfaces" select="$newaddinterfaces"/>
|
---|
| 261 | <xsl:with-param name="depth" select="$depth + 1"/>
|
---|
| 262 | <xsl:with-param name="interfacelist" select="$newiflist"/>
|
---|
| 263 | </xsl:call-template>
|
---|
| 264 | </xsl:when>
|
---|
| 265 | <xsl:otherwise>
|
---|
[53875] | 266 | <xsl:value-of select="concat('NS_IMPL_THREADSAFE_ISUPPORTS', $depth, '_CI(', $classname, ', ', $interfacelist, ')', $G_sNewLine)"/>
|
---|
[51426] | 267 | </xsl:otherwise>
|
---|
| 268 | </xsl:choose>
|
---|
[49994] | 269 | </xsl:otherwise>
|
---|
| 270 | </xsl:choose>
|
---|
| 271 | </xsl:template>
|
---|
| 272 |
|
---|
[45491] | 273 | <xsl:template match="interface" mode="codefooter">
|
---|
[51426] | 274 | <xsl:param name="addinterfaces"/>
|
---|
[45491] | 275 | <xsl:text>#ifdef VBOX_WITH_XPCOM
|
---|
| 276 | </xsl:text>
|
---|
[53875] | 277 | <xsl:value-of select="concat('NS_DECL_CLASSINFO(', substring(@name, 2), 'Wrap)', $G_sNewLine)"/>
|
---|
[49994] | 278 |
|
---|
[51426] | 279 | <xsl:variable name="manualAddInterfaces">
|
---|
| 280 | <xsl:call-template name="checkoption">
|
---|
| 281 | <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
|
---|
| 282 | <xsl:with-param name="option" select="'manualaddinterfaces'"/>
|
---|
| 283 | </xsl:call-template>
|
---|
| 284 | </xsl:variable>
|
---|
| 285 | <xsl:choose>
|
---|
| 286 | <xsl:when test="$manualAddInterfaces = 'true'">
|
---|
| 287 | <xsl:variable name="nulladdinterfaces"></xsl:variable>
|
---|
| 288 | <xsl:call-template name="emitISupports">
|
---|
| 289 | <xsl:with-param name="classname" select="concat(substring(@name, 2), 'Wrap')"/>
|
---|
| 290 | <xsl:with-param name="extends" select="@extends"/>
|
---|
| 291 | <xsl:with-param name="addinterfaces" select="$nulladdinterfaces"/>
|
---|
| 292 | <xsl:with-param name="depth" select="1"/>
|
---|
| 293 | <xsl:with-param name="interfacelist" select="@name"/>
|
---|
| 294 | </xsl:call-template>
|
---|
| 295 | </xsl:when>
|
---|
| 296 | <xsl:otherwise>
|
---|
| 297 | <xsl:call-template name="emitISupports">
|
---|
| 298 | <xsl:with-param name="classname" select="concat(substring(@name, 2), 'Wrap')"/>
|
---|
| 299 | <xsl:with-param name="extends" select="@extends"/>
|
---|
| 300 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
| 301 | <xsl:with-param name="depth" select="1"/>
|
---|
| 302 | <xsl:with-param name="interfacelist" select="@name"/>
|
---|
| 303 | </xsl:call-template>
|
---|
| 304 | </xsl:otherwise>
|
---|
| 305 | </xsl:choose>
|
---|
[45491] | 306 | <xsl:text>#endif // VBOX_WITH_XPCOM
|
---|
| 307 | </xsl:text>
|
---|
| 308 | </xsl:template>
|
---|
| 309 |
|
---|
| 310 |
|
---|
| 311 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 312 | templates for dealing with names and parameters
|
---|
| 313 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 314 |
|
---|
| 315 | <xsl:template name="tospace">
|
---|
| 316 | <xsl:param name="str"/>
|
---|
| 317 | <xsl:value-of select="translate($str, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_', ' ')"/>
|
---|
| 318 | </xsl:template>
|
---|
| 319 |
|
---|
[47650] | 320 | <xsl:template name="checkoption">
|
---|
| 321 | <xsl:param name="optionlist"/>
|
---|
| 322 | <xsl:param name="option"/>
|
---|
| 323 | <xsl:value-of select="string-length($option) > 0 and contains(concat(',', translate($optionlist, ' ', ''), ','), concat(',', $option, ','))"/>
|
---|
| 324 | </xsl:template>
|
---|
| 325 |
|
---|
[51426] | 326 | <xsl:template name="getattrlist">
|
---|
| 327 | <xsl:param name="val"/>
|
---|
| 328 | <xsl:param name="separator" select="','"/>
|
---|
| 329 |
|
---|
| 330 | <xsl:if test="$val and $val != ''">
|
---|
| 331 | <xsl:choose>
|
---|
| 332 | <xsl:when test="contains($val,$separator)">
|
---|
| 333 | <token>
|
---|
| 334 | <xsl:value-of select="substring-before($val,$separator)"/>
|
---|
| 335 | </token>
|
---|
| 336 | <xsl:call-template name="getattrlist">
|
---|
| 337 | <xsl:with-param name="val" select="substring-after($val,$separator)"/>
|
---|
| 338 | <xsl:with-param name="separator" select="$separator"/>
|
---|
| 339 | </xsl:call-template>
|
---|
| 340 | </xsl:when>
|
---|
| 341 | <xsl:otherwise>
|
---|
| 342 | <token><xsl:value-of select="$val"/></token>
|
---|
| 343 | </xsl:otherwise>
|
---|
| 344 | </xsl:choose>
|
---|
| 345 | </xsl:if>
|
---|
| 346 | </xsl:template>
|
---|
| 347 |
|
---|
[45491] | 348 | <xsl:template name="translatepublictype">
|
---|
| 349 | <xsl:param name="type"/>
|
---|
| 350 | <xsl:param name="dir"/>
|
---|
[50751] | 351 | <xsl:param name="mod"/>
|
---|
[45491] | 352 |
|
---|
| 353 | <xsl:choose>
|
---|
| 354 | <xsl:when test="$type='wstring' or $type='uuid'">
|
---|
[53882] | 355 | <xsl:if test="$dir='in'">
|
---|
| 356 | <xsl:text>IN_</xsl:text>
|
---|
| 357 | </xsl:if>
|
---|
| 358 | <xsl:text>BSTR</xsl:text>
|
---|
| 359 | </xsl:when>
|
---|
| 360 |
|
---|
| 361 | <xsl:when test="$type='$unknown'">
|
---|
| 362 | <xsl:text>IUnknown *</xsl:text>
|
---|
| 363 | </xsl:when>
|
---|
| 364 |
|
---|
[53905] | 365 | <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
| 366 | <xsl:value-of select="concat($type, ' *')"/>
|
---|
| 367 | </xsl:when>
|
---|
| 368 |
|
---|
| 369 | <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
|
---|
| 370 | <xsl:value-of select="concat($type, '_T')"/>
|
---|
| 371 | </xsl:when>
|
---|
| 372 |
|
---|
[53882] | 373 | <!-- Micro optimizations: Put off wraptypefield calculation as long as possible; Check interfaces before enums. -->
|
---|
| 374 | <xsl:otherwise>
|
---|
| 375 | <!-- get C++ glue type from IDL type from table in typemap-shared.inc.xsl -->
|
---|
| 376 | <xsl:variable name="gluetypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluename"/>
|
---|
[45491] | 377 | <xsl:choose>
|
---|
[53882] | 378 | <xsl:when test="string-length($gluetypefield)">
|
---|
| 379 | <xsl:value-of select="$gluetypefield"/>
|
---|
[45491] | 380 | </xsl:when>
|
---|
[53882] | 381 |
|
---|
[45491] | 382 | <xsl:otherwise>
|
---|
[53882] | 383 | <xsl:call-template name="fatalError">
|
---|
| 384 | <xsl:with-param name="msg" select="concat('translatepublictype: Type "', $type, '" is not supported.')"/>
|
---|
| 385 | </xsl:call-template>
|
---|
[45491] | 386 | </xsl:otherwise>
|
---|
| 387 | </xsl:choose>
|
---|
| 388 | </xsl:otherwise>
|
---|
| 389 | </xsl:choose>
|
---|
[50751] | 390 | <xsl:if test="$mod='ptr'">
|
---|
| 391 | <xsl:text> *</xsl:text>
|
---|
| 392 | </xsl:if>
|
---|
[45491] | 393 | </xsl:template>
|
---|
| 394 |
|
---|
| 395 | <xsl:template name="translatewrappedtype">
|
---|
| 396 | <xsl:param name="type"/>
|
---|
| 397 | <xsl:param name="dir"/>
|
---|
[50751] | 398 | <xsl:param name="mod"/>
|
---|
[45518] | 399 | <xsl:param name="safearray"/>
|
---|
[45491] | 400 |
|
---|
| 401 | <xsl:choose>
|
---|
| 402 | <xsl:when test="$type='wstring'">
|
---|
[45518] | 403 | <xsl:if test="$dir='in' and not($safearray='yes')">
|
---|
[45491] | 404 | <xsl:text>const </xsl:text>
|
---|
| 405 | </xsl:if>
|
---|
| 406 | <xsl:text>com::Utf8Str &</xsl:text>
|
---|
| 407 | </xsl:when>
|
---|
[53882] | 408 |
|
---|
[45491] | 409 | <xsl:when test="$type='uuid'">
|
---|
| 410 | <xsl:if test="$dir='in'">
|
---|
| 411 | <xsl:text>const </xsl:text>
|
---|
| 412 | </xsl:if>
|
---|
| 413 | <xsl:text>com::Guid &</xsl:text>
|
---|
| 414 | </xsl:when>
|
---|
[53882] | 415 |
|
---|
[45491] | 416 | <xsl:when test="$type='$unknown'">
|
---|
[45518] | 417 | <xsl:if test="$dir='in' and not($safearray='yes')">
|
---|
[45491] | 418 | <xsl:text>const </xsl:text>
|
---|
| 419 | </xsl:if>
|
---|
| 420 | <xsl:text>ComPtr<IUnknown> &</xsl:text>
|
---|
| 421 | </xsl:when>
|
---|
[53882] | 422 |
|
---|
[53905] | 423 | <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
| 424 | <xsl:if test="$dir='in' and not($safearray='yes')">
|
---|
| 425 | <xsl:text>const </xsl:text>
|
---|
| 426 | </xsl:if>
|
---|
| 427 | <xsl:value-of select="concat('ComPtr<', $type, '> &')"/>
|
---|
| 428 | </xsl:when>
|
---|
| 429 |
|
---|
| 430 | <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
|
---|
| 431 | <xsl:value-of select="concat($type, '_T')"/>
|
---|
| 432 | </xsl:when>
|
---|
| 433 |
|
---|
[53882] | 434 | <!-- Micro optimizations: Put off wraptypefield calculation as long as possible; Check interfaces before enums. -->
|
---|
[45491] | 435 | <xsl:otherwise>
|
---|
[53882] | 436 | <!-- get C++ wrap type from IDL type from table in typemap-shared.inc.xsl -->
|
---|
| 437 | <xsl:variable name="wraptypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluename"/>
|
---|
| 438 | <xsl:choose>
|
---|
| 439 | <xsl:when test="string-length($wraptypefield)">
|
---|
| 440 | <xsl:value-of select="$wraptypefield"/>
|
---|
| 441 | </xsl:when>
|
---|
| 442 |
|
---|
| 443 | <xsl:otherwise>
|
---|
| 444 | <xsl:call-template name="fatalError">
|
---|
| 445 | <xsl:with-param name="msg" select="concat('translatewrappedtype: Type "', $type, '" is not supported.')"/>
|
---|
| 446 | </xsl:call-template>
|
---|
| 447 | </xsl:otherwise>
|
---|
| 448 | </xsl:choose>
|
---|
[45491] | 449 | </xsl:otherwise>
|
---|
| 450 | </xsl:choose>
|
---|
[50751] | 451 | <xsl:if test="$mod='ptr'">
|
---|
| 452 | <xsl:text> *</xsl:text>
|
---|
| 453 | </xsl:if>
|
---|
[45491] | 454 | </xsl:template>
|
---|
| 455 |
|
---|
| 456 | <xsl:template name="translatefmtspectype">
|
---|
| 457 | <xsl:param name="type"/>
|
---|
| 458 | <xsl:param name="dir"/>
|
---|
[50751] | 459 | <xsl:param name="mod"/>
|
---|
[45491] | 460 | <xsl:param name="safearray"/>
|
---|
[50751] | 461 | <xsl:param name="isref"/>
|
---|
[45491] | 462 |
|
---|
| 463 | <!-- get C format string for IDL type from table in typemap-shared.inc.xsl -->
|
---|
| 464 | <xsl:variable name="wrapfmt" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@gluefmt"/>
|
---|
| 465 | <xsl:choose>
|
---|
[50751] | 466 | <xsl:when test="$mod='ptr' or ($isref='yes' and $dir!='in')">
|
---|
[45491] | 467 | <xsl:text>%p</xsl:text>
|
---|
| 468 | </xsl:when>
|
---|
| 469 | <xsl:when test="$safearray='yes'">
|
---|
| 470 | <xsl:text>%zu</xsl:text>
|
---|
| 471 | </xsl:when>
|
---|
| 472 | <xsl:when test="string-length($wrapfmt)">
|
---|
| 473 | <xsl:value-of select="$wrapfmt"/>
|
---|
| 474 | </xsl:when>
|
---|
| 475 | <xsl:when test="$type='$unknown'">
|
---|
| 476 | <xsl:text>%p</xsl:text>
|
---|
| 477 | </xsl:when>
|
---|
[53903] | 478 | <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
|
---|
| 479 | <xsl:text>%RU32</xsl:text>
|
---|
| 480 | </xsl:when>
|
---|
| 481 | <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
[45491] | 482 | <xsl:text>%p</xsl:text>
|
---|
| 483 | </xsl:when>
|
---|
| 484 | <xsl:otherwise>
|
---|
| 485 | <xsl:call-template name="fatalError">
|
---|
| 486 | <xsl:with-param name="msg" select="concat('translatefmtcpectype: Type "', $type, '" is not supported.')"/>
|
---|
| 487 | </xsl:call-template>
|
---|
| 488 | </xsl:otherwise>
|
---|
| 489 | </xsl:choose>
|
---|
| 490 | </xsl:template>
|
---|
| 491 |
|
---|
[53865] | 492 | <xsl:template name="translatedtracetype">
|
---|
| 493 | <xsl:param name="type"/>
|
---|
| 494 | <xsl:param name="dir"/>
|
---|
| 495 | <xsl:param name="mod"/>
|
---|
| 496 |
|
---|
| 497 | <!-- get dtrace probe type from IDL type from table in typemap-shared.inc.xsl -->
|
---|
| 498 | <xsl:variable name="dtracetypefield" select="exsl:node-set($G_aSharedTypes)/type[@idlname=$type]/@dtracename"/>
|
---|
| 499 | <xsl:choose>
|
---|
| 500 | <xsl:when test="string-length($dtracetypefield)">
|
---|
| 501 | <xsl:value-of select="$dtracetypefield"/>
|
---|
| 502 | </xsl:when>
|
---|
[53885] | 503 | <xsl:when test="$type='$unknown'">
|
---|
| 504 | <!-- <xsl:text>struct IUnknown *</xsl:text> -->
|
---|
| 505 | <xsl:text>void *</xsl:text>
|
---|
| 506 | </xsl:when>
|
---|
[53903] | 507 | <xsl:when test="count(key('G_keyEnumsByName', $type)) > 0">
|
---|
[53865] | 508 | <!-- <xsl:value-of select="concat($type, '_T')"/> - later we can emit enums into dtrace the library -->
|
---|
| 509 | <xsl:text>int</xsl:text>
|
---|
| 510 | </xsl:when>
|
---|
[53903] | 511 | <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
[53865] | 512 | <!--
|
---|
[53903] | 513 | <xsl:value-of select="concat('struct ', $type, ' *')"/>
|
---|
[53865] | 514 | -->
|
---|
| 515 | <xsl:text>void *</xsl:text>
|
---|
| 516 | </xsl:when>
|
---|
| 517 | <xsl:otherwise>
|
---|
| 518 | <xsl:call-template name="fatalError">
|
---|
| 519 | <xsl:with-param name="msg" select="concat('translatedtracetype Type "', $type, '" is not supported.')"/>
|
---|
| 520 | </xsl:call-template>
|
---|
| 521 | </xsl:otherwise>
|
---|
| 522 | </xsl:choose>
|
---|
| 523 | <xsl:if test="$mod='ptr'">
|
---|
| 524 | <xsl:text> *</xsl:text>
|
---|
| 525 | </xsl:if>
|
---|
| 526 | </xsl:template>
|
---|
| 527 |
|
---|
| 528 |
|
---|
[50751] | 529 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 530 | templates for handling entire interfaces and their contents
|
---|
| 531 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 532 |
|
---|
[53903] | 533 | <!-- Called on interface node. -->
|
---|
[50751] | 534 | <xsl:template name="emitInterface">
|
---|
[53913] | 535 | <!-- sources, headers and dtrace-probes all needs attribute lists -->
|
---|
| 536 | <xsl:variable name="addinterfaces">
|
---|
| 537 | <xsl:call-template name="getattrlist">
|
---|
| 538 | <xsl:with-param name="val" select="@wrap-hint-server-addinterfaces"/>
|
---|
| 539 | </xsl:call-template>
|
---|
| 540 | </xsl:variable>
|
---|
| 541 |
|
---|
[81684] | 542 | <!-- interface sanity check, prevents crashes -->
|
---|
| 543 | <xsl:if test="(count(attribute) + count(method) + sum(@reservedMethods[number()= number()]) + sum(@reservedAttributes[number()= number()])) = 0">
|
---|
[55608] | 544 | <xsl:message terminate="yes">
|
---|
| 545 | Interface <xsl:value-of select="@name"/> is empty which causes midl generated proxy
|
---|
| 546 | stubs to crash. Please add a dummy:<xsl:value-of select="$G_sNewLine"/>
|
---|
| 547 | <attribute name="midlDoesNotLikeEmptyInterfaces" readonly="yes" type="boolean"/>
|
---|
| 548 | </xsl:message>
|
---|
| 549 | </xsl:if>
|
---|
| 550 |
|
---|
[53879] | 551 | <xsl:choose>
|
---|
[53913] | 552 | <xsl:when test="$generating = 'sources'">
|
---|
| 553 | <xsl:if test="(position() mod 2) = $reminder">
|
---|
| 554 | <xsl:call-template name="emitCode">
|
---|
| 555 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
[53879] | 556 | </xsl:call-template>
|
---|
[53913] | 557 | </xsl:if>
|
---|
[53879] | 558 | </xsl:when>
|
---|
[53913] | 559 | <xsl:when test="$generating = 'headers'">
|
---|
| 560 | <xsl:call-template name="emitHeader">
|
---|
| 561 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
| 562 | </xsl:call-template>
|
---|
[53879] | 563 | </xsl:when>
|
---|
[53913] | 564 | <xsl:when test="$generating = 'dtrace-probes'">
|
---|
| 565 | <xsl:call-template name="emitDTraceProbes">
|
---|
| 566 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
| 567 | </xsl:call-template>
|
---|
| 568 | </xsl:when>
|
---|
| 569 | <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitInterface</xsl:message></xsl:otherwise>
|
---|
[53879] | 570 | </xsl:choose>
|
---|
[50751] | 571 | </xsl:template>
|
---|
| 572 |
|
---|
[53905] | 573 | <!-- Called on a method param or attribute node. -->
|
---|
| 574 | <xsl:template name="emitPublicParameter">
|
---|
[45491] | 575 | <xsl:param name="dir"/>
|
---|
| 576 |
|
---|
| 577 | <xsl:variable name="gluetype">
|
---|
| 578 | <xsl:call-template name="translatepublictype">
|
---|
[53905] | 579 | <xsl:with-param name="type" select="@type"/>
|
---|
[45491] | 580 | <xsl:with-param name="dir" select="$dir"/>
|
---|
[53905] | 581 | <xsl:with-param name="mod" select="@mod"/>
|
---|
[45491] | 582 | </xsl:call-template>
|
---|
| 583 | </xsl:variable>
|
---|
| 584 |
|
---|
| 585 | <xsl:choose>
|
---|
[53905] | 586 | <xsl:when test="@safearray='yes'">
|
---|
[45491] | 587 | <xsl:choose>
|
---|
| 588 | <xsl:when test="$dir='in'">
|
---|
[53905] | 589 | <xsl:text>ComSafeArrayIn(</xsl:text>
|
---|
[45491] | 590 | </xsl:when>
|
---|
| 591 | <xsl:otherwise>
|
---|
[53905] | 592 | <xsl:text>ComSafeArrayOut(</xsl:text>
|
---|
[45491] | 593 | </xsl:otherwise>
|
---|
| 594 | </xsl:choose>
|
---|
[53905] | 595 | <xsl:value-of select="$gluetype"/>
|
---|
| 596 | <xsl:text>, a</xsl:text>
|
---|
| 597 | <xsl:call-template name="capitalize">
|
---|
| 598 | <xsl:with-param name="str" select="@name"/>
|
---|
| 599 | </xsl:call-template>
|
---|
| 600 | <xsl:text>)</xsl:text>
|
---|
| 601 | </xsl:when>
|
---|
| 602 | <xsl:otherwise>
|
---|
| 603 | <xsl:value-of select="$gluetype"/>
|
---|
| 604 | <xsl:if test="substring($gluetype,string-length($gluetype))!='*'">
|
---|
| 605 | <xsl:text> </xsl:text>
|
---|
| 606 | </xsl:if>
|
---|
| 607 | <xsl:if test="$dir != 'in'">
|
---|
| 608 | <xsl:text>*</xsl:text>
|
---|
| 609 | </xsl:if>
|
---|
| 610 | <xsl:text>a</xsl:text>
|
---|
| 611 | <xsl:call-template name="capitalize">
|
---|
| 612 | <xsl:with-param name="str" select="@name"/>
|
---|
| 613 | </xsl:call-template>
|
---|
[45491] | 614 | </xsl:otherwise>
|
---|
| 615 | </xsl:choose>
|
---|
| 616 | </xsl:template>
|
---|
| 617 |
|
---|
| 618 | <xsl:template match="attribute/@type | param/@type" mode="wrapped">
|
---|
| 619 | <xsl:param name="dir"/>
|
---|
| 620 |
|
---|
| 621 | <xsl:variable name="wraptype">
|
---|
| 622 | <xsl:call-template name="translatewrappedtype">
|
---|
| 623 | <xsl:with-param name="type" select="."/>
|
---|
| 624 | <xsl:with-param name="dir" select="$dir"/>
|
---|
[50751] | 625 | <xsl:with-param name="mod" select="../@mod"/>
|
---|
[45518] | 626 | <xsl:with-param name="safearray" select="../@safearray"/>
|
---|
[45491] | 627 | </xsl:call-template>
|
---|
| 628 | </xsl:variable>
|
---|
[53885] | 629 | <xsl:variable name="lastchar">
|
---|
| 630 | <xsl:value-of select="substring($wraptype, string-length($wraptype))"/>
|
---|
| 631 | </xsl:variable>
|
---|
[45491] | 632 |
|
---|
| 633 | <xsl:choose>
|
---|
| 634 | <xsl:when test="../@safearray='yes'">
|
---|
| 635 | <xsl:if test="$dir='in'">
|
---|
| 636 | <xsl:text>const </xsl:text>
|
---|
| 637 | </xsl:if>
|
---|
| 638 | <xsl:text>std::vector<</xsl:text>
|
---|
| 639 | <xsl:choose>
|
---|
[53885] | 640 | <xsl:when test="$lastchar = '&'">
|
---|
[45491] | 641 | <xsl:variable name="wraptype2">
|
---|
[53885] | 642 | <xsl:value-of select="substring($wraptype, 1, string-length($wraptype)-2)"/>
|
---|
[45491] | 643 | </xsl:variable>
|
---|
[53885] | 644 | <xsl:value-of select="$wraptype2"/>
|
---|
| 645 | <xsl:if test="substring($wraptype2,string-length($wraptype2)) = '>'">
|
---|
| 646 | <xsl:text> </xsl:text>
|
---|
| 647 | </xsl:if>
|
---|
[45491] | 648 | </xsl:when>
|
---|
[53885] | 649 | <xsl:when test="lastchar = '>'">
|
---|
[45491] | 650 | <xsl:value-of select="concat($wraptype, ' ')"/>
|
---|
| 651 | </xsl:when>
|
---|
| 652 | <xsl:otherwise>
|
---|
| 653 | <xsl:value-of select="$wraptype"/>
|
---|
| 654 | </xsl:otherwise>
|
---|
| 655 | </xsl:choose>
|
---|
| 656 | <xsl:text>> &</xsl:text>
|
---|
| 657 | </xsl:when>
|
---|
| 658 | <xsl:otherwise>
|
---|
| 659 | <xsl:value-of select="$wraptype"/>
|
---|
[53885] | 660 | <xsl:if test="$lastchar != '&'">
|
---|
| 661 | <xsl:if test="$lastchar != '*'">
|
---|
[45491] | 662 | <xsl:text> </xsl:text>
|
---|
| 663 | </xsl:if>
|
---|
[53905] | 664 | <xsl:if test="$dir != 'in'">
|
---|
| 665 | <xsl:text>*</xsl:text>
|
---|
| 666 | </xsl:if>
|
---|
[45491] | 667 | </xsl:if>
|
---|
| 668 | </xsl:otherwise>
|
---|
| 669 | </xsl:choose>
|
---|
| 670 | <xsl:text>a</xsl:text>
|
---|
| 671 | <xsl:call-template name="capitalize">
|
---|
| 672 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 673 | </xsl:call-template>
|
---|
| 674 | </xsl:template>
|
---|
| 675 |
|
---|
| 676 | <xsl:template match="attribute/@type | param/@type" mode="logparamtext">
|
---|
| 677 | <xsl:param name="dir"/>
|
---|
[50751] | 678 | <xsl:param name="isref"/>
|
---|
[45491] | 679 |
|
---|
[50751] | 680 | <xsl:if test="$isref!='yes' and ($dir='out' or $dir='ret')">
|
---|
[45491] | 681 | <xsl:text>*</xsl:text>
|
---|
| 682 | </xsl:if>
|
---|
| 683 | <xsl:text>a</xsl:text>
|
---|
| 684 | <xsl:call-template name="capitalize">
|
---|
| 685 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 686 | </xsl:call-template>
|
---|
| 687 | <xsl:text>=</xsl:text>
|
---|
| 688 | <xsl:call-template name="translatefmtspectype">
|
---|
| 689 | <xsl:with-param name="type" select="."/>
|
---|
| 690 | <xsl:with-param name="dir" select="$dir"/>
|
---|
[50751] | 691 | <xsl:with-param name="mod" select="../@mod"/>
|
---|
[45491] | 692 | <xsl:with-param name="safearray" select="../@safearray"/>
|
---|
[50751] | 693 | <xsl:with-param name="isref" select="$isref"/>
|
---|
[45491] | 694 | </xsl:call-template>
|
---|
| 695 | </xsl:template>
|
---|
| 696 |
|
---|
| 697 | <xsl:template match="attribute/@type | param/@type" mode="logparamval">
|
---|
| 698 | <xsl:param name="dir"/>
|
---|
[50751] | 699 | <xsl:param name="isref"/>
|
---|
[45491] | 700 |
|
---|
| 701 | <xsl:choose>
|
---|
[50751] | 702 | <xsl:when test="../@safearray='yes' and $isref!='yes'">
|
---|
[45491] | 703 | <xsl:text>ComSafeArraySize(</xsl:text>
|
---|
[50751] | 704 | <xsl:if test="$isref!='yes' and $dir!='in'">
|
---|
[45491] | 705 | <xsl:text>*</xsl:text>
|
---|
| 706 | </xsl:if>
|
---|
| 707 | </xsl:when>
|
---|
[50751] | 708 | <xsl:when test="$isref!='yes' and $dir!='in'">
|
---|
[45491] | 709 | <xsl:text>*</xsl:text>
|
---|
| 710 | </xsl:when>
|
---|
| 711 | </xsl:choose>
|
---|
| 712 | <xsl:text>a</xsl:text>
|
---|
| 713 | <xsl:call-template name="capitalize">
|
---|
| 714 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 715 | </xsl:call-template>
|
---|
| 716 | <xsl:choose>
|
---|
[50751] | 717 | <xsl:when test="../@safearray='yes' and $isref!='yes'">
|
---|
[45491] | 718 | <xsl:text>)</xsl:text>
|
---|
| 719 | </xsl:when>
|
---|
| 720 | </xsl:choose>
|
---|
| 721 | </xsl:template>
|
---|
| 722 |
|
---|
[53905] | 723 | <!-- Emits the DTrace probe parameter value (using tmps), invoked on param or attribute node. -->
|
---|
| 724 | <xsl:template name="emitDTraceParamValue">
|
---|
[45491] | 725 | <xsl:param name="dir"/>
|
---|
| 726 |
|
---|
[53865] | 727 | <xsl:variable name="viatmpvar">
|
---|
[53905] | 728 | <xsl:for-each select="@type">
|
---|
| 729 | <xsl:call-template name="paramconversionviatmp">
|
---|
| 730 | <xsl:with-param name="dir" select="$dir"/>
|
---|
| 731 | </xsl:call-template>
|
---|
| 732 | </xsl:for-each>
|
---|
[53865] | 733 | </xsl:variable>
|
---|
| 734 |
|
---|
[53905] | 735 | <xsl:variable name="type" select="@type"/>
|
---|
[53865] | 736 | <xsl:choose>
|
---|
[53905] | 737 | <!-- Doesn't help to inline paramconversionviatmp: <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or @safearray = 'yes' or count(key('G_keyInterfacesByName', $type)) > 0"> -->
|
---|
[53865] | 738 | <xsl:when test="$viatmpvar = 'yes'">
|
---|
| 739 | <xsl:variable name="tmpname">
|
---|
| 740 | <xsl:text>Tmp</xsl:text>
|
---|
| 741 | <xsl:call-template name="capitalize">
|
---|
[53905] | 742 | <xsl:with-param name="str" select="@name"/>
|
---|
[53865] | 743 | </xsl:call-template>
|
---|
| 744 | </xsl:variable>
|
---|
| 745 |
|
---|
| 746 | <xsl:choose>
|
---|
[53905] | 747 | <xsl:when test="@safearray = 'yes'">
|
---|
[53865] | 748 | <xsl:text>(uint32_t)</xsl:text>
|
---|
| 749 | <xsl:value-of select="$tmpname"/>
|
---|
| 750 | <xsl:text>.array().size(), </xsl:text>
|
---|
| 751 | <!-- Later:
|
---|
| 752 | <xsl:value-of select="concat($tmpname, '.array().data(), ')"/>
|
---|
| 753 | -->
|
---|
| 754 | <xsl:text>NULL /*for now*/</xsl:text>
|
---|
| 755 | </xsl:when>
|
---|
| 756 | <xsl:when test="$type = 'wstring'">
|
---|
| 757 | <xsl:value-of select="$tmpname"/>
|
---|
| 758 | <xsl:text>.str().c_str()</xsl:text>
|
---|
| 759 | </xsl:when>
|
---|
| 760 | <xsl:when test="$type = 'uuid'">
|
---|
| 761 | <xsl:value-of select="$tmpname"/>
|
---|
| 762 | <xsl:text>.uuid().toStringCurly().c_str()</xsl:text>
|
---|
| 763 | </xsl:when>
|
---|
| 764 | <xsl:when test="$type = '$unknown'">
|
---|
| 765 | <xsl:text>(void *)</xsl:text>
|
---|
| 766 | <xsl:value-of select="$tmpname"/>
|
---|
| 767 | <xsl:text>.ptr()</xsl:text>
|
---|
| 768 | </xsl:when>
|
---|
[53903] | 769 | <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
| 770 | <xsl:text>(void *)</xsl:text>
|
---|
| 771 | <xsl:value-of select="$tmpname"/>
|
---|
| 772 | <xsl:text>.ptr()</xsl:text>
|
---|
| 773 | </xsl:when>
|
---|
[53865] | 774 | <xsl:otherwise>
|
---|
[53903] | 775 | <xsl:value-of select="$tmpname"/>
|
---|
[53865] | 776 | </xsl:otherwise>
|
---|
| 777 | </xsl:choose>
|
---|
| 778 | </xsl:when>
|
---|
| 779 |
|
---|
| 780 | <xsl:otherwise>
|
---|
| 781 | <xsl:if test="$dir != 'in'">
|
---|
| 782 | <xsl:text>*</xsl:text>
|
---|
| 783 | </xsl:if>
|
---|
| 784 | <xsl:text>a</xsl:text>
|
---|
| 785 | <xsl:call-template name="capitalize">
|
---|
[53905] | 786 | <xsl:with-param name="str" select="@name"/>
|
---|
[53865] | 787 | </xsl:call-template>
|
---|
| 788 |
|
---|
| 789 | <xsl:if test="$type = 'boolean'">
|
---|
| 790 | <xsl:text> != FALSE</xsl:text>
|
---|
| 791 | </xsl:if>
|
---|
| 792 | </xsl:otherwise>
|
---|
| 793 | </xsl:choose>
|
---|
| 794 | </xsl:template>
|
---|
| 795 |
|
---|
[53905] | 796 | <!--
|
---|
| 797 | Same as emitDTraceParamValue except no temporary variables are used (they are out of scope).
|
---|
| 798 | Note! There are two other instances of this code with different @dir values, see below.
|
---|
| 799 | -->
|
---|
| 800 | <xsl:template name="emitDTraceParamValNoTmp">
|
---|
| 801 | <!-- To speed this up, the logic of paramconversionviatmp has been duplicated/inlined here. -->
|
---|
| 802 | <xsl:variable name="type" select="@type"/>
|
---|
[53865] | 803 | <xsl:choose>
|
---|
[53905] | 804 | <xsl:when test="@safearray = 'yes'">
|
---|
| 805 | <xsl:text>0, 0</xsl:text>
|
---|
| 806 | </xsl:when>
|
---|
| 807 | <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
[53865] | 808 | <xsl:text>0</xsl:text>
|
---|
| 809 | </xsl:when>
|
---|
| 810 | <xsl:otherwise>
|
---|
[53905] | 811 | <xsl:if test="@dir != 'in'">
|
---|
[53865] | 812 | <xsl:text>*</xsl:text>
|
---|
| 813 | </xsl:if>
|
---|
| 814 | <xsl:text>a</xsl:text>
|
---|
| 815 | <xsl:call-template name="capitalize">
|
---|
[53905] | 816 | <xsl:with-param name="str" select="@name"/>
|
---|
[53865] | 817 | </xsl:call-template>
|
---|
[53905] | 818 | <xsl:if test="$type = 'boolean'">
|
---|
| 819 | <xsl:text> != FALSE</xsl:text>
|
---|
| 820 | </xsl:if>
|
---|
| 821 | </xsl:otherwise>
|
---|
| 822 | </xsl:choose>
|
---|
| 823 | </xsl:template>
|
---|
[53865] | 824 |
|
---|
[53905] | 825 | <!-- Copy of emitDTraceParamValNoTmp with @dir = 'in' for speeding up the code (noticable difference). -->
|
---|
| 826 | <xsl:template name="emitDTraceParamValNoTmp-DirIn">
|
---|
| 827 | <xsl:variable name="type" select="@type"/>
|
---|
| 828 | <xsl:choose>
|
---|
| 829 | <xsl:when test="@safearray = 'yes'">
|
---|
| 830 | <xsl:text>0, 0</xsl:text>
|
---|
| 831 | </xsl:when>
|
---|
| 832 | <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
| 833 | <xsl:text>0</xsl:text>
|
---|
| 834 | </xsl:when>
|
---|
| 835 | <xsl:otherwise>
|
---|
| 836 | <xsl:text>a</xsl:text>
|
---|
| 837 | <xsl:call-template name="capitalize">
|
---|
| 838 | <xsl:with-param name="str" select="@name"/>
|
---|
| 839 | </xsl:call-template>
|
---|
[53865] | 840 | <xsl:if test="$type = 'boolean'">
|
---|
| 841 | <xsl:text> != FALSE</xsl:text>
|
---|
| 842 | </xsl:if>
|
---|
| 843 | </xsl:otherwise>
|
---|
| 844 | </xsl:choose>
|
---|
| 845 | </xsl:template>
|
---|
| 846 |
|
---|
[53905] | 847 | <!-- Copy of emitDTraceParamValNoTmp with @dir != 'in' for speeding up attributes (noticable difference). -->
|
---|
| 848 | <xsl:template name="emitDTraceParamValNoTmp-DirNotIn">
|
---|
| 849 | <xsl:variable name="type" select="@type"/>
|
---|
| 850 | <xsl:choose>
|
---|
| 851 | <xsl:when test="@safearray = 'yes'">
|
---|
| 852 | <xsl:text>0, 0</xsl:text>
|
---|
| 853 | </xsl:when>
|
---|
| 854 | <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid' or count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
| 855 | <xsl:text>0</xsl:text>
|
---|
| 856 | </xsl:when>
|
---|
| 857 | <xsl:otherwise>
|
---|
| 858 | <xsl:text>*a</xsl:text>
|
---|
| 859 | <xsl:call-template name="capitalize">
|
---|
| 860 | <xsl:with-param name="str" select="@name"/>
|
---|
| 861 | </xsl:call-template>
|
---|
| 862 | <xsl:if test="$type = 'boolean'">
|
---|
| 863 | <xsl:text> != FALSE</xsl:text>
|
---|
| 864 | </xsl:if>
|
---|
| 865 | </xsl:otherwise>
|
---|
| 866 | </xsl:choose>
|
---|
| 867 | </xsl:template>
|
---|
| 868 |
|
---|
[53865] | 869 | <xsl:template match="attribute/@type | param/@type" mode="dtraceparamdecl">
|
---|
| 870 | <xsl:param name="dir"/>
|
---|
| 871 |
|
---|
[45491] | 872 | <xsl:variable name="gluetype">
|
---|
[53865] | 873 | <xsl:call-template name="translatedtracetype">
|
---|
| 874 | <xsl:with-param name="type" select="."/>
|
---|
| 875 | <xsl:with-param name="dir" select="$dir"/>
|
---|
| 876 | <xsl:with-param name="mod" select="../@mod"/>
|
---|
| 877 | </xsl:call-template>
|
---|
| 878 | </xsl:variable>
|
---|
| 879 |
|
---|
| 880 | <!-- Safe arrays get an extra size parameter. -->
|
---|
| 881 | <xsl:if test="../@safearray='yes'">
|
---|
| 882 | <xsl:text>uint32_t a_c</xsl:text>
|
---|
| 883 | <xsl:call-template name="capitalize">
|
---|
| 884 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 885 | </xsl:call-template>
|
---|
| 886 | <xsl:text>, </xsl:text>
|
---|
| 887 | </xsl:if>
|
---|
| 888 |
|
---|
| 889 | <xsl:value-of select="$gluetype"/>
|
---|
| 890 | <xsl:choose>
|
---|
| 891 | <xsl:when test="../@safearray='yes'">
|
---|
| 892 | <xsl:text> *a_pa</xsl:text>
|
---|
| 893 | </xsl:when>
|
---|
| 894 | <xsl:otherwise>
|
---|
| 895 | <xsl:if test="substring($gluetype,string-length($gluetype))!='*'">
|
---|
| 896 | <xsl:text> </xsl:text>
|
---|
| 897 | </xsl:if>
|
---|
| 898 | <xsl:text>a_</xsl:text>
|
---|
| 899 | </xsl:otherwise>
|
---|
| 900 | </xsl:choose>
|
---|
| 901 |
|
---|
| 902 | <xsl:call-template name="capitalize">
|
---|
| 903 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 904 | </xsl:call-template>
|
---|
| 905 | </xsl:template>
|
---|
| 906 |
|
---|
| 907 | <!-- Call this to determine whether a temporary conversion variable is used for the current parameter.
|
---|
| 908 | Returns empty if not needed, non-empty ('yes') if needed. -->
|
---|
| 909 | <xsl:template name="paramconversionviatmp">
|
---|
| 910 | <xsl:param name="dir"/>
|
---|
| 911 | <xsl:variable name="type" select="."/>
|
---|
[53882] | 912 | <xsl:choose>
|
---|
[53885] | 913 | <xsl:when test="$type = 'wstring' or $type = '$unknown' or $type = 'uuid'">
|
---|
[53882] | 914 | <xsl:text>yes</xsl:text>
|
---|
| 915 | </xsl:when>
|
---|
[53885] | 916 | <xsl:when test="../@safearray = 'yes'">
|
---|
| 917 | <xsl:text>yes</xsl:text>
|
---|
| 918 | </xsl:when>
|
---|
[53903] | 919 | <xsl:when test="$type = 'boolean' or $type = 'long' or $type = 'long' or $type = 'long long'"/> <!-- XXX: drop this? -->
|
---|
| 920 | <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
| 921 | <xsl:text>yes</xsl:text>
|
---|
| 922 | </xsl:when>
|
---|
[53882] | 923 | </xsl:choose>
|
---|
[53865] | 924 | </xsl:template>
|
---|
| 925 |
|
---|
| 926 | <!-- Call this to get the argument conversion class, if any is needed. -->
|
---|
| 927 | <xsl:template name="paramconversionclass">
|
---|
| 928 | <xsl:param name="dir"/>
|
---|
| 929 |
|
---|
[45491] | 930 | <xsl:variable name="type" select="."/>
|
---|
| 931 | <xsl:choose>
|
---|
| 932 | <xsl:when test="$type='$unknown'">
|
---|
| 933 | <xsl:if test="../@safearray='yes'">
|
---|
| 934 | <xsl:text>Array</xsl:text>
|
---|
| 935 | </xsl:if>
|
---|
| 936 | <xsl:choose>
|
---|
| 937 | <xsl:when test="$dir='in'">
|
---|
[53865] | 938 | <xsl:text>ComTypeInConverter<IUnknown></xsl:text>
|
---|
[45491] | 939 | </xsl:when>
|
---|
| 940 | <xsl:otherwise>
|
---|
[53865] | 941 | <xsl:text>ComTypeOutConverter<IUnknown></xsl:text>
|
---|
[45491] | 942 | </xsl:otherwise>
|
---|
| 943 | </xsl:choose>
|
---|
| 944 | </xsl:when>
|
---|
[53865] | 945 |
|
---|
[45491] | 946 | <xsl:when test="$type='wstring'">
|
---|
| 947 | <xsl:if test="../@safearray='yes'">
|
---|
| 948 | <xsl:text>Array</xsl:text>
|
---|
| 949 | </xsl:if>
|
---|
| 950 | <xsl:choose>
|
---|
| 951 | <xsl:when test="$dir='in'">
|
---|
[53865] | 952 | <xsl:text>BSTRInConverter</xsl:text>
|
---|
[45491] | 953 | </xsl:when>
|
---|
| 954 | <xsl:otherwise>
|
---|
[53865] | 955 | <xsl:text>BSTROutConverter</xsl:text>
|
---|
[45491] | 956 | </xsl:otherwise>
|
---|
| 957 | </xsl:choose>
|
---|
| 958 | </xsl:when>
|
---|
[53865] | 959 |
|
---|
[45491] | 960 | <xsl:when test="$type='uuid'">
|
---|
| 961 | <xsl:if test="../@safearray='yes'">
|
---|
| 962 | <xsl:text>Array</xsl:text>
|
---|
| 963 | </xsl:if>
|
---|
| 964 | <xsl:choose>
|
---|
| 965 | <xsl:when test="$dir='in'">
|
---|
[53865] | 966 | <xsl:text>UuidInConverter</xsl:text>
|
---|
[45491] | 967 | </xsl:when>
|
---|
| 968 | <xsl:otherwise>
|
---|
[53865] | 969 | <xsl:text>UuidOutConverter</xsl:text>
|
---|
[45491] | 970 | </xsl:otherwise>
|
---|
| 971 | </xsl:choose>
|
---|
| 972 | </xsl:when>
|
---|
[53865] | 973 |
|
---|
[53903] | 974 | <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
| 975 | <xsl:if test="../@safearray='yes'">
|
---|
| 976 | <xsl:text>Array</xsl:text>
|
---|
| 977 | </xsl:if>
|
---|
[45491] | 978 | <xsl:choose>
|
---|
[53903] | 979 | <xsl:when test="$dir='in'">
|
---|
| 980 | <xsl:text>ComTypeInConverter</xsl:text>
|
---|
[45491] | 981 | </xsl:when>
|
---|
[53903] | 982 | <xsl:otherwise>
|
---|
| 983 | <xsl:text>ComTypeOutConverter</xsl:text>
|
---|
| 984 | </xsl:otherwise>
|
---|
| 985 | </xsl:choose>
|
---|
| 986 | <xsl:value-of select="concat('<', $type, '>')"/>
|
---|
| 987 | </xsl:when>
|
---|
[53882] | 988 |
|
---|
[53903] | 989 | <xsl:when test="../@safearray='yes'">
|
---|
| 990 | <xsl:text>Array</xsl:text>
|
---|
| 991 | <xsl:choose>
|
---|
| 992 | <xsl:when test="$dir='in'">
|
---|
| 993 | <xsl:text>InConverter</xsl:text>
|
---|
[53882] | 994 | </xsl:when>
|
---|
[53903] | 995 | <xsl:otherwise>
|
---|
| 996 | <xsl:text>OutConverter</xsl:text>
|
---|
| 997 | </xsl:otherwise>
|
---|
[45491] | 998 | </xsl:choose>
|
---|
[53903] | 999 | <xsl:variable name="gluetype">
|
---|
| 1000 | <xsl:call-template name="translatepublictype">
|
---|
| 1001 | <xsl:with-param name="type" select="."/>
|
---|
| 1002 | <xsl:with-param name="dir" select="$dir"/>
|
---|
| 1003 | <xsl:with-param name="mod" select="../@mod"/>
|
---|
| 1004 | </xsl:call-template>
|
---|
| 1005 | </xsl:variable>
|
---|
| 1006 | <xsl:value-of select="concat('<', $gluetype, '>')"/>
|
---|
| 1007 | </xsl:when>
|
---|
[53865] | 1008 | </xsl:choose>
|
---|
| 1009 | </xsl:template>
|
---|
| 1010 |
|
---|
| 1011 | <!-- Emits code for converting the parameter to a temporary variable. -->
|
---|
| 1012 | <xsl:template match="attribute/@type | param/@type" mode="paramvalconversion2tmpvar">
|
---|
| 1013 | <xsl:param name="dir"/>
|
---|
| 1014 |
|
---|
| 1015 | <xsl:variable name="conversionclass">
|
---|
| 1016 | <xsl:call-template name="paramconversionclass">
|
---|
| 1017 | <xsl:with-param name="dir" select="$dir"/>
|
---|
| 1018 | </xsl:call-template>
|
---|
| 1019 | </xsl:variable>
|
---|
| 1020 |
|
---|
| 1021 | <xsl:if test="$conversionclass != ''">
|
---|
| 1022 | <xsl:value-of select="$conversionclass"/>
|
---|
| 1023 | <xsl:text> Tmp</xsl:text>
|
---|
| 1024 | <xsl:call-template name="capitalize">
|
---|
| 1025 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 1026 | </xsl:call-template>
|
---|
| 1027 | <xsl:text>(</xsl:text>
|
---|
| 1028 | <xsl:if test="../@safearray = 'yes'">
|
---|
[45491] | 1029 | <xsl:choose>
|
---|
[53865] | 1030 | <xsl:when test="$dir = 'in'">
|
---|
| 1031 | <xsl:text>ComSafeArrayInArg(</xsl:text>
|
---|
[45491] | 1032 | </xsl:when>
|
---|
| 1033 | <xsl:otherwise>
|
---|
[53865] | 1034 | <xsl:text>ComSafeArrayOutArg(</xsl:text>
|
---|
[45491] | 1035 | </xsl:otherwise>
|
---|
| 1036 | </xsl:choose>
|
---|
[53865] | 1037 | </xsl:if>
|
---|
| 1038 | <xsl:text>a</xsl:text>
|
---|
| 1039 | <xsl:call-template name="capitalize">
|
---|
| 1040 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 1041 | </xsl:call-template>
|
---|
| 1042 | <xsl:if test="../@safearray = 'yes'">
|
---|
| 1043 | <xsl:text>)</xsl:text>
|
---|
| 1044 | </xsl:if>
|
---|
| 1045 | <xsl:text>);</xsl:text>
|
---|
| 1046 | </xsl:if>
|
---|
| 1047 |
|
---|
| 1048 | </xsl:template>
|
---|
| 1049 |
|
---|
| 1050 | <!-- Partner to paramvalconversion2tmpvar that emits the parameter when calling call the internal worker method. -->
|
---|
| 1051 | <xsl:template match="attribute/@type | param/@type" mode="paramvalconversionusingtmp">
|
---|
| 1052 | <xsl:param name="dir"/>
|
---|
| 1053 |
|
---|
| 1054 | <xsl:variable name="viatmpvar">
|
---|
| 1055 | <xsl:call-template name="paramconversionviatmp">
|
---|
| 1056 | <xsl:with-param name="dir" select="$dir"/>
|
---|
| 1057 | </xsl:call-template>
|
---|
| 1058 | </xsl:variable>
|
---|
| 1059 | <xsl:variable name="type" select="."/>
|
---|
| 1060 |
|
---|
| 1061 | <xsl:choose>
|
---|
| 1062 | <xsl:when test="$viatmpvar = 'yes'">
|
---|
| 1063 | <xsl:text>Tmp</xsl:text>
|
---|
| 1064 | <xsl:call-template name="capitalize">
|
---|
| 1065 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 1066 | </xsl:call-template>
|
---|
| 1067 |
|
---|
[45491] | 1068 | <xsl:choose>
|
---|
| 1069 | <xsl:when test="../@safearray='yes'">
|
---|
[53865] | 1070 | <xsl:text>.array()</xsl:text>
|
---|
[45491] | 1071 | </xsl:when>
|
---|
[53865] | 1072 | <xsl:when test="$type = 'wstring'">
|
---|
| 1073 | <xsl:text>.str()</xsl:text>
|
---|
| 1074 | </xsl:when>
|
---|
| 1075 | <xsl:when test="$type = 'uuid'">
|
---|
| 1076 | <xsl:text>.uuid()</xsl:text>
|
---|
| 1077 | </xsl:when>
|
---|
| 1078 | <xsl:when test="$type = '$unknown'">
|
---|
| 1079 | <xsl:text>.ptr()</xsl:text>
|
---|
| 1080 | </xsl:when>
|
---|
[53903] | 1081 | <xsl:when test="count(key('G_keyInterfacesByName', $type)) > 0">
|
---|
| 1082 | <xsl:text>.ptr()</xsl:text>
|
---|
| 1083 | </xsl:when>
|
---|
[53905] | 1084 | <xsl:otherwise><xsl:message terminate="yes">Oops #1</xsl:message></xsl:otherwise>
|
---|
[45491] | 1085 | </xsl:choose>
|
---|
| 1086 | </xsl:when>
|
---|
[53865] | 1087 |
|
---|
[45491] | 1088 | <xsl:otherwise>
|
---|
[53865] | 1089 | <xsl:text>a</xsl:text>
|
---|
| 1090 | <xsl:call-template name="capitalize">
|
---|
| 1091 | <xsl:with-param name="str" select="../@name"/>
|
---|
| 1092 | </xsl:call-template>
|
---|
| 1093 |
|
---|
| 1094 | <!-- Make sure BOOL values we pass down are either TRUE or FALSE. -->
|
---|
| 1095 | <xsl:if test="$type = 'boolean' and $dir = 'in'">
|
---|
| 1096 | <xsl:text> != FALSE</xsl:text>
|
---|
[45491] | 1097 | </xsl:if>
|
---|
| 1098 | </xsl:otherwise>
|
---|
| 1099 | </xsl:choose>
|
---|
[53865] | 1100 |
|
---|
[45491] | 1101 | </xsl:template>
|
---|
| 1102 |
|
---|
| 1103 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 1104 | emit attribute
|
---|
| 1105 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 1106 |
|
---|
| 1107 | <xsl:template match="attribute" mode="public">
|
---|
[52248] | 1108 | <xsl:param name="target"/>
|
---|
| 1109 |
|
---|
| 1110 | <xsl:call-template name="emitTargetBegin">
|
---|
| 1111 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1112 | </xsl:call-template>
|
---|
| 1113 |
|
---|
[45491] | 1114 | <xsl:variable name="attrbasename">
|
---|
| 1115 | <xsl:call-template name="capitalize">
|
---|
| 1116 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1117 | </xsl:call-template>
|
---|
| 1118 | </xsl:variable>
|
---|
| 1119 |
|
---|
| 1120 | <xsl:value-of select="concat(' STDMETHOD(COMGETTER(', $attrbasename, '))(')"/>
|
---|
[53905] | 1121 | <xsl:call-template name="emitPublicParameter">
|
---|
| 1122 | <xsl:with-param name="dir">out</xsl:with-param>
|
---|
| 1123 | </xsl:call-template>
|
---|
[103977] | 1124 | <xsl:text>) RT_OVERRIDE;
|
---|
[45491] | 1125 | </xsl:text>
|
---|
| 1126 |
|
---|
| 1127 | <xsl:if test="not(@readonly) or @readonly!='yes'">
|
---|
| 1128 | <xsl:value-of select="concat(' STDMETHOD(COMSETTER(', $attrbasename, '))(')"/>
|
---|
[53905] | 1129 | <xsl:call-template name="emitPublicParameter">
|
---|
| 1130 | <xsl:with-param name="dir">in</xsl:with-param>
|
---|
| 1131 | </xsl:call-template>
|
---|
[103977] | 1132 | <xsl:text>) RT_OVERRIDE;
|
---|
[45491] | 1133 | </xsl:text>
|
---|
| 1134 | </xsl:if>
|
---|
[52248] | 1135 |
|
---|
| 1136 | <xsl:call-template name="emitTargetEnd">
|
---|
| 1137 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1138 | </xsl:call-template>
|
---|
[45491] | 1139 | </xsl:template>
|
---|
| 1140 |
|
---|
| 1141 | <xsl:template match="attribute" mode="wrapped">
|
---|
[52248] | 1142 | <xsl:param name="target"/>
|
---|
| 1143 |
|
---|
| 1144 | <xsl:call-template name="emitTargetBegin">
|
---|
| 1145 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1146 | </xsl:call-template>
|
---|
| 1147 |
|
---|
[45491] | 1148 | <xsl:variable name="attrbasename">
|
---|
| 1149 | <xsl:call-template name="capitalize">
|
---|
| 1150 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1151 | </xsl:call-template>
|
---|
| 1152 | </xsl:variable>
|
---|
| 1153 |
|
---|
[55595] | 1154 | <xsl:if test="$attrbasename = 'MidlDoesNotLikeEmptyInterfaces'">
|
---|
| 1155 | <xsl:text> //</xsl:text>
|
---|
| 1156 | </xsl:if>
|
---|
| 1157 |
|
---|
[45491] | 1158 | <xsl:value-of select="concat(' virtual HRESULT get', $attrbasename, '(')"/>
|
---|
[47650] | 1159 | <xsl:variable name="passAutoCaller">
|
---|
| 1160 | <xsl:call-template name="checkoption">
|
---|
| 1161 | <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
|
---|
| 1162 | <xsl:with-param name="option" select="'passcaller'"/>
|
---|
| 1163 | </xsl:call-template>
|
---|
| 1164 | </xsl:variable>
|
---|
| 1165 | <xsl:if test="$passAutoCaller = 'true'">
|
---|
| 1166 | <xsl:text>AutoCaller &aAutoCaller, </xsl:text>
|
---|
| 1167 | </xsl:if>
|
---|
[45491] | 1168 | <xsl:apply-templates select="@type" mode="wrapped">
|
---|
| 1169 | <xsl:with-param name="dir" select="'out'"/>
|
---|
| 1170 | </xsl:apply-templates>
|
---|
| 1171 | <xsl:text>) = 0;
|
---|
| 1172 | </xsl:text>
|
---|
| 1173 |
|
---|
| 1174 | <xsl:if test="not(@readonly) or @readonly!='yes'">
|
---|
| 1175 | <xsl:value-of select="concat(' virtual HRESULT set', $attrbasename, '(')"/>
|
---|
[47650] | 1176 | <xsl:if test="$passAutoCaller = 'true'">
|
---|
| 1177 | <xsl:text>AutoCaller &aAutoCaller, </xsl:text>
|
---|
| 1178 | </xsl:if>
|
---|
[45491] | 1179 | <xsl:apply-templates select="@type" mode="wrapped">
|
---|
| 1180 | <xsl:with-param name="dir" select="'in'"/>
|
---|
| 1181 | </xsl:apply-templates>
|
---|
| 1182 | <xsl:text>) = 0;
|
---|
| 1183 | </xsl:text>
|
---|
| 1184 | </xsl:if>
|
---|
[52248] | 1185 |
|
---|
| 1186 | <xsl:call-template name="emitTargetEnd">
|
---|
| 1187 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1188 | </xsl:call-template>
|
---|
[45491] | 1189 | </xsl:template>
|
---|
| 1190 |
|
---|
| 1191 | <xsl:template match="attribute" mode="code">
|
---|
| 1192 | <xsl:param name="topclass"/>
|
---|
[53865] | 1193 | <xsl:param name="dtracetopclass"/>
|
---|
[52248] | 1194 | <xsl:param name="target"/>
|
---|
[45491] | 1195 |
|
---|
[52248] | 1196 | <xsl:call-template name="emitTargetBegin">
|
---|
| 1197 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1198 | </xsl:call-template>
|
---|
| 1199 |
|
---|
[45491] | 1200 | <xsl:variable name="attrbasename">
|
---|
| 1201 | <xsl:call-template name="capitalize">
|
---|
| 1202 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1203 | </xsl:call-template>
|
---|
| 1204 | </xsl:variable>
|
---|
[51601] | 1205 | <xsl:variable name="limitedAutoCaller">
|
---|
| 1206 | <xsl:call-template name="checkoption">
|
---|
| 1207 | <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
|
---|
| 1208 | <xsl:with-param name="option" select="'limitedcaller'"/>
|
---|
| 1209 | </xsl:call-template>
|
---|
| 1210 | </xsl:variable>
|
---|
[45491] | 1211 |
|
---|
[53865] | 1212 | <xsl:variable name="dtraceattrname">
|
---|
| 1213 | <xsl:choose>
|
---|
| 1214 | <xsl:when test="@dtracename">
|
---|
| 1215 | <xsl:value-of select="@dtracename"/>
|
---|
| 1216 | </xsl:when>
|
---|
| 1217 | <xsl:otherwise>
|
---|
| 1218 | <xsl:value-of select="$attrbasename"/>
|
---|
| 1219 | </xsl:otherwise>
|
---|
| 1220 | </xsl:choose>
|
---|
| 1221 | </xsl:variable>
|
---|
| 1222 |
|
---|
[45491] | 1223 | <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMGETTER(', $attrbasename, ')(')"/>
|
---|
[53905] | 1224 | <xsl:call-template name="emitPublicParameter">
|
---|
| 1225 | <xsl:with-param name="dir">out</xsl:with-param>
|
---|
| 1226 | </xsl:call-template>
|
---|
[45491] | 1227 | <xsl:text>)
|
---|
[55595] | 1228 | {</xsl:text>
|
---|
| 1229 | <xsl:if test="$attrbasename = 'MidlDoesNotLikeEmptyInterfaces'">
|
---|
| 1230 | <xsl:text>
|
---|
| 1231 | #if 0 /* This is a dummy attribute */</xsl:text>
|
---|
| 1232 | </xsl:if>
|
---|
| 1233 | <xsl:text>
|
---|
[45491] | 1234 | LogRelFlow(("{%p} %s: enter </xsl:text>
|
---|
| 1235 | <xsl:apply-templates select="@type" mode="logparamtext">
|
---|
| 1236 | <xsl:with-param name="dir" select="'out'"/>
|
---|
[50751] | 1237 | <xsl:with-param name="isref" select="'yes'"/>
|
---|
[45491] | 1238 | </xsl:apply-templates>
|
---|
| 1239 | <xsl:text>\n", this, </xsl:text>
|
---|
| 1240 | <xsl:value-of select="concat('"', $topclass, '::get', $attrbasename, '", ')"/>
|
---|
| 1241 | <xsl:apply-templates select="@type" mode="logparamval">
|
---|
| 1242 | <xsl:with-param name="dir" select="'out'"/>
|
---|
[50751] | 1243 | <xsl:with-param name="isref" select="'yes'"/>
|
---|
[45491] | 1244 | </xsl:apply-templates>
|
---|
| 1245 | <xsl:text>));
|
---|
[76091] | 1246 | </xsl:text>
|
---|
| 1247 | <xsl:if test="ancestor::interface[@wrap-gen-hook = 'yes']">
|
---|
| 1248 | <xsl:text>
|
---|
| 1249 | i_callHook(__FUNCTION__);</xsl:text>
|
---|
| 1250 | </xsl:if>
|
---|
| 1251 | <xsl:text>
|
---|
[80869] | 1252 | // Clear error info, to make in-process calls behave the same as
|
---|
| 1253 | // cross-apartment calls or out-of-process calls.
|
---|
[45491] | 1254 | VirtualBoxBase::clearError();
|
---|
| 1255 |
|
---|
| 1256 | HRESULT hrc;
|
---|
| 1257 |
|
---|
| 1258 | try
|
---|
| 1259 | {
|
---|
| 1260 | CheckComArgOutPointerValidThrow(a</xsl:text>
|
---|
| 1261 | <xsl:value-of select="$attrbasename"/>
|
---|
| 1262 | <xsl:text>);
|
---|
[53865] | 1263 | </xsl:text>
|
---|
| 1264 | <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
|
---|
| 1265 | <xsl:with-param name="dir" select="'out'"/>
|
---|
| 1266 | </xsl:apply-templates>
|
---|
[55595] | 1267 | <xsl:if test="$attrbasename != 'MidlDoesNotLikeEmptyInterfaces'">
|
---|
[53865] | 1268 | <xsl:text>
|
---|
| 1269 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1270 | </xsl:text>
|
---|
| 1271 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_ENTER('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1272 | <xsl:text>this);
|
---|
| 1273 | #endif</xsl:text>
|
---|
| 1274 | </xsl:if>
|
---|
| 1275 | <xsl:text>
|
---|
[51601] | 1276 | </xsl:text>
|
---|
| 1277 | <xsl:choose>
|
---|
| 1278 | <xsl:when test="$limitedAutoCaller = 'true'">
|
---|
| 1279 | <xsl:text>AutoLimitedCaller</xsl:text>
|
---|
| 1280 | </xsl:when>
|
---|
| 1281 | <xsl:otherwise>
|
---|
| 1282 | <xsl:text>AutoCaller</xsl:text>
|
---|
| 1283 | </xsl:otherwise>
|
---|
| 1284 | </xsl:choose>
|
---|
| 1285 | <xsl:text> autoCaller(this);
|
---|
[98262] | 1286 | hrc = autoCaller.hrc();
|
---|
[55961] | 1287 | if (SUCCEEDED(hrc))
|
---|
| 1288 | {
|
---|
[45491] | 1289 | </xsl:text>
|
---|
[55961] | 1290 | <xsl:value-of select="concat(' hrc = get', $attrbasename, '(')"/>
|
---|
[47650] | 1291 | <xsl:variable name="passAutoCaller">
|
---|
| 1292 | <xsl:call-template name="checkoption">
|
---|
| 1293 | <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
|
---|
| 1294 | <xsl:with-param name="option" select="'passcaller'"/>
|
---|
| 1295 | </xsl:call-template>
|
---|
| 1296 | </xsl:variable>
|
---|
| 1297 | <xsl:if test="$passAutoCaller = 'true'">
|
---|
| 1298 | <xsl:text>autoCaller, </xsl:text>
|
---|
| 1299 | </xsl:if>
|
---|
[53865] | 1300 | <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
|
---|
[45491] | 1301 | <xsl:with-param name="dir" select="'out'"/>
|
---|
| 1302 | </xsl:apply-templates>
|
---|
| 1303 | <xsl:text>);
|
---|
[55961] | 1304 | }</xsl:text>
|
---|
[55595] | 1305 | <xsl:if test="$attrbasename != 'MidlDoesNotLikeEmptyInterfaces'">
|
---|
[53865] | 1306 | <xsl:text>
|
---|
| 1307 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
[53878] | 1308 | </xsl:text>
|
---|
[53865] | 1309 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1310 | <xsl:text>this, hrc, 0 /*normal*/,</xsl:text>
|
---|
[53905] | 1311 | <xsl:call-template name="emitDTraceParamValue">
|
---|
[53865] | 1312 | <xsl:with-param name="dir">out</xsl:with-param>
|
---|
[53905] | 1313 | </xsl:call-template>
|
---|
[53865] | 1314 | <xsl:text>);
|
---|
[55961] | 1315 | #endif</xsl:text>
|
---|
[53865] | 1316 | </xsl:if>
|
---|
| 1317 | <xsl:text>
|
---|
[45491] | 1318 | }
|
---|
| 1319 | catch (HRESULT hrc2)
|
---|
| 1320 | {
|
---|
[53865] | 1321 | hrc = hrc2;</xsl:text>
|
---|
[55595] | 1322 | <xsl:if test="$attrbasename != 'MidlDoesNotLikeEmptyInterfaces'">
|
---|
[53865] | 1323 | <xsl:text>
|
---|
| 1324 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1325 | </xsl:text>
|
---|
| 1326 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1327 | <xsl:text>this, hrc, 1 /*hrc exception*/,</xsl:text>
|
---|
[53905] | 1328 | <xsl:call-template name="emitDTraceParamValNoTmp-DirNotIn"/>
|
---|
[53865] | 1329 | <xsl:text>);
|
---|
[55961] | 1330 | #endif</xsl:text>
|
---|
[53865] | 1331 | </xsl:if>
|
---|
| 1332 | <xsl:text>
|
---|
[45491] | 1333 | }
|
---|
| 1334 | catch (...)
|
---|
| 1335 | {
|
---|
[53865] | 1336 | hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);</xsl:text>
|
---|
[55595] | 1337 | <xsl:if test="$attrbasename != 'MidlDoesNotLikeEmptyInterfaces'">
|
---|
[53865] | 1338 | <xsl:text>
|
---|
| 1339 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1340 | </xsl:text>
|
---|
| 1341 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_GET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1342 | <xsl:text>this, hrc, 9 /*unhandled exception*/,</xsl:text>
|
---|
[53905] | 1343 | <xsl:call-template name="emitDTraceParamValNoTmp-DirNotIn"/>
|
---|
[53865] | 1344 | <xsl:text>);
|
---|
[55961] | 1345 | #endif</xsl:text>
|
---|
[53865] | 1346 | </xsl:if>
|
---|
| 1347 | <xsl:text>
|
---|
[45491] | 1348 | }
|
---|
| 1349 |
|
---|
| 1350 | LogRelFlow(("{%p} %s: leave </xsl:text>
|
---|
| 1351 | <xsl:apply-templates select="@type" mode="logparamtext">
|
---|
| 1352 | <xsl:with-param name="dir" select="'out'"/>
|
---|
[50751] | 1353 | <xsl:with-param name="isref" select="''"/>
|
---|
[45491] | 1354 | </xsl:apply-templates>
|
---|
| 1355 | <xsl:text> hrc=%Rhrc\n", this, </xsl:text>
|
---|
[53865] | 1356 | <xsl:value-of select="concat('"', $topclass, '::get', $dtraceattrname, '", ')"/>
|
---|
[45491] | 1357 | <xsl:apply-templates select="@type" mode="logparamval">
|
---|
| 1358 | <xsl:with-param name="dir" select="'out'"/>
|
---|
[50751] | 1359 | <xsl:with-param name="isref" select="''"/>
|
---|
[45491] | 1360 | </xsl:apply-templates>
|
---|
| 1361 | <xsl:text>, hrc));
|
---|
[55595] | 1362 | return hrc;</xsl:text>
|
---|
| 1363 | <xsl:if test="$attrbasename = 'MidlDoesNotLikeEmptyInterfaces'">
|
---|
| 1364 | <xsl:text>
|
---|
| 1365 | #else /* dummy attribute */
|
---|
[63147] | 1366 | NOREF(aMidlDoesNotLikeEmptyInterfaces);
|
---|
[55595] | 1367 | return E_FAIL;
|
---|
| 1368 | #endif /* dummy attribute */</xsl:text>
|
---|
| 1369 | </xsl:if>
|
---|
| 1370 | <xsl:text>
|
---|
[45491] | 1371 | }
|
---|
| 1372 | </xsl:text>
|
---|
| 1373 | <xsl:if test="not(@readonly) or @readonly!='yes'">
|
---|
[53915] | 1374 | <xsl:text>
|
---|
[52248] | 1375 | </xsl:text>
|
---|
[45491] | 1376 | <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMSETTER(', $attrbasename, ')(')"/>
|
---|
[53905] | 1377 | <xsl:call-template name="emitPublicParameter">
|
---|
| 1378 | <xsl:with-param name="dir">in</xsl:with-param>
|
---|
| 1379 | </xsl:call-template>
|
---|
[45491] | 1380 | <!-- @todo check in parameters if possible -->
|
---|
| 1381 | <xsl:text>)
|
---|
| 1382 | {
|
---|
| 1383 | LogRelFlow(("{%p} %s: enter </xsl:text>
|
---|
| 1384 | <xsl:apply-templates select="@type" mode="logparamtext">
|
---|
| 1385 | <xsl:with-param name="dir" select="'in'"/>
|
---|
[50751] | 1386 | <xsl:with-param name="isref" select="''"/>
|
---|
[45491] | 1387 | </xsl:apply-templates>
|
---|
| 1388 | <xsl:text>\n", this, </xsl:text>
|
---|
| 1389 | <xsl:value-of select="concat('"', $topclass, '::set', $attrbasename, '", ')"/>
|
---|
| 1390 | <xsl:apply-templates select="@type" mode="logparamval">
|
---|
| 1391 | <xsl:with-param name="dir" select="'in'"/>
|
---|
[50751] | 1392 | <xsl:with-param name="isref" select="''"/>
|
---|
[45491] | 1393 | </xsl:apply-templates>
|
---|
| 1394 | <xsl:text>));
|
---|
[76091] | 1395 | </xsl:text>
|
---|
| 1396 | <xsl:if test="ancestor::interface[@wrap-gen-hook = 'yes']">
|
---|
| 1397 | <xsl:text>
|
---|
| 1398 | i_callHook(__FUNCTION__);</xsl:text>
|
---|
| 1399 | </xsl:if>
|
---|
| 1400 | <xsl:text>
|
---|
[80869] | 1401 | // Clear error info, to make in-process calls behave the same as
|
---|
| 1402 | // cross-apartment calls or out-of-process calls.
|
---|
[45491] | 1403 | VirtualBoxBase::clearError();
|
---|
| 1404 |
|
---|
| 1405 | HRESULT hrc;
|
---|
| 1406 |
|
---|
| 1407 | try
|
---|
| 1408 | {
|
---|
[51601] | 1409 | </xsl:text>
|
---|
[53865] | 1410 | <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
|
---|
| 1411 | <xsl:with-param name="dir" select="'in'"/>
|
---|
| 1412 | </xsl:apply-templates>
|
---|
| 1413 | <xsl:text>
|
---|
| 1414 |
|
---|
| 1415 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1416 | </xsl:text>
|
---|
| 1417 | <xsl:value-of select="translate(concat('VBOXAPI_', $topclass, '_SET_', $dtraceattrname, '_ENTER('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1418 | <xsl:text>this, </xsl:text>
|
---|
[53905] | 1419 | <xsl:call-template name="emitDTraceParamValue">
|
---|
[53865] | 1420 | <xsl:with-param name="dir">in</xsl:with-param>
|
---|
[53905] | 1421 | </xsl:call-template>
|
---|
[53865] | 1422 | <xsl:text>);
|
---|
| 1423 | #endif
|
---|
| 1424 | </xsl:text>
|
---|
[51601] | 1425 | <xsl:choose>
|
---|
| 1426 | <xsl:when test="$limitedAutoCaller = 'true'">
|
---|
| 1427 | <xsl:text>AutoLimitedCaller</xsl:text>
|
---|
| 1428 | </xsl:when>
|
---|
| 1429 | <xsl:otherwise>
|
---|
| 1430 | <xsl:text>AutoCaller</xsl:text>
|
---|
| 1431 | </xsl:otherwise>
|
---|
| 1432 | </xsl:choose>
|
---|
| 1433 | <xsl:text> autoCaller(this);
|
---|
[98262] | 1434 | hrc = autoCaller.hrc();
|
---|
[55961] | 1435 | if (SUCCEEDED(hrc))
|
---|
| 1436 | {
|
---|
[45491] | 1437 | </xsl:text>
|
---|
[55961] | 1438 | <xsl:value-of select="concat(' hrc = set', $attrbasename, '(')"/>
|
---|
[47650] | 1439 | <xsl:if test="$passAutoCaller = 'true'">
|
---|
| 1440 | <xsl:text>autoCaller, </xsl:text>
|
---|
| 1441 | </xsl:if>
|
---|
[53865] | 1442 | <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
|
---|
[45491] | 1443 | <xsl:with-param name="dir" select="'in'"/>
|
---|
| 1444 | </xsl:apply-templates>
|
---|
| 1445 | <xsl:text>);
|
---|
[55961] | 1446 | }
|
---|
[53865] | 1447 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
[53878] | 1448 | </xsl:text>
|
---|
[53865] | 1449 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1450 | <xsl:text>this, hrc, 0 /*normal*/,</xsl:text>
|
---|
[53905] | 1451 | <xsl:call-template name="emitDTraceParamValue">
|
---|
[53865] | 1452 | <xsl:with-param name="dir">in</xsl:with-param>
|
---|
[53905] | 1453 | </xsl:call-template>
|
---|
[53865] | 1454 | <xsl:text>);
|
---|
| 1455 | #endif
|
---|
[45491] | 1456 | }
|
---|
| 1457 | catch (HRESULT hrc2)
|
---|
| 1458 | {
|
---|
| 1459 | hrc = hrc2;
|
---|
[53865] | 1460 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1461 | </xsl:text>
|
---|
| 1462 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1463 | <xsl:text>this, hrc, 1 /*hrc exception*/,</xsl:text>
|
---|
[53905] | 1464 | <xsl:call-template name="emitDTraceParamValNoTmp-DirIn"/>
|
---|
[53865] | 1465 | <xsl:text>);
|
---|
| 1466 | #endif
|
---|
[45491] | 1467 | }
|
---|
| 1468 | catch (...)
|
---|
| 1469 | {
|
---|
| 1470 | hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
|
---|
[53865] | 1471 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1472 | </xsl:text>
|
---|
| 1473 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_SET_', $dtraceattrname, '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1474 | <xsl:text>this, hrc, 9 /*unhandled exception*/,</xsl:text>
|
---|
[53905] | 1475 | <xsl:call-template name="emitDTraceParamValNoTmp-DirIn"/>
|
---|
[53865] | 1476 | <xsl:text>);
|
---|
| 1477 | #endif
|
---|
[45491] | 1478 | }
|
---|
| 1479 |
|
---|
| 1480 | LogRelFlow(("{%p} %s: leave hrc=%Rhrc\n", this, </xsl:text>
|
---|
| 1481 | <xsl:value-of select="concat('"', $topclass, '::set', $attrbasename, '", ')"/>
|
---|
| 1482 | <xsl:text>hrc));
|
---|
| 1483 | return hrc;
|
---|
| 1484 | }
|
---|
[52248] | 1485 | </xsl:text>
|
---|
| 1486 | </xsl:if>
|
---|
[45491] | 1487 |
|
---|
[52248] | 1488 | <xsl:call-template name="emitTargetEnd">
|
---|
| 1489 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1490 | </xsl:call-template>
|
---|
| 1491 |
|
---|
[53915] | 1492 | <xsl:call-template name="xsltprocNewlineOutputHack"/>
|
---|
[45491] | 1493 | </xsl:template>
|
---|
| 1494 |
|
---|
| 1495 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53878] | 1496 | Emit DTrace probes for the given attribute.
|
---|
| 1497 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 1498 | <xsl:template match="attribute" mode="dtrace-probes">
|
---|
| 1499 | <xsl:param name="topclass"/>
|
---|
| 1500 | <xsl:param name="dtracetopclass"/>
|
---|
| 1501 | <xsl:param name="target"/>
|
---|
| 1502 |
|
---|
| 1503 | <xsl:variable name="dtraceattrname">
|
---|
| 1504 | <xsl:choose>
|
---|
| 1505 | <xsl:when test="@dtracename">
|
---|
| 1506 | <xsl:value-of select="@dtracename"/>
|
---|
| 1507 | </xsl:when>
|
---|
| 1508 | <xsl:otherwise>
|
---|
| 1509 | <!-- attrbasename -->
|
---|
| 1510 | <xsl:call-template name="capitalize">
|
---|
| 1511 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1512 | </xsl:call-template>
|
---|
| 1513 | </xsl:otherwise>
|
---|
| 1514 | </xsl:choose>
|
---|
| 1515 | </xsl:variable>
|
---|
| 1516 |
|
---|
[55595] | 1517 | <xsl:if test="@name != 'midlDoesNotLikeEmptyInterfaces'">
|
---|
[53878] | 1518 | <xsl:text> probe </xsl:text>
|
---|
| 1519 | <!-- <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__enter(struct ', $topclass)"/> -->
|
---|
| 1520 | <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__enter(void')"/>
|
---|
| 1521 | <xsl:text> *a_pThis);
|
---|
| 1522 | probe </xsl:text>
|
---|
| 1523 | <!-- <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__return(struct ', $topclass, ' *a_pThis')"/> -->
|
---|
| 1524 | <xsl:value-of select="concat($dtracetopclass, '__get__', $dtraceattrname, '__return(void *a_pThis')"/>
|
---|
| 1525 | <xsl:text>, uint32_t a_hrc, int32_t enmWhy, </xsl:text>
|
---|
| 1526 | <xsl:apply-templates select="@type" mode="dtraceparamdecl">
|
---|
| 1527 | <xsl:with-param name="dir">out</xsl:with-param>
|
---|
| 1528 | </xsl:apply-templates>
|
---|
| 1529 | <xsl:text>);
|
---|
| 1530 | </xsl:text>
|
---|
| 1531 | </xsl:if>
|
---|
[55595] | 1532 | <xsl:if test="(not(@readonly) or @readonly!='yes') and @name != 'midlDoesNotLikeEmptyInterfaces'">
|
---|
[53878] | 1533 | <xsl:text> probe </xsl:text>
|
---|
| 1534 | <!-- <xsl:value-of select="concat($topclass, '__set__', $dtraceattrname, '__enter(struct ', $topclass, ' *a_pThis, ')"/>-->
|
---|
| 1535 | <xsl:value-of select="concat($topclass, '__set__', $dtraceattrname, '__enter(void *a_pThis, ')"/>
|
---|
| 1536 | <xsl:apply-templates select="@type" mode="dtraceparamdecl">
|
---|
| 1537 | <xsl:with-param name="dir" select="'in'"/>
|
---|
| 1538 | </xsl:apply-templates>
|
---|
| 1539 | <xsl:text>);
|
---|
| 1540 | probe </xsl:text>
|
---|
| 1541 | <!-- <xsl:value-of select="concat($dtracetopclass, '__set__', $dtraceattrname, '__return(struct ', $topclass, ' *a_pThis')"/> -->
|
---|
| 1542 | <xsl:value-of select="concat($dtracetopclass, '__set__', $dtraceattrname, '__return(void *a_pThis')"/>
|
---|
| 1543 | <xsl:text>, uint32_t a_hrc, int32_t enmWhy, </xsl:text>
|
---|
| 1544 | <xsl:apply-templates select="@type" mode="dtraceparamdecl">
|
---|
| 1545 | <xsl:with-param name="dir">in</xsl:with-param>
|
---|
| 1546 | </xsl:apply-templates>
|
---|
| 1547 | <xsl:text>);
|
---|
| 1548 | </xsl:text>
|
---|
| 1549 | </xsl:if>
|
---|
| 1550 | </xsl:template>
|
---|
| 1551 |
|
---|
| 1552 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 1553 | Emit all attributes of an interface (current node).
|
---|
[45491] | 1554 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 1555 | <xsl:template name="emitAttributes">
|
---|
| 1556 | <xsl:param name="topclass"/>
|
---|
[53865] | 1557 | <xsl:param name="dtracetopclass"/>
|
---|
[45491] | 1558 | <xsl:param name="pmode"/>
|
---|
| 1559 |
|
---|
[56396] | 1560 | <xsl:variable name="name" select="@name"/>
|
---|
[45491] | 1561 | <!-- first recurse to emit all base interfaces -->
|
---|
[53903] | 1562 | <xsl:variable name="extends" select="@extends"/>
|
---|
[50183] | 1563 | <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
|
---|
[53903] | 1564 | <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
|
---|
| 1565 | <xsl:call-template name="emitAttributes">
|
---|
| 1566 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 1567 | <xsl:with-param name="pmode" select="$pmode"/>
|
---|
| 1568 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 1569 | </xsl:call-template>
|
---|
| 1570 | </xsl:for-each>
|
---|
[45491] | 1571 | </xsl:if>
|
---|
| 1572 |
|
---|
| 1573 | <xsl:choose>
|
---|
| 1574 | <xsl:when test="$pmode='code'">
|
---|
| 1575 | <xsl:text>//
|
---|
| 1576 | </xsl:text>
|
---|
[56396] | 1577 | <xsl:value-of select="concat('// ', $name, ' properties')"/>
|
---|
[45491] | 1578 | <xsl:text>
|
---|
| 1579 | //
|
---|
| 1580 |
|
---|
| 1581 | </xsl:text>
|
---|
| 1582 | </xsl:when>
|
---|
[53905] | 1583 | <xsl:when test="$pmode != 'dtrace-probes'">
|
---|
[79737] | 1584 | <xsl:value-of select="concat($G_sNewLine, ' /** @name ', translate(substring($pmode, 1, 1), $G_lowerCase, $G_upperCase), substring($pmode,2), ' ', $name, ' properties', $G_sNewLine)"/>
|
---|
| 1585 | <xsl:text> * @{ */
|
---|
| 1586 | </xsl:text>
|
---|
[53878] | 1587 | </xsl:when>
|
---|
[45491] | 1588 | </xsl:choose>
|
---|
| 1589 | <xsl:choose>
|
---|
| 1590 | <xsl:when test="$pmode='public'">
|
---|
[53903] | 1591 | <xsl:apply-templates select="./attribute | ./if" mode="public">
|
---|
[52248] | 1592 | <xsl:with-param name="emitmode" select="'attribute'"/>
|
---|
| 1593 | </xsl:apply-templates>
|
---|
[56396] | 1594 | <xsl:variable name="reservedAttributes" select="@reservedAttributes"/>
|
---|
| 1595 | <xsl:if test="$reservedAttributes > 0">
|
---|
| 1596 | <!-- tricky way to do a "for" loop without recursion -->
|
---|
| 1597 | <xsl:for-each select="(//*)[position() <= $reservedAttributes]">
|
---|
| 1598 | <xsl:text> STDMETHOD(COMGETTER(InternalAndReservedAttribute</xsl:text>
|
---|
| 1599 | <xsl:value-of select="concat(position(), $name)"/>
|
---|
[103977] | 1600 | <xsl:text>))(ULONG *aReserved) RT_OVERRIDE;
</xsl:text>
|
---|
[56396] | 1601 | </xsl:for-each>
|
---|
| 1602 | </xsl:if>
|
---|
[45491] | 1603 | </xsl:when>
|
---|
| 1604 | <xsl:when test="$pmode='wrapped'">
|
---|
[53903] | 1605 | <xsl:apply-templates select="./attribute | ./if" mode="wrapped">
|
---|
[52248] | 1606 | <xsl:with-param name="emitmode" select="'attribute'"/>
|
---|
| 1607 | </xsl:apply-templates>
|
---|
[45491] | 1608 | </xsl:when>
|
---|
| 1609 | <xsl:when test="$pmode='code'">
|
---|
[53903] | 1610 | <xsl:apply-templates select="./attribute | ./if" mode="code">
|
---|
[45491] | 1611 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
[53865] | 1612 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
[52248] | 1613 | <xsl:with-param name="emitmode" select="'attribute'"/>
|
---|
[45491] | 1614 | </xsl:apply-templates>
|
---|
[56396] | 1615 | <xsl:variable name="reservedAttributes" select="@reservedAttributes"/>
|
---|
| 1616 | <xsl:if test="$reservedAttributes > 0">
|
---|
| 1617 | <!-- tricky way to do a "for" loop without recursion -->
|
---|
| 1618 | <xsl:for-each select="(//*)[position() <= $reservedAttributes]">
|
---|
| 1619 | <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::COMGETTER(InternalAndReservedAttribute', position(), $name, ')(ULONG *aReserved)
')"/>
|
---|
| 1620 | <xsl:text>{
|
---|
| 1621 | NOREF(aReserved);
|
---|
| 1622 | return E_NOTIMPL;
|
---|
| 1623 | }
|
---|
| 1624 |
|
---|
| 1625 | </xsl:text>
|
---|
| 1626 | </xsl:for-each>
|
---|
| 1627 | </xsl:if>
|
---|
[45491] | 1628 | </xsl:when>
|
---|
[53878] | 1629 | <xsl:when test="$pmode = 'dtrace-probes'">
|
---|
[53903] | 1630 | <xsl:apply-templates select="./attribute | ./if" mode="dtrace-probes">
|
---|
[53878] | 1631 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 1632 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 1633 | <xsl:with-param name="emitmode" select="'attribute'"/>
|
---|
| 1634 | </xsl:apply-templates>
|
---|
| 1635 | </xsl:when>
|
---|
[53905] | 1636 | <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitAttributes</xsl:message></xsl:otherwise>
|
---|
[45491] | 1637 | </xsl:choose>
|
---|
[79737] | 1638 |
|
---|
| 1639 | <!-- close doxygen @name -->
|
---|
| 1640 | <xsl:if test="($pmode != 'code') and ($pmode != 'dtrace-probes')" >
|
---|
| 1641 | <xsl:text> /** @} */
|
---|
| 1642 | </xsl:text>
|
---|
| 1643 | </xsl:if>
|
---|
[45491] | 1644 | </xsl:template>
|
---|
| 1645 |
|
---|
[52248] | 1646 | <xsl:template name="emitTargetBegin">
|
---|
| 1647 | <xsl:param name="target"/>
|
---|
| 1648 |
|
---|
| 1649 | <xsl:choose>
|
---|
[53905] | 1650 | <xsl:when test="$target = ''"/>
|
---|
[52248] | 1651 | <xsl:when test="$target = 'xpidl'">
|
---|
| 1652 | <xsl:text>#ifdef VBOX_WITH_XPCOM
|
---|
| 1653 | </xsl:text>
|
---|
| 1654 | </xsl:when>
|
---|
| 1655 | <xsl:when test="$target = 'midl'">
|
---|
| 1656 | <xsl:text>#ifndef VBOX_WITH_XPCOM
|
---|
| 1657 | </xsl:text>
|
---|
| 1658 | </xsl:when>
|
---|
[53905] | 1659 | <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitTargetBegin: target=<xsl:value-of select="$target"/></xsl:message></xsl:otherwise>
|
---|
[52248] | 1660 | </xsl:choose>
|
---|
| 1661 | </xsl:template>
|
---|
| 1662 |
|
---|
| 1663 | <xsl:template name="emitTargetEnd">
|
---|
| 1664 | <xsl:param name="target"/>
|
---|
| 1665 |
|
---|
| 1666 | <xsl:choose>
|
---|
[53905] | 1667 | <xsl:when test="$target = ''"/>
|
---|
[52248] | 1668 | <xsl:when test="$target = 'xpidl'">
|
---|
| 1669 | <xsl:text>#endif /* VBOX_WITH_XPCOM */
|
---|
| 1670 | </xsl:text>
|
---|
| 1671 | </xsl:when>
|
---|
| 1672 | <xsl:when test="$target = 'midl'">
|
---|
| 1673 | <xsl:text>#endif /* !VBOX_WITH_XPCOM */
|
---|
| 1674 | </xsl:text>
|
---|
| 1675 | </xsl:when>
|
---|
[53905] | 1676 | <xsl:otherwise><xsl:message terminate="yes">Otherwise oops in emitTargetEnd target=<xsl:value-of select="$target"/></xsl:message></xsl:otherwise>
|
---|
[52248] | 1677 | </xsl:choose>
|
---|
| 1678 | </xsl:template>
|
---|
| 1679 |
|
---|
| 1680 |
|
---|
[45491] | 1681 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 1682 | emit method
|
---|
| 1683 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 1684 |
|
---|
| 1685 | <xsl:template match="method" mode="public">
|
---|
[52248] | 1686 | <xsl:param name="target"/>
|
---|
| 1687 |
|
---|
| 1688 | <xsl:call-template name="emitTargetBegin">
|
---|
| 1689 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1690 | </xsl:call-template>
|
---|
| 1691 |
|
---|
[45491] | 1692 | <xsl:variable name="methodindent">
|
---|
| 1693 | <xsl:call-template name="tospace">
|
---|
| 1694 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1695 | </xsl:call-template>
|
---|
| 1696 | </xsl:variable>
|
---|
| 1697 |
|
---|
| 1698 | <xsl:text> STDMETHOD(</xsl:text>
|
---|
| 1699 | <xsl:call-template name="capitalize">
|
---|
| 1700 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1701 | </xsl:call-template>
|
---|
| 1702 | <xsl:text>)(</xsl:text>
|
---|
| 1703 | <xsl:for-each select="param">
|
---|
[53905] | 1704 | <xsl:call-template name="emitPublicParameter">
|
---|
[45491] | 1705 | <xsl:with-param name="dir" select="@dir"/>
|
---|
[53905] | 1706 | </xsl:call-template>
|
---|
[45491] | 1707 | <xsl:if test="not(position()=last())">
|
---|
| 1708 | <xsl:text>,
|
---|
| 1709 | </xsl:text>
|
---|
| 1710 | <xsl:value-of select="$methodindent"/>
|
---|
| 1711 | </xsl:if>
|
---|
| 1712 | </xsl:for-each>
|
---|
[103977] | 1713 | <xsl:text>) RT_OVERRIDE;
|
---|
[45491] | 1714 | </xsl:text>
|
---|
[52248] | 1715 |
|
---|
| 1716 | <xsl:call-template name="emitTargetEnd">
|
---|
| 1717 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1718 | </xsl:call-template>
|
---|
[45491] | 1719 | </xsl:template>
|
---|
| 1720 |
|
---|
| 1721 | <xsl:template match="method" mode="wrapped">
|
---|
[52248] | 1722 | <xsl:param name="target"/>
|
---|
| 1723 |
|
---|
| 1724 | <xsl:call-template name="emitTargetBegin">
|
---|
| 1725 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1726 | </xsl:call-template>
|
---|
| 1727 |
|
---|
[45491] | 1728 | <xsl:variable name="methodindent">
|
---|
| 1729 | <xsl:call-template name="tospace">
|
---|
| 1730 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1731 | </xsl:call-template>
|
---|
| 1732 | </xsl:variable>
|
---|
| 1733 |
|
---|
| 1734 | <xsl:text> virtual HRESULT </xsl:text>
|
---|
| 1735 | <xsl:call-template name="uncapitalize">
|
---|
| 1736 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1737 | </xsl:call-template>
|
---|
| 1738 | <xsl:text>(</xsl:text>
|
---|
[47650] | 1739 | <xsl:variable name="passAutoCaller">
|
---|
| 1740 | <xsl:call-template name="checkoption">
|
---|
| 1741 | <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
|
---|
| 1742 | <xsl:with-param name="option" select="'passcaller'"/>
|
---|
| 1743 | </xsl:call-template>
|
---|
| 1744 | </xsl:variable>
|
---|
| 1745 | <xsl:if test="$passAutoCaller = 'true'">
|
---|
| 1746 | <xsl:text>AutoCaller &aAutoCaller</xsl:text>
|
---|
| 1747 | <xsl:if test="count(param) > 0">
|
---|
| 1748 | <xsl:text>,
|
---|
| 1749 | </xsl:text>
|
---|
| 1750 | <xsl:value-of select="$methodindent"/>
|
---|
| 1751 | </xsl:if>
|
---|
| 1752 | </xsl:if>
|
---|
[45491] | 1753 | <xsl:for-each select="param">
|
---|
| 1754 | <xsl:apply-templates select="@type" mode="wrapped">
|
---|
| 1755 | <xsl:with-param name="dir" select="@dir"/>
|
---|
| 1756 | </xsl:apply-templates>
|
---|
| 1757 | <xsl:if test="not(position()=last())">
|
---|
| 1758 | <xsl:text>,
|
---|
| 1759 | </xsl:text>
|
---|
| 1760 | <xsl:value-of select="$methodindent"/>
|
---|
| 1761 | </xsl:if>
|
---|
| 1762 | </xsl:for-each>
|
---|
| 1763 | <xsl:text>) = 0;
|
---|
| 1764 | </xsl:text>
|
---|
[52248] | 1765 |
|
---|
| 1766 | <xsl:call-template name="emitTargetEnd">
|
---|
| 1767 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1768 | </xsl:call-template>
|
---|
[45491] | 1769 | </xsl:template>
|
---|
| 1770 |
|
---|
| 1771 | <xsl:template match="method" mode="code">
|
---|
| 1772 | <xsl:param name="topclass"/>
|
---|
[53865] | 1773 | <xsl:param name="dtracetopclass"/>
|
---|
[52248] | 1774 | <xsl:param name="target"/>
|
---|
[45491] | 1775 |
|
---|
[52248] | 1776 | <xsl:call-template name="emitTargetBegin">
|
---|
| 1777 | <xsl:with-param name="target" select="$target"/>
|
---|
| 1778 | </xsl:call-template>
|
---|
| 1779 |
|
---|
[45491] | 1780 | <xsl:variable name="methodindent">
|
---|
| 1781 | <xsl:call-template name="tospace">
|
---|
| 1782 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1783 | </xsl:call-template>
|
---|
| 1784 | </xsl:variable>
|
---|
| 1785 | <xsl:variable name="methodclassindent">
|
---|
| 1786 | <xsl:call-template name="tospace">
|
---|
| 1787 | <xsl:with-param name="str" select="concat($topclass, @name)"/>
|
---|
| 1788 | </xsl:call-template>
|
---|
| 1789 | </xsl:variable>
|
---|
| 1790 | <xsl:variable name="methodbasename">
|
---|
| 1791 | <xsl:call-template name="capitalize">
|
---|
| 1792 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1793 | </xsl:call-template>
|
---|
| 1794 | </xsl:variable>
|
---|
[51601] | 1795 | <xsl:variable name="limitedAutoCaller">
|
---|
| 1796 | <xsl:call-template name="checkoption">
|
---|
| 1797 | <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
|
---|
| 1798 | <xsl:with-param name="option" select="'limitedcaller'"/>
|
---|
| 1799 | </xsl:call-template>
|
---|
| 1800 | </xsl:variable>
|
---|
[53865] | 1801 | <xsl:variable name="dtracemethodname">
|
---|
| 1802 | <xsl:choose>
|
---|
| 1803 | <xsl:when test="@dtracename">
|
---|
| 1804 | <xsl:value-of select="@dtracename"/>
|
---|
| 1805 | </xsl:when>
|
---|
| 1806 | <xsl:otherwise>
|
---|
| 1807 | <xsl:value-of select="@name"/>
|
---|
| 1808 | </xsl:otherwise>
|
---|
| 1809 | </xsl:choose>
|
---|
| 1810 | </xsl:variable>
|
---|
[53878] | 1811 | <xsl:variable name="dtracenamehack"> <!-- Ugly hack to deal with Session::assignMachine and similar. -->
|
---|
| 1812 | <xsl:if test="name(..) = 'if'">
|
---|
| 1813 | <xsl:value-of select="concat('__', ../@target)"/>
|
---|
| 1814 | </xsl:if>
|
---|
| 1815 | </xsl:variable>
|
---|
[45491] | 1816 |
|
---|
| 1817 | <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::', $methodbasename, '(')"/>
|
---|
| 1818 | <xsl:for-each select="param">
|
---|
[53905] | 1819 | <xsl:call-template name="emitPublicParameter">
|
---|
[45491] | 1820 | <xsl:with-param name="dir" select="@dir"/>
|
---|
[53905] | 1821 | </xsl:call-template>
|
---|
[45491] | 1822 | <xsl:if test="not(position()=last())">
|
---|
| 1823 | <xsl:text>,
|
---|
| 1824 | </xsl:text>
|
---|
| 1825 | <xsl:value-of select="$methodclassindent"/>
|
---|
| 1826 | </xsl:if>
|
---|
| 1827 | </xsl:for-each>
|
---|
| 1828 | <xsl:text>)
|
---|
| 1829 | {
|
---|
[85421] | 1830 | LogRelFlow(("{%p} %s: enter</xsl:text>
|
---|
[45491] | 1831 | <xsl:for-each select="param">
|
---|
| 1832 | <xsl:text> </xsl:text>
|
---|
| 1833 | <xsl:apply-templates select="@type" mode="logparamtext">
|
---|
| 1834 | <xsl:with-param name="dir" select="@dir"/>
|
---|
[50751] | 1835 | <xsl:with-param name="isref" select="'yes'"/>
|
---|
[45491] | 1836 | </xsl:apply-templates>
|
---|
| 1837 | </xsl:for-each>
|
---|
| 1838 | <xsl:text>\n", this</xsl:text>
|
---|
| 1839 | <xsl:value-of select="concat(', "', $topclass, '::', @name, '"')"/>
|
---|
| 1840 | <xsl:for-each select="param">
|
---|
| 1841 | <xsl:text>, </xsl:text>
|
---|
| 1842 | <xsl:apply-templates select="@type" mode="logparamval">
|
---|
| 1843 | <xsl:with-param name="dir" select="@dir"/>
|
---|
[50751] | 1844 | <xsl:with-param name="isref" select="'yes'"/>
|
---|
[45491] | 1845 | </xsl:apply-templates>
|
---|
| 1846 | </xsl:for-each>
|
---|
| 1847 | <xsl:text>));
|
---|
[76091] | 1848 | </xsl:text>
|
---|
| 1849 | <xsl:if test="ancestor::interface[@wrap-gen-hook = 'yes']">
|
---|
| 1850 | <xsl:text>
|
---|
| 1851 | i_callHook(__FUNCTION__);</xsl:text>
|
---|
| 1852 | </xsl:if>
|
---|
| 1853 | <xsl:text>
|
---|
[80869] | 1854 | // Clear error info, to make in-process calls behave the same as
|
---|
| 1855 | // cross-apartment calls or out-of-process calls.
|
---|
[45491] | 1856 | VirtualBoxBase::clearError();
|
---|
| 1857 |
|
---|
| 1858 | HRESULT hrc;
|
---|
| 1859 |
|
---|
| 1860 | try
|
---|
| 1861 | {
|
---|
| 1862 | </xsl:text>
|
---|
| 1863 | <!-- @todo check in parameters if possible -->
|
---|
| 1864 | <xsl:for-each select="param">
|
---|
| 1865 | <xsl:if test="@dir!='in'">
|
---|
| 1866 | <xsl:text> CheckComArgOutPointerValidThrow(a</xsl:text>
|
---|
| 1867 | <xsl:call-template name="capitalize">
|
---|
| 1868 | <xsl:with-param name="str" select="@name"/>
|
---|
| 1869 | </xsl:call-template>
|
---|
| 1870 | <xsl:text>);
|
---|
| 1871 | </xsl:text>
|
---|
| 1872 | </xsl:if>
|
---|
| 1873 | </xsl:for-each>
|
---|
[53865] | 1874 | <xsl:text>
|
---|
| 1875 | </xsl:text>
|
---|
| 1876 | <xsl:for-each select="param">
|
---|
| 1877 | <xsl:text>
|
---|
| 1878 | </xsl:text>
|
---|
| 1879 | <xsl:apply-templates select="@type" mode="paramvalconversion2tmpvar">
|
---|
| 1880 | <xsl:with-param name="dir" select="@dir"/>
|
---|
| 1881 | </xsl:apply-templates>
|
---|
| 1882 | </xsl:for-each>
|
---|
[45491] | 1883 | <xsl:text>
|
---|
[55961] | 1884 |
|
---|
[53865] | 1885 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
[51601] | 1886 | </xsl:text>
|
---|
[53865] | 1887 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_ENTER('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1888 | <xsl:text>this</xsl:text>
|
---|
| 1889 | <xsl:for-each select="param[@dir='in']">
|
---|
| 1890 | <xsl:text>, </xsl:text>
|
---|
[53905] | 1891 | <xsl:call-template name="emitDTraceParamValue">
|
---|
[53865] | 1892 | <xsl:with-param name="dir" select="@dir"/>
|
---|
[53905] | 1893 | </xsl:call-template>
|
---|
[53865] | 1894 | </xsl:for-each>
|
---|
| 1895 | <xsl:text>);
|
---|
| 1896 | #endif
|
---|
| 1897 | </xsl:text>
|
---|
[51601] | 1898 | <xsl:choose>
|
---|
| 1899 | <xsl:when test="$limitedAutoCaller = 'true'">
|
---|
| 1900 | <xsl:text>AutoLimitedCaller</xsl:text>
|
---|
| 1901 | </xsl:when>
|
---|
| 1902 | <xsl:otherwise>
|
---|
| 1903 | <xsl:text>AutoCaller</xsl:text>
|
---|
| 1904 | </xsl:otherwise>
|
---|
| 1905 | </xsl:choose>
|
---|
| 1906 | <xsl:text> autoCaller(this);
|
---|
[98262] | 1907 | hrc = autoCaller.hrc();
|
---|
[55961] | 1908 | if (SUCCEEDED(hrc))
|
---|
| 1909 | {
|
---|
[45491] | 1910 | </xsl:text>
|
---|
[55961] | 1911 | <xsl:value-of select="concat(' hrc = ', @name, '(')"/>
|
---|
[47650] | 1912 | <xsl:variable name="passAutoCaller">
|
---|
| 1913 | <xsl:call-template name="checkoption">
|
---|
| 1914 | <xsl:with-param name="optionlist" select="@wrap-hint-server"/>
|
---|
| 1915 | <xsl:with-param name="option" select="'passcaller'"/>
|
---|
| 1916 | </xsl:call-template>
|
---|
| 1917 | </xsl:variable>
|
---|
| 1918 | <xsl:if test="$passAutoCaller = 'true'">
|
---|
| 1919 | <xsl:text>autoCaller</xsl:text>
|
---|
| 1920 | <xsl:if test="count(param) > 0">
|
---|
| 1921 | <xsl:text>,
|
---|
| 1922 | </xsl:text>
|
---|
| 1923 | <xsl:value-of select="$methodindent"/>
|
---|
| 1924 | </xsl:if>
|
---|
| 1925 | </xsl:if>
|
---|
[45491] | 1926 | <xsl:for-each select="param">
|
---|
[53865] | 1927 | <xsl:apply-templates select="@type" mode="paramvalconversionusingtmp">
|
---|
[45491] | 1928 | <xsl:with-param name="dir" select="@dir"/>
|
---|
| 1929 | </xsl:apply-templates>
|
---|
| 1930 | <xsl:if test="not(position()=last())">
|
---|
| 1931 | <xsl:text>,
|
---|
[55961] | 1932 | </xsl:text>
|
---|
[45491] | 1933 | <xsl:value-of select="$methodindent"/>
|
---|
| 1934 | </xsl:if>
|
---|
| 1935 | </xsl:for-each>
|
---|
| 1936 | <xsl:text>);
|
---|
[55961] | 1937 | }
|
---|
[53865] | 1938 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1939 | </xsl:text>
|
---|
| 1940 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1941 | <xsl:text>this, hrc, 0 /*normal*/</xsl:text>
|
---|
| 1942 | <xsl:for-each select="param">
|
---|
| 1943 | <xsl:text>, </xsl:text>
|
---|
[53905] | 1944 | <xsl:call-template name="emitDTraceParamValue">
|
---|
[53865] | 1945 | <xsl:with-param name="dir" select="@dir"/>
|
---|
[53905] | 1946 | </xsl:call-template>
|
---|
[53865] | 1947 | </xsl:for-each>
|
---|
| 1948 | <xsl:text>);
|
---|
| 1949 | #endif
|
---|
[45491] | 1950 | }
|
---|
| 1951 | catch (HRESULT hrc2)
|
---|
| 1952 | {
|
---|
| 1953 | hrc = hrc2;
|
---|
[53865] | 1954 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1955 | </xsl:text>
|
---|
| 1956 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1957 | <xsl:text>this, hrc, 1 /*hrc exception*/</xsl:text>
|
---|
| 1958 | <xsl:for-each select="param">
|
---|
| 1959 | <xsl:text>, </xsl:text>
|
---|
[53905] | 1960 | <xsl:call-template name="emitDTraceParamValNoTmp"/>
|
---|
[53865] | 1961 | </xsl:for-each>
|
---|
| 1962 | <xsl:text>);
|
---|
| 1963 | #endif
|
---|
[45491] | 1964 | }
|
---|
| 1965 | catch (...)
|
---|
| 1966 | {
|
---|
| 1967 | hrc = VirtualBoxBase::handleUnexpectedExceptions(this, RT_SRC_POS);
|
---|
[53865] | 1968 | #ifdef VBOX_WITH_DTRACE_R3_MAIN
|
---|
| 1969 | </xsl:text>
|
---|
| 1970 | <xsl:value-of select="translate(concat('VBOXAPI_', $dtracetopclass, '_', $dtracemethodname, substring($dtracenamehack, 2), '_RETURN('), $G_lowerCase, $G_upperCase)"/>
|
---|
| 1971 | <xsl:text>this, hrc, 9 /*unhandled exception*/</xsl:text>
|
---|
| 1972 | <xsl:for-each select="param">
|
---|
| 1973 | <xsl:text>, </xsl:text>
|
---|
[53905] | 1974 | <xsl:call-template name="emitDTraceParamValNoTmp"/>
|
---|
[53865] | 1975 | </xsl:for-each>
|
---|
| 1976 | <xsl:text>);
|
---|
| 1977 | #endif
|
---|
[45491] | 1978 | }
|
---|
| 1979 |
|
---|
| 1980 | LogRelFlow(("{%p} %s: leave</xsl:text>
|
---|
| 1981 | <xsl:for-each select="param">
|
---|
| 1982 | <xsl:if test="@dir!='in'">
|
---|
| 1983 | <xsl:text> </xsl:text>
|
---|
| 1984 | <xsl:apply-templates select="@type" mode="logparamtext">
|
---|
| 1985 | <xsl:with-param name="dir" select="@dir"/>
|
---|
[50751] | 1986 | <xsl:with-param name="isref" select="''"/>
|
---|
[45491] | 1987 | </xsl:apply-templates>
|
---|
| 1988 | </xsl:if>
|
---|
| 1989 | </xsl:for-each>
|
---|
| 1990 | <xsl:text> hrc=%Rhrc\n", this</xsl:text>
|
---|
| 1991 | <xsl:value-of select="concat(', "', $topclass, '::', @name, '"')"/>
|
---|
| 1992 | <xsl:for-each select="param">
|
---|
| 1993 | <xsl:if test="@dir!='in'">
|
---|
| 1994 | <xsl:text>, </xsl:text>
|
---|
| 1995 | <xsl:apply-templates select="@type" mode="logparamval">
|
---|
| 1996 | <xsl:with-param name="dir" select="@dir"/>
|
---|
[50751] | 1997 | <xsl:with-param name="isref" select="''"/>
|
---|
[45491] | 1998 | </xsl:apply-templates>
|
---|
| 1999 | </xsl:if>
|
---|
| 2000 | </xsl:for-each>
|
---|
| 2001 | <xsl:text>, hrc));
|
---|
| 2002 | return hrc;
|
---|
| 2003 | }
|
---|
[52248] | 2004 | </xsl:text>
|
---|
[45491] | 2005 |
|
---|
[52248] | 2006 | <xsl:call-template name="emitTargetEnd">
|
---|
| 2007 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2008 | </xsl:call-template>
|
---|
| 2009 |
|
---|
| 2010 | <xsl:text>
|
---|
[45491] | 2011 | </xsl:text>
|
---|
| 2012 | </xsl:template>
|
---|
| 2013 |
|
---|
[53878] | 2014 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 2015 | Emits the DTrace probes for a method.
|
---|
| 2016 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2017 | <xsl:template match="method" mode="dtrace-probes">
|
---|
| 2018 | <xsl:param name="topclass"/>
|
---|
| 2019 | <xsl:param name="dtracetopclass"/>
|
---|
| 2020 | <xsl:param name="target"/>
|
---|
| 2021 |
|
---|
| 2022 | <xsl:variable name="dtracemethodname">
|
---|
| 2023 | <xsl:choose>
|
---|
| 2024 | <xsl:when test="@dtracename">
|
---|
| 2025 | <xsl:value-of select="@dtracename"/>
|
---|
| 2026 | </xsl:when>
|
---|
| 2027 | <xsl:otherwise>
|
---|
| 2028 | <xsl:value-of select="@name"/>
|
---|
| 2029 | </xsl:otherwise>
|
---|
| 2030 | </xsl:choose>
|
---|
| 2031 | </xsl:variable>
|
---|
| 2032 | <xsl:variable name="dtracenamehack"> <!-- Ugly hack to deal with Session::assignMachine and similar. -->
|
---|
| 2033 | <xsl:if test="name(..) = 'if'">
|
---|
| 2034 | <xsl:value-of select="concat('__', ../@target)"/>
|
---|
| 2035 | </xsl:if>
|
---|
| 2036 | </xsl:variable>
|
---|
| 2037 |
|
---|
| 2038 | <xsl:text> probe </xsl:text>
|
---|
| 2039 | <!-- <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__enter(struct ', $dtracetopclass, ' *a_pThis')"/> -->
|
---|
| 2040 | <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__enter(void *a_pThis')"/>
|
---|
| 2041 | <xsl:for-each select="param[@dir='in']">
|
---|
| 2042 | <xsl:text>, </xsl:text>
|
---|
| 2043 | <xsl:apply-templates select="@type" mode="dtraceparamdecl">
|
---|
| 2044 | <xsl:with-param name="dir" select="'@dir'"/>
|
---|
| 2045 | </xsl:apply-templates>
|
---|
| 2046 | </xsl:for-each>
|
---|
| 2047 | <xsl:text>);
|
---|
| 2048 | probe </xsl:text>
|
---|
| 2049 | <!-- <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, '__return(struct ', $dtracetopclass, ' *a_pThis')"/> -->
|
---|
| 2050 | <xsl:value-of select="concat($dtracetopclass, '__', $dtracemethodname, $dtracenamehack, '__return(void *a_pThis')"/>
|
---|
| 2051 | <xsl:text>, uint32_t a_hrc, int32_t enmWhy</xsl:text>
|
---|
| 2052 | <xsl:for-each select="param">
|
---|
| 2053 | <xsl:text>, </xsl:text>
|
---|
| 2054 | <xsl:apply-templates select="@type" mode="dtraceparamdecl">
|
---|
| 2055 | <xsl:with-param name="dir" select="'@dir'"/>
|
---|
| 2056 | </xsl:apply-templates>
|
---|
| 2057 | </xsl:for-each>
|
---|
| 2058 | <xsl:text>);
|
---|
| 2059 | </xsl:text>
|
---|
| 2060 |
|
---|
| 2061 | </xsl:template>
|
---|
| 2062 |
|
---|
| 2063 |
|
---|
[52248] | 2064 | <xsl:template name="emitIf">
|
---|
| 2065 | <xsl:param name="passmode"/>
|
---|
| 2066 | <xsl:param name="target"/>
|
---|
| 2067 | <xsl:param name="topclass"/>
|
---|
| 2068 | <xsl:param name="emitmode"/>
|
---|
[53865] | 2069 | <xsl:param name="dtracetopclass"/>
|
---|
[52248] | 2070 |
|
---|
| 2071 | <xsl:if test="($target = 'xpidl') or ($target = 'midl')">
|
---|
| 2072 | <xsl:choose>
|
---|
[53913] | 2073 | <xsl:when test="$passmode='public'">
|
---|
[52248] | 2074 | <xsl:choose>
|
---|
[53913] | 2075 | <xsl:when test="$emitmode='method'">
|
---|
| 2076 | <xsl:apply-templates select="method" mode="public">
|
---|
| 2077 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2078 | </xsl:apply-templates>
|
---|
[52248] | 2079 | </xsl:when>
|
---|
[53913] | 2080 | <xsl:when test="$emitmode='attribute'">
|
---|
| 2081 | <xsl:apply-templates select="attribute" mode="public">
|
---|
| 2082 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2083 | </xsl:apply-templates>
|
---|
[52248] | 2084 | </xsl:when>
|
---|
[53913] | 2085 | <xsl:otherwise/>
|
---|
| 2086 | </xsl:choose>
|
---|
| 2087 | </xsl:when>
|
---|
| 2088 | <xsl:when test="$passmode='wrapped'">
|
---|
| 2089 | <xsl:choose>
|
---|
| 2090 | <xsl:when test="$emitmode='method'">
|
---|
| 2091 | <xsl:apply-templates select="method" mode="wrapped">
|
---|
| 2092 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2093 | </xsl:apply-templates>
|
---|
[52248] | 2094 | </xsl:when>
|
---|
[53913] | 2095 | <xsl:when test="$emitmode='attribute'">
|
---|
| 2096 | <xsl:apply-templates select="attribute" mode="wrapped">
|
---|
| 2097 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2098 | </xsl:apply-templates>
|
---|
[53878] | 2099 | </xsl:when>
|
---|
[52248] | 2100 | <xsl:otherwise/>
|
---|
| 2101 | </xsl:choose>
|
---|
| 2102 | </xsl:when>
|
---|
[53913] | 2103 | <xsl:when test="$passmode='code'">
|
---|
| 2104 | <xsl:choose>
|
---|
| 2105 | <xsl:when test="$emitmode='method'">
|
---|
| 2106 | <xsl:apply-templates select="method" mode="code">
|
---|
| 2107 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2108 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2109 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2110 | </xsl:apply-templates>
|
---|
| 2111 | </xsl:when>
|
---|
| 2112 | <xsl:when test="$emitmode='attribute'">
|
---|
| 2113 | <xsl:apply-templates select="attribute" mode="code">
|
---|
| 2114 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2115 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2116 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2117 | </xsl:apply-templates>
|
---|
| 2118 | </xsl:when>
|
---|
| 2119 | <xsl:otherwise/>
|
---|
| 2120 | </xsl:choose>
|
---|
| 2121 | </xsl:when>
|
---|
| 2122 | <xsl:when test="$passmode = 'dtrace-probes'">
|
---|
| 2123 | <xsl:choose>
|
---|
| 2124 | <xsl:when test="$emitmode = 'method'">
|
---|
| 2125 | <xsl:apply-templates select="method" mode="dtrace-probes">
|
---|
| 2126 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2127 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2128 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2129 | </xsl:apply-templates>
|
---|
| 2130 | </xsl:when>
|
---|
| 2131 | <xsl:when test="$emitmode = 'attribute'">
|
---|
| 2132 | <xsl:apply-templates select="attribute" mode="dtrace-probes">
|
---|
| 2133 | <xsl:with-param name="target" select="$target"/>
|
---|
| 2134 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2135 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2136 | </xsl:apply-templates>
|
---|
| 2137 | </xsl:when>
|
---|
| 2138 | <xsl:otherwise/>
|
---|
| 2139 | </xsl:choose>
|
---|
| 2140 | </xsl:when>
|
---|
| 2141 | <xsl:otherwise/>
|
---|
[52248] | 2142 | </xsl:choose>
|
---|
| 2143 | </xsl:if>
|
---|
| 2144 | </xsl:template>
|
---|
| 2145 |
|
---|
| 2146 | <xsl:template match="if" mode="public">
|
---|
| 2147 | <xsl:param name="emitmode"/>
|
---|
| 2148 |
|
---|
| 2149 | <xsl:call-template name="emitIf">
|
---|
| 2150 | <xsl:with-param name="passmode" select="'public'"/>
|
---|
| 2151 | <xsl:with-param name="target" select="@target"/>
|
---|
| 2152 | <xsl:with-param name="emitmode" select="$emitmode"/>
|
---|
| 2153 | </xsl:call-template>
|
---|
| 2154 | </xsl:template>
|
---|
| 2155 |
|
---|
| 2156 | <xsl:template match="if" mode="wrapped">
|
---|
| 2157 | <xsl:param name="emitmode"/>
|
---|
| 2158 |
|
---|
| 2159 | <xsl:call-template name="emitIf">
|
---|
| 2160 | <xsl:with-param name="passmode" select="'wrapped'"/>
|
---|
| 2161 | <xsl:with-param name="target" select="@target"/>
|
---|
| 2162 | <xsl:with-param name="emitmode" select="$emitmode"/>
|
---|
| 2163 | </xsl:call-template>
|
---|
| 2164 | </xsl:template>
|
---|
| 2165 |
|
---|
| 2166 | <xsl:template match="if" mode="code">
|
---|
| 2167 | <xsl:param name="topclass"/>
|
---|
| 2168 | <xsl:param name="emitmode"/>
|
---|
[53865] | 2169 | <xsl:param name="dtracetopclass"/>
|
---|
[52248] | 2170 |
|
---|
| 2171 | <xsl:call-template name="emitIf">
|
---|
| 2172 | <xsl:with-param name="passmode" select="'code'"/>
|
---|
| 2173 | <xsl:with-param name="target" select="@target"/>
|
---|
| 2174 | <xsl:with-param name="emitmode" select="$emitmode"/>
|
---|
| 2175 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
[53865] | 2176 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
[52248] | 2177 | </xsl:call-template>
|
---|
| 2178 | </xsl:template>
|
---|
| 2179 |
|
---|
[53878] | 2180 | <xsl:template match="if" mode="dtrace-probes">
|
---|
| 2181 | <xsl:param name="topclass"/>
|
---|
| 2182 | <xsl:param name="emitmode"/>
|
---|
| 2183 | <xsl:param name="dtracetopclass"/>
|
---|
| 2184 |
|
---|
| 2185 | <xsl:call-template name="emitIf">
|
---|
| 2186 | <xsl:with-param name="passmode" select="'dtrace-probes'"/>
|
---|
| 2187 | <xsl:with-param name="target" select="@target"/>
|
---|
| 2188 | <xsl:with-param name="emitmode" select="$emitmode"/>
|
---|
| 2189 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2190 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2191 | </xsl:call-template>
|
---|
| 2192 | </xsl:template>
|
---|
| 2193 |
|
---|
[45491] | 2194 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 2195 | emit all methods of the current interface
|
---|
[45491] | 2196 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2197 | <xsl:template name="emitMethods">
|
---|
| 2198 | <xsl:param name="topclass"/>
|
---|
| 2199 | <xsl:param name="pmode"/>
|
---|
[53865] | 2200 | <xsl:param name="dtracetopclass"/>
|
---|
[45491] | 2201 |
|
---|
[56396] | 2202 | <xsl:variable name="name" select="@name"/>
|
---|
[45491] | 2203 | <!-- first recurse to emit all base interfaces -->
|
---|
[53903] | 2204 | <xsl:variable name="extends" select="@extends"/>
|
---|
[50183] | 2205 | <xsl:if test="$extends and not($extends='$unknown') and not($extends='$errorinfo')">
|
---|
[53903] | 2206 | <xsl:for-each select="key('G_keyInterfacesByName', $extends)">
|
---|
| 2207 | <xsl:call-template name="emitMethods">
|
---|
| 2208 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2209 | <xsl:with-param name="pmode" select="$pmode"/>
|
---|
| 2210 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2211 | </xsl:call-template>
|
---|
| 2212 | </xsl:for-each>
|
---|
[45491] | 2213 | </xsl:if>
|
---|
| 2214 |
|
---|
| 2215 | <xsl:choose>
|
---|
| 2216 | <xsl:when test="$pmode='code'">
|
---|
| 2217 | <xsl:text>//
|
---|
| 2218 | </xsl:text>
|
---|
[56396] | 2219 | <xsl:value-of select="concat('// ', $name, ' methods')"/>
|
---|
[45491] | 2220 | <xsl:text>
|
---|
| 2221 | //
|
---|
| 2222 |
|
---|
| 2223 | </xsl:text>
|
---|
| 2224 | </xsl:when>
|
---|
[53878] | 2225 | <xsl:when test="$pmode='dtrace-probes'"/>
|
---|
[45491] | 2226 | <xsl:otherwise>
|
---|
[79737] | 2227 | <xsl:value-of select="concat($G_sNewLine, ' /** @name ', translate(substring($pmode, 1, 1), $G_lowerCase, $G_upperCase), substring($pmode,2), ' ', $name, ' methods', $G_sNewLine)"/>
|
---|
| 2228 | <xsl:text> * @{ */
|
---|
| 2229 | </xsl:text>
|
---|
[45491] | 2230 | </xsl:otherwise>
|
---|
| 2231 | </xsl:choose>
|
---|
| 2232 | <xsl:choose>
|
---|
| 2233 | <xsl:when test="$pmode='public'">
|
---|
[53903] | 2234 | <xsl:apply-templates select="./method | ./if" mode="public">
|
---|
[52248] | 2235 | <xsl:with-param name="emitmode" select="'method'"/>
|
---|
| 2236 | </xsl:apply-templates>
|
---|
[56396] | 2237 | <xsl:variable name="reservedMethods" select="@reservedMethods"/>
|
---|
| 2238 | <xsl:if test="$reservedMethods > 0">
|
---|
| 2239 | <!-- tricky way to do a "for" loop without recursion -->
|
---|
| 2240 | <xsl:for-each select="(//*)[position() <= $reservedMethods]">
|
---|
| 2241 | <xsl:text> STDMETHOD(InternalAndReservedMethod</xsl:text>
|
---|
| 2242 | <xsl:value-of select="concat(position(), $name)"/>
|
---|
[103977] | 2243 | <xsl:text>)() RT_OVERRIDE;
</xsl:text>
|
---|
[56396] | 2244 | </xsl:for-each>
|
---|
| 2245 | </xsl:if>
|
---|
[45491] | 2246 | </xsl:when>
|
---|
| 2247 | <xsl:when test="$pmode='wrapped'">
|
---|
[53903] | 2248 | <xsl:apply-templates select="./method | ./if" mode="wrapped">
|
---|
[52248] | 2249 | <xsl:with-param name="emitmode" select="'method'"/>
|
---|
| 2250 | </xsl:apply-templates>
|
---|
[45491] | 2251 | </xsl:when>
|
---|
| 2252 | <xsl:when test="$pmode='code'">
|
---|
[53903] | 2253 | <xsl:apply-templates select="./method | ./if" mode="code">
|
---|
[45491] | 2254 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
[53865] | 2255 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
[52248] | 2256 | <xsl:with-param name="emitmode" select="'method'"/>
|
---|
[45491] | 2257 | </xsl:apply-templates>
|
---|
[56396] | 2258 | <xsl:variable name="reservedMethods" select="@reservedMethods"/>
|
---|
| 2259 | <xsl:if test="$reservedMethods > 0">
|
---|
| 2260 | <!-- tricky way to do a "for" loop without recursion -->
|
---|
| 2261 | <xsl:for-each select="(//*)[position() <= $reservedMethods]">
|
---|
| 2262 | <xsl:value-of select="concat('STDMETHODIMP ', $topclass, 'Wrap::InternalAndReservedMethod', position(), $name, '()
')"/>
|
---|
| 2263 | <xsl:text>{
|
---|
| 2264 | return E_NOTIMPL;
|
---|
| 2265 | }
|
---|
| 2266 |
|
---|
| 2267 | </xsl:text>
|
---|
| 2268 | </xsl:for-each>
|
---|
| 2269 | </xsl:if>
|
---|
[45491] | 2270 | </xsl:when>
|
---|
[53878] | 2271 | <xsl:when test="$pmode='dtrace-probes'">
|
---|
[53903] | 2272 | <xsl:apply-templates select="./method | ./if" mode="dtrace-probes">
|
---|
[53878] | 2273 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2274 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2275 | <xsl:with-param name="emitmode" select="'method'"/>
|
---|
| 2276 | </xsl:apply-templates>
|
---|
| 2277 | </xsl:when>
|
---|
[45491] | 2278 | <xsl:otherwise/>
|
---|
| 2279 | </xsl:choose>
|
---|
[79737] | 2280 |
|
---|
| 2281 | <!-- close doxygen @name -->
|
---|
| 2282 | <xsl:if test="($pmode != 'code') and ($pmode != 'dtrace-probes')" >
|
---|
| 2283 | <xsl:text> /** @} */
|
---|
| 2284 | </xsl:text>
|
---|
| 2285 | </xsl:if>
|
---|
[45491] | 2286 | </xsl:template>
|
---|
| 2287 |
|
---|
| 2288 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 2289 | emit all attributes and methods declarations of the current interface
|
---|
[45491] | 2290 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2291 | <xsl:template name="emitInterfaceDecls">
|
---|
| 2292 | <xsl:param name="pmode"/>
|
---|
| 2293 |
|
---|
| 2294 | <!-- attributes -->
|
---|
| 2295 | <xsl:call-template name="emitAttributes">
|
---|
| 2296 | <xsl:with-param name="pmode" select="$pmode"/>
|
---|
| 2297 | </xsl:call-template>
|
---|
| 2298 |
|
---|
| 2299 | <!-- methods -->
|
---|
| 2300 | <xsl:call-template name="emitMethods">
|
---|
| 2301 | <xsl:with-param name="pmode" select="$pmode"/>
|
---|
| 2302 | </xsl:call-template>
|
---|
| 2303 | </xsl:template>
|
---|
| 2304 |
|
---|
| 2305 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 2306 | emit auxiliary method declarations of the current interface
|
---|
[45491] | 2307 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2308 | <xsl:template name="emitAuxMethodDecls">
|
---|
| 2309 | <!-- currently nothing, maybe later some generic FinalConstruct/... helper declaration for ComObjPtr -->
|
---|
| 2310 | </xsl:template>
|
---|
| 2311 |
|
---|
| 2312 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 2313 | emit the header file of the current interface
|
---|
[45491] | 2314 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2315 | <xsl:template name="emitHeader">
|
---|
[51426] | 2316 | <xsl:param name="addinterfaces"/>
|
---|
[45491] | 2317 |
|
---|
| 2318 | <xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.h')"/>
|
---|
| 2319 |
|
---|
[53903] | 2320 | <xsl:apply-templates select="." mode="startfile">
|
---|
[53879] | 2321 | <xsl:with-param name="file" select="$filename"/>
|
---|
| 2322 | </xsl:apply-templates>
|
---|
| 2323 | <xsl:call-template name="fileheader">
|
---|
| 2324 | <xsl:with-param name="name" select="$filename"/>
|
---|
| 2325 | <xsl:with-param name="class" select="substring(@name, 2)"/>
|
---|
| 2326 | <xsl:with-param name="type" select="'header'"/>
|
---|
| 2327 | </xsl:call-template>
|
---|
[53903] | 2328 | <xsl:apply-templates select="." mode="classheader">
|
---|
[53879] | 2329 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
| 2330 | </xsl:apply-templates>
|
---|
[45491] | 2331 |
|
---|
[53879] | 2332 | <!-- interface attributes/methods (public) -->
|
---|
| 2333 | <xsl:call-template name="emitInterfaceDecls">
|
---|
| 2334 | <xsl:with-param name="pmode" select="'public'"/>
|
---|
| 2335 | </xsl:call-template>
|
---|
[45491] | 2336 |
|
---|
[53879] | 2337 | <xsl:for-each select="exsl:node-set($addinterfaces)/token">
|
---|
[53903] | 2338 | <!-- This is super tricky, as the for-each switches to the node set,
|
---|
| 2339 | which means the normal document isn't available any more. We get
|
---|
| 2340 | the data we need, uses a for-each to switch document and then a
|
---|
| 2341 | key() to look up the interface by name. -->
|
---|
[53879] | 2342 | <xsl:variable name="addifname">
|
---|
| 2343 | <xsl:value-of select="string(.)"/>
|
---|
| 2344 | </xsl:variable>
|
---|
[53903] | 2345 | <xsl:for-each select="$G_root">
|
---|
| 2346 | <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
|
---|
| 2347 | <xsl:call-template name="emitInterfaceDecls">
|
---|
| 2348 | <xsl:with-param name="pmode" select="'public'"/>
|
---|
| 2349 | </xsl:call-template>
|
---|
| 2350 | </xsl:for-each>
|
---|
| 2351 | </xsl:for-each>
|
---|
[53879] | 2352 | </xsl:for-each>
|
---|
[51426] | 2353 |
|
---|
[53879] | 2354 | <!-- auxiliary methods (public) -->
|
---|
[53903] | 2355 | <xsl:call-template name="emitAuxMethodDecls"/>
|
---|
[45491] | 2356 |
|
---|
[53879] | 2357 | <!-- switch to private -->
|
---|
| 2358 | <xsl:text>
|
---|
[45491] | 2359 | private:</xsl:text>
|
---|
| 2360 |
|
---|
[53879] | 2361 | <!-- wrapped interface attributes/methods (private) -->
|
---|
| 2362 | <xsl:call-template name="emitInterfaceDecls">
|
---|
| 2363 | <xsl:with-param name="pmode" select="'wrapped'"/>
|
---|
| 2364 | </xsl:call-template>
|
---|
[45491] | 2365 |
|
---|
[53879] | 2366 | <xsl:for-each select="exsl:node-set($addinterfaces)/token">
|
---|
[53903] | 2367 | <!-- This is super tricky, as the for-each switches to the node set,
|
---|
| 2368 | which means the normal document isn't available any more. We get
|
---|
| 2369 | the data we need, uses a for-each to switch document and then a
|
---|
| 2370 | key() to look up the interface by name. -->
|
---|
[53879] | 2371 | <xsl:variable name="addifname">
|
---|
| 2372 | <xsl:value-of select="string(.)"/>
|
---|
| 2373 | </xsl:variable>
|
---|
[53903] | 2374 | <xsl:for-each select="$G_root">
|
---|
| 2375 | <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
|
---|
| 2376 | <xsl:call-template name="emitInterfaceDecls">
|
---|
| 2377 | <xsl:with-param name="pmode" select="'wrapped'"/>
|
---|
| 2378 | </xsl:call-template>
|
---|
| 2379 | </xsl:for-each>
|
---|
| 2380 | </xsl:for-each>
|
---|
[53879] | 2381 | </xsl:for-each>
|
---|
[51426] | 2382 |
|
---|
[53903] | 2383 | <xsl:apply-templates select="." mode="classfooter"/>
|
---|
| 2384 | <xsl:apply-templates select="." mode="endfile">
|
---|
[53879] | 2385 | <xsl:with-param name="file" select="$filename"/>
|
---|
| 2386 | </xsl:apply-templates>
|
---|
[45491] | 2387 | </xsl:template>
|
---|
| 2388 |
|
---|
| 2389 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 2390 | emit all attributes and methods definitions (pmode=code) or probes (pmode=dtrace-probes) of the current interface
|
---|
[45491] | 2391 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2392 | <xsl:template name="emitInterfaceDefs">
|
---|
[51426] | 2393 | <xsl:param name="addinterfaces"/>
|
---|
[53878] | 2394 | <xsl:param name="pmode" select="'code'"/>
|
---|
[45491] | 2395 |
|
---|
[53903] | 2396 | <xsl:variable name="topclass" select="substring(@name, 2)"/>
|
---|
[53865] | 2397 | <xsl:variable name="dtracetopclass">
|
---|
| 2398 | <xsl:choose>
|
---|
[53903] | 2399 | <xsl:when test="@dtracename"><xsl:value-of select="@dtracename"/></xsl:when>
|
---|
| 2400 | <xsl:otherwise><xsl:value-of select="$topclass"/></xsl:otherwise>
|
---|
[53865] | 2401 | </xsl:choose>
|
---|
| 2402 | </xsl:variable>
|
---|
| 2403 |
|
---|
[53903] | 2404 | <xsl:if test="$pmode = 'code'">
|
---|
| 2405 | <xsl:value-of select="concat('DEFINE_EMPTY_CTOR_DTOR(', $topclass, 'Wrap)', $G_sNewLine, $G_sNewLine)"/>
|
---|
| 2406 | </xsl:if>
|
---|
| 2407 |
|
---|
[45491] | 2408 | <!-- attributes -->
|
---|
| 2409 | <xsl:call-template name="emitAttributes">
|
---|
[53903] | 2410 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
[53865] | 2411 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
[53878] | 2412 | <xsl:with-param name="pmode" select="$pmode"/>
|
---|
[45491] | 2413 | </xsl:call-template>
|
---|
| 2414 |
|
---|
[51426] | 2415 | <xsl:for-each select="exsl:node-set($addinterfaces)/token">
|
---|
| 2416 | <!-- This is super tricky, as the for-each switches to the node set,
|
---|
[53903] | 2417 | which means the normal document isn't available any more. We get
|
---|
| 2418 | the data we need, uses a for-each to switch document and then a
|
---|
| 2419 | key() to look up the interface by name. -->
|
---|
[51426] | 2420 | <xsl:variable name="addifname">
|
---|
| 2421 | <xsl:value-of select="string(.)"/>
|
---|
| 2422 | </xsl:variable>
|
---|
[53903] | 2423 | <xsl:for-each select="$G_root">
|
---|
| 2424 | <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
|
---|
| 2425 | <xsl:call-template name="emitAttributes">
|
---|
| 2426 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2427 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2428 | <xsl:with-param name="pmode" select="$pmode"/>
|
---|
| 2429 | </xsl:call-template>
|
---|
| 2430 | </xsl:for-each>
|
---|
| 2431 | </xsl:for-each>
|
---|
[51426] | 2432 | </xsl:for-each>
|
---|
| 2433 |
|
---|
[45491] | 2434 | <!-- methods -->
|
---|
[53915] | 2435 | <xsl:call-template name="xsltprocNewlineOutputHack"/>
|
---|
[45491] | 2436 | <xsl:call-template name="emitMethods">
|
---|
[53903] | 2437 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
[53865] | 2438 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
[53878] | 2439 | <xsl:with-param name="pmode" select="$pmode"/>
|
---|
[45491] | 2440 | </xsl:call-template>
|
---|
[51426] | 2441 |
|
---|
| 2442 | <xsl:for-each select="exsl:node-set($addinterfaces)/token">
|
---|
| 2443 | <!-- This is super tricky, as the for-each switches to the node set,
|
---|
[53903] | 2444 | which means the normal document isn't available any more. We get
|
---|
| 2445 | the data we need, uses a for-each to switch document and then a
|
---|
| 2446 | key() to look up the interface by name. -->
|
---|
[51426] | 2447 | <xsl:variable name="addifname">
|
---|
| 2448 | <xsl:value-of select="string(.)"/>
|
---|
| 2449 | </xsl:variable>
|
---|
[53903] | 2450 | <xsl:for-each select="$G_root">
|
---|
| 2451 | <xsl:for-each select="key('G_keyInterfacesByName', $addifname)">
|
---|
| 2452 | <xsl:call-template name="emitMethods">
|
---|
| 2453 | <xsl:with-param name="topclass" select="$topclass"/>
|
---|
| 2454 | <xsl:with-param name="dtracetopclass" select="$dtracetopclass"/>
|
---|
| 2455 | <xsl:with-param name="pmode" select="$pmode"/>
|
---|
| 2456 | </xsl:call-template>
|
---|
| 2457 | </xsl:for-each>
|
---|
| 2458 | </xsl:for-each>
|
---|
[51426] | 2459 | </xsl:for-each>
|
---|
[45491] | 2460 | </xsl:template>
|
---|
| 2461 |
|
---|
| 2462 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 2463 | emit auxiliary method declarations of the current interface
|
---|
[45491] | 2464 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2465 | <xsl:template name="emitAuxMethodDefs">
|
---|
[53878] | 2466 | <xsl:param name="pmode" select="'code'"/>
|
---|
[45491] | 2467 | <!-- currently nothing, maybe later some generic FinalConstruct/... implementation -->
|
---|
| 2468 | </xsl:template>
|
---|
| 2469 |
|
---|
| 2470 |
|
---|
| 2471 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 2472 | emit the code file of the current interface
|
---|
[45491] | 2473 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2474 | <xsl:template name="emitCode">
|
---|
[51426] | 2475 | <xsl:param name="addinterfaces"/>
|
---|
[45491] | 2476 |
|
---|
| 2477 | <xsl:variable name="filename" select="concat(substring(@name, 2), 'Wrap.cpp')"/>
|
---|
| 2478 |
|
---|
[53903] | 2479 | <xsl:apply-templates select="." mode="startfile">
|
---|
[53879] | 2480 | <xsl:with-param name="file" select="$filename"/>
|
---|
| 2481 | </xsl:apply-templates>
|
---|
| 2482 | <xsl:call-template name="fileheader">
|
---|
| 2483 | <xsl:with-param name="name" select="$filename"/>
|
---|
| 2484 | <xsl:with-param name="class" select="substring(@name, 2)"/>
|
---|
| 2485 | <xsl:with-param name="type" select="'code'"/>
|
---|
| 2486 | </xsl:call-template>
|
---|
[53903] | 2487 | <xsl:apply-templates select="." mode="codeheader">
|
---|
[53879] | 2488 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
| 2489 | </xsl:apply-templates>
|
---|
[45491] | 2490 |
|
---|
[53879] | 2491 | <!-- interface attributes/methods (public) -->
|
---|
| 2492 | <xsl:call-template name="emitInterfaceDefs">
|
---|
| 2493 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
| 2494 | </xsl:call-template>
|
---|
[45491] | 2495 |
|
---|
[53879] | 2496 | <!-- auxiliary methods (public) -->
|
---|
[53903] | 2497 | <xsl:call-template name="emitAuxMethodDefs"/>
|
---|
[45491] | 2498 |
|
---|
[53903] | 2499 | <xsl:apply-templates select="." mode="codefooter">
|
---|
[53879] | 2500 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
| 2501 | </xsl:apply-templates>
|
---|
[53903] | 2502 | <xsl:apply-templates select="." mode="endfile">
|
---|
[53879] | 2503 | <xsl:with-param name="file" select="$filename"/>
|
---|
| 2504 | </xsl:apply-templates>
|
---|
[45491] | 2505 | </xsl:template>
|
---|
| 2506 |
|
---|
[53878] | 2507 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[53903] | 2508 | emit the DTrace probes for the current interface
|
---|
[53878] | 2509 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2510 | <xsl:template name="emitDTraceProbes">
|
---|
| 2511 | <xsl:param name="addinterfaces"/>
|
---|
[45491] | 2512 |
|
---|
[53878] | 2513 | <!-- interface attributes/methods (public) -->
|
---|
| 2514 | <xsl:call-template name="emitInterfaceDefs">
|
---|
| 2515 | <xsl:with-param name="addinterfaces" select="$addinterfaces"/>
|
---|
| 2516 | <xsl:with-param name="pmode">dtrace-probes</xsl:with-param>
|
---|
| 2517 | </xsl:call-template>
|
---|
| 2518 |
|
---|
| 2519 | <!-- auxiliary methods (public) -->
|
---|
| 2520 | <xsl:call-template name="emitAuxMethodDefs">
|
---|
| 2521 | <xsl:with-param name="pmode">dtrace-probes</xsl:with-param>
|
---|
| 2522 | </xsl:call-template>
|
---|
| 2523 |
|
---|
| 2524 | </xsl:template>
|
---|
| 2525 |
|
---|
[45491] | 2526 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 2527 | wildcard match, ignore everything which has no explicit match
|
---|
| 2528 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2529 |
|
---|
| 2530 | <xsl:template match="*"/>
|
---|
| 2531 |
|
---|
| 2532 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 2533 | ignore all if tags except those for XPIDL or MIDL target
|
---|
| 2534 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2535 |
|
---|
| 2536 | <xsl:template match="if">
|
---|
| 2537 | <xsl:if test="(@target = 'xpidl') or (@target = 'midl')">
|
---|
| 2538 | <xsl:apply-templates/>
|
---|
| 2539 | </xsl:if>
|
---|
| 2540 | </xsl:template>
|
---|
| 2541 |
|
---|
| 2542 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[50751] | 2543 | interface match
|
---|
[45491] | 2544 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2545 |
|
---|
| 2546 | <xsl:template match="interface">
|
---|
[79049] | 2547 | <xsl:if test="not(@internal='yes') and not(@autogen='VBoxEvent') and not(@supportsErrorInfo='no')">
|
---|
[53903] | 2548 | <xsl:call-template name="emitInterface"/>
|
---|
[45491] | 2549 | </xsl:if>
|
---|
| 2550 | </xsl:template>
|
---|
| 2551 |
|
---|
| 2552 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[66274] | 2553 | application match
|
---|
| 2554 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2555 |
|
---|
| 2556 | <xsl:template match="application">
|
---|
| 2557 | <xsl:apply-templates/>
|
---|
| 2558 | </xsl:template>
|
---|
| 2559 |
|
---|
| 2560 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
[45491] | 2561 | library match
|
---|
| 2562 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2563 |
|
---|
| 2564 | <xsl:template match="library">
|
---|
| 2565 | <xsl:apply-templates/>
|
---|
| 2566 | </xsl:template>
|
---|
| 2567 |
|
---|
| 2568 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 2569 | root match
|
---|
| 2570 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 2571 |
|
---|
| 2572 | <xsl:template match="/idl">
|
---|
| 2573 | <xsl:choose>
|
---|
[53878] | 2574 | <xsl:when test="$generating = 'headers'">
|
---|
| 2575 | <xsl:apply-templates/>
|
---|
| 2576 | </xsl:when>
|
---|
| 2577 | <xsl:when test="$generating = 'sources'">
|
---|
| 2578 | <xsl:apply-templates/>
|
---|
| 2579 | </xsl:when>
|
---|
| 2580 | <xsl:when test="$generating = 'dtrace-probes'">
|
---|
| 2581 | <xsl:apply-templates/>
|
---|
| 2582 | </xsl:when>
|
---|
[45491] | 2583 | <xsl:otherwise>
|
---|
[53878] | 2584 | <xsl:message terminate="yes">
|
---|
| 2585 | Unknown string parameter value: generating='<xsl:value-of select="$generating"/>'
|
---|
| 2586 | </xsl:message>
|
---|
[45491] | 2587 | </xsl:otherwise>
|
---|
| 2588 | </xsl:choose>
|
---|
| 2589 | </xsl:template>
|
---|
| 2590 |
|
---|
| 2591 | </xsl:stylesheet>
|
---|
| 2592 | <!-- vi: set tabstop=4 shiftwidth=4 expandtab: -->
|
---|