Changeset 50121 in vbox
- Timestamp:
- Jan 20, 2014 2:31:00 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 91665
- Location:
- trunk/src/VBox/Main
- Files:
-
- 2 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/Makefile.kmk
r49983 r50121 5 5 6 6 # 7 # Copyright (C) 2004-201 3Oracle Corporation7 # Copyright (C) 2004-2014 Oracle Corporation 8 8 # 9 9 # This file is part of VirtualBox Open Source Edition (OSE), as … … 115 115 $(VBOX_IDL_HEADER.XPCOM) \ 116 116 $(VBOX_IDL_TYPELIB.XPCOM) 117 118 INSTALLS += VBox-xpcom-bindings-lib 119 VBox-xpcom-bindings-lib_INST = $(INST_SDK)bindings/xpcom/lib/ 120 VBox-xpcom-bindings-lib_MODE = a+r,u+w 121 VBox-xpcom-bindings-lib_SOURCES = $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c 122 VBox-xpcom-bindings-lib_CLEAN = $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c 117 123 118 124 VBOX_MAIN_PREREQS += $(VBOX_IDL_TYPELIB.XPCOM) $(VBOX_IDL_HEADER.XPCOM) … … 824 830 glue/NativeEventQueue.cpp \ 825 831 glue/ErrorInfo.cpp \ 826 glue/errorprint.cpp 832 glue/errorprint.cpp \ 833 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c 827 834 VBoxCOM_INCS += \ 828 835 include … … 830 837 VBoxCOM_DEFS.x86 = _WIN32_WINNT=0x0500 831 838 VBoxCOM_DEFS.amd64 = _WIN32_WINNT=0x0510 832 VBoxCOM_SOURCES.win = \833 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c834 839 else # !win 835 840 VBoxCOM_SOURCES += \ … … 846 851 VBoxCOM-x86_TEMPLATE = VBoxMainLib-x86 847 852 VBoxCOM-x86_EXTENDS = VBoxCOM 848 VBoxCOM-x86_SOURCES.win = \849 $(VBoxCOM-x86_0_OUTDIR)/VirtualBox_i.c850 853 endif 851 854 … … 965 968 # Aliases for testing purposes. 966 969 ifdef VBOX_WITH_XPCOM 967 testidl: $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) 970 testidl: $(VBOX_IDL_FILE.XPCOM) $(VBOX_IDL_TYPELIB.XPCOM) $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c 968 971 testidlhdr: $(VBOX_IDL_HEADER.XPCOM) 969 972 else … … 973 976 974 977 978 ifdef VBOX_WITH_XPCOM 979 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c: $(VBOX_PATH_MAIN_SRC)/idl/xpidl_iid.xsl $(VBOX_XIDL_FILE) | $$(dir $$@) 980 $(call MSG_TOOL,xsltproc,VBoxSVC,$<,$@) 981 $(QUIET)$(VBOX_XSLTPROC) -o $@ $< $(VBOX_XIDL_FILE) 982 else 975 983 $(VBoxCOM_0_OUTDIR)/VirtualBox_i.c \ 976 984 + $(VBoxCOM_0_OUTDIR)/VirtualBox.h \ … … 998 1006 /I idl \ 999 1007 $(call VBOX_FN_MAKE_WIN_PATH,$<) 1008 endif 1000 1009 1001 1010 # -
trunk/src/VBox/Main/idl/xpidl.xsl
r44528 r50121 6 6 * from the generic interface definition expressed in XML. 7 7 8 Copyright (C) 2006-201 2Oracle Corporation8 Copyright (C) 2006-2014 Oracle Corporation 9 9 10 10 This file is part of VirtualBox Open Source Edition (OSE), as … … 103 103 #include "nsIException.idl" 104 104 105 %{C++106 /**107 * For escaping compound expression so they don't cause trouble when -pedantic108 * is used.109 * @internal110 */111 #if defined(__cplusplus) && defined(__GNUC__)112 # define VBOX_GCC_EXTENSION __extension__113 #endif114 #ifndef VBOX_GCC_EXTENSION115 # define VBOX_GCC_EXTENSION116 #endif117 %}118 105 </xsl:text> 119 106 <!-- native typedefs for the 'mod="ptr"' attribute --> … … 200 187 --> 201 188 <xsl:template match="library"> 189 <xsl:text>%{C++
</xsl:text> 190 <xsl:text>#ifndef VBOX_EXTERN_C
</xsl:text> 191 <xsl:text># ifdef __cplusplus
</xsl:text> 192 <xsl:text># define VBOX_EXTERN_C extern "C"
</xsl:text> 193 <xsl:text># else // !__cplusplus
</xsl:text> 194 <xsl:text># define VBOX_EXTERN_C extern
</xsl:text> 195 <xsl:text># endif // !__cplusplus
</xsl:text> 196 <xsl:text>#endif // !VBOX_EXTERN_C
</xsl:text> 202 197 <!-- result codes --> 203 <xsl:text> %{C++
</xsl:text>198 <xsl:text>// result codes declared in API spec
</xsl:text> 204 199 <xsl:for-each select="result"> 205 200 <xsl:apply-templates select="."/> … … 290 285 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 291 286 <xsl:value-of select="@name"/> 292 <xsl:text>_TO (base::)
 </xsl:text>287 <xsl:text>_TO (base::)

</xsl:text> 293 288 <!-- --> 289 <xsl:text>// for compatibility with Win32
</xsl:text> 290 <xsl:text>VBOX_EXTERN_C const nsID IID_</xsl:text> 291 <xsl:value-of select="@name"/> 292 <xsl:text>;
</xsl:text> 294 293 <xsl:text>%}

</xsl:text> 295 294 <!-- end --> … … 661 660 <!-- class and contract id --> 662 661 <xsl:text>%{C++
</xsl:text> 662 <xsl:text>// Definitions for module </xsl:text> 663 <xsl:value-of select="../@name"/> 664 <xsl:text>, class </xsl:text> 665 <xsl:value-of select="@name"/> 666 <xsl:text>:
</xsl:text> 663 667 <xsl:text>#define NS_</xsl:text> 664 668 <xsl:call-template name="uppercase"> … … 691 695 <!-- CLSID_xxx declarations for XPCOM, for compatibility with Win32 --> 692 696 <xsl:text>// for compatibility with Win32
</xsl:text> 693 <xsl:text>#define CLSID_</xsl:text> 694 <xsl:value-of select="@name"/> 695 <xsl:text> VBOX_GCC_EXTENSION (nsCID) NS_</xsl:text> 696 <xsl:call-template name="uppercase"> 697 <xsl:with-param name="str" select="@name"/> 698 </xsl:call-template> 699 <xsl:text>_CID
</xsl:text> 697 <xsl:text>VBOX_EXTERN_C const nsCID CLSID_</xsl:text> 698 <xsl:value-of select="@name"/> 699 <xsl:text>;
</xsl:text> 700 700 <xsl:text>%}

</xsl:text> 701 701 </xsl:template> -
trunk/src/VBox/Main/idl/xpidl_iid.xsl
r49984 r50121 3 3 4 4 <!-- 5 * A template to generate a XPCOM IDL compatible interface definition file5 * A template to generate a header file containing IIDs for XPCOM 6 6 * from the generic interface definition expressed in XML. 7 7 8 Copyright (C) 2006-201 2Oracle Corporation8 Copyright (C) 2006-2014 Oracle Corporation 9 9 10 10 This file is part of VirtualBox Open Source Edition (OSE), as … … 21 21 22 22 <xsl:strip-space elements="*"/> 23 24 25 <!--26 // helper definitions27 /////////////////////////////////////////////////////////////////////////////28 -->29 30 <!--31 * capitalizes the first letter32 -->33 <xsl:template name="capitalize">34 <xsl:param name="str" select="."/>35 <xsl:value-of select="36 concat(37 translate(substring($str,1,1),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ'),38 substring($str,2)39 )40 "/>41 </xsl:template>42 43 <!--44 * uncapitalizes the first letter only if the second one is not capital45 * otherwise leaves the string unchanged46 -->47 <xsl:template name="uncapitalize">48 <xsl:param name="str" select="."/>49 <xsl:choose>50 <xsl:when test="not(contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', substring($str,2,1)))">51 <xsl:value-of select="52 concat(53 translate(substring($str,1,1),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),54 substring($str,2)55 )56 "/>57 </xsl:when>58 <xsl:otherwise>59 <xsl:value-of select="string($str)"/>60 </xsl:otherwise>61 </xsl:choose>62 </xsl:template>63 64 <!--65 * translates the string to uppercase66 -->67 <xsl:template name="uppercase">68 <xsl:param name="str" select="."/>69 <xsl:value-of select="70 translate($str,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')71 "/>72 </xsl:template>73 74 23 75 24 <!-- … … 93 42 * DO NOT EDIT! This is a generated file. 94 43 * 95 * XPCOM IDL (XPIDL) definition for VirtualBox Main API (COM interfaces)44 * XPCOM C definitions for VirtualBox Main API (IIDs for COM interfaces) 96 45 * generated from XIDL (XML interface definition). 97 46 * 98 47 * Source : src/VBox/Main/idl/VirtualBox.xidl 99 * Generator : src/VBox/Main/idl/xpidl .xsl48 * Generator : src/VBox/Main/idl/xpidl_iid.xsl 100 49 */ 101 50 102 #include "nsISupports.idl" 103 #include "nsIException.idl" 51 #ifndef nsID_h__ 52 struct nsID 53 { 54 unsigned long m0; 55 unsigned short m1; 56 unsigned short m2; 57 unsigned char m3[8]; 58 }; 104 59 105 %{C++ 106 /** 107 * For escaping compound expression so they don't cause trouble when -pedantic 108 * is used. 109 * @internal 110 */ 111 #if defined(__cplusplus) && defined(__GNUC__) 112 # define VBOX_GCC_EXTENSION __extension__ 60 typedef struct nsID nsID; 61 typedef struct nsID nsIID; 62 typedef struct nsID nsCID; 63 #endif /* nsID_h__ */ 64 65 #ifdef __cplusplus 66 extern "C" { 113 67 #endif 114 #ifndef VBOX_GCC_EXTENSION115 # define VBOX_GCC_EXTENSION116 #endif117 %}118 </xsl:text>119 <!-- native typedefs for the 'mod="ptr"' attribute -->120 <xsl:text>121 [ptr] native booleanPtr (PRBool);122 [ptr] native octetPtr (PRUint8);123 [ptr] native shortPtr (PRInt16);124 [ptr] native ushortPtr (PRUint16);125 [ptr] native longPtr (PRInt32);126 [ptr] native llongPtr (PRInt64);127 [ptr] native ulongPtr (PRUint32);128 [ptr] native ullongPtr (PRUint64);129 <!-- charPtr is already defined in nsrootidl.idl -->130 <!-- [ptr] native charPtr (char) -->131 [ptr] native stringPtr (string);132 [ptr] native wcharPtr (wchar);133 [ptr] native wstringPtr (wstring);134 68 135 69 </xsl:text> 136 70 <xsl:apply-templates/> 71 <xsl:text> 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 </xsl:text> 137 78 </xsl:template> 138 79 … … 146 87 </xsl:if> 147 88 </xsl:template> 148 <xsl:template match="if" mode="forward">149 <xsl:if test="@target='xpidl'">150 <xsl:apply-templates mode="forward"/>151 </xsl:if>152 </xsl:template>153 <xsl:template match="if" mode="forwarder">154 <xsl:if test="@target='midl'">155 <xsl:apply-templates mode="forwarder"/>156 </xsl:if>157 </xsl:template>158 159 160 <!--161 * cpp_quote162 -->163 <xsl:template match="cpp">164 <xsl:if test="text()">165 <xsl:text>%{C++</xsl:text>166 <xsl:value-of select="text()"/>167 <xsl:text>
%}

</xsl:text>168 </xsl:if>169 <xsl:if test="not(text()) and @line">170 <xsl:text>%{C++
</xsl:text>171 <xsl:value-of select="@line"/>172 <xsl:text>
%}

</xsl:text>173 </xsl:if>174 </xsl:template>175 176 177 <!--178 * #if statement (@if attribute)179 * @note180 * xpidl doesn't support any preprocessor defines other than #include181 * (it just ignores them), so the generated IDL will most likely be182 * invalid. So for now we forbid using @if attributes183 -->184 <xsl:template match="@if" mode="begin">185 <xsl:message terminate="yes">186 @if attributes are not currently allowed because xpidl lacks187 support for #ifdef and stuff.188 </xsl:message>189 <xsl:text>#if </xsl:text>190 <xsl:value-of select="."/>191 <xsl:text>
</xsl:text>192 </xsl:template>193 <xsl:template match="@if" mode="end">194 <xsl:text>#endif
</xsl:text>195 </xsl:template>196 89 197 90 … … 200 93 --> 201 94 <xsl:template match="library"> 202 <!-- result codes --> 203 <xsl:text>%{C++
</xsl:text> 204 <xsl:for-each select="result"> 205 <xsl:apply-templates select="."/> 206 </xsl:for-each> 207 <xsl:text>%}

</xsl:text> 208 <!-- forward declarations --> 209 <xsl:apply-templates select="if | interface" mode="forward"/> 210 <xsl:text>
</xsl:text> 211 <!-- all enums go first --> 212 <xsl:apply-templates select="enum | if/enum"/> 213 <!-- everything else but result codes and enums --> 214 <xsl:apply-templates select="*[not(self::result or self::enum) and 215 not(self::if[result] or self::if[enum])]"/> 216 <!-- --> 217 </xsl:template> 218 219 220 <!-- 221 * result codes 222 --> 223 <xsl:template match="result"> 224 <xsl:value-of select="concat('#define ',@name,' ',@value)"/> 225 <xsl:text>
</xsl:text> 226 </xsl:template> 227 228 229 <!-- 230 * forward declarations 231 --> 232 <xsl:template match="interface" mode="forward"> 233 <xsl:text>interface </xsl:text> 234 <xsl:value-of select="@name"/> 235 <xsl:text>;
</xsl:text> 95 <xsl:apply-templates select="if | interface"/> 96 <xsl:apply-templates select="module"/> 236 97 </xsl:template> 237 98 … … 240 101 * interfaces 241 102 --> 242 <xsl:template match="interface">[ 243 uuid(<xsl:value-of select="@uuid"/>), 244 scriptable 245 ] 246 <xsl:text>interface </xsl:text> 103 <xsl:template match="interface"> 104 <xsl:text>const nsID IID_</xsl:text> 247 105 <xsl:value-of select="@name"/> 248 <xsl:text> : </xsl:text> 249 <xsl:choose> 250 <xsl:when test="@extends='$unknown'">nsISupports</xsl:when> 251 <xsl:when test="@extends='$dispatched'">nsISupports</xsl:when> 252 <xsl:when test="@extends='$errorinfo'">nsIException</xsl:when> 253 <xsl:otherwise><xsl:value-of select="@extends"/></xsl:otherwise> 254 </xsl:choose> 255 <xsl:text>
{
</xsl:text> 256 <!-- attributes (properties) --> 257 <xsl:apply-templates select="attribute"/> 258 <!-- methods --> 259 <xsl:apply-templates select="method"/> 260 <!-- 'if' enclosed elements, unsorted --> 261 <xsl:apply-templates select="if"/> 262 <!-- --> 263 <xsl:text>}; /* interface </xsl:text> 264 <xsl:value-of select="@name"/> 265 <xsl:text> */

</xsl:text> 266 <!-- Interface implementation forwarder macro --> 267 <xsl:text>/* Interface implementation forwarder macro */
</xsl:text> 268 <xsl:text>%{C++
</xsl:text> 269 <!-- 1) individual methods --> 270 <xsl:apply-templates select="attribute" mode="forwarder"/> 271 <xsl:apply-templates select="method" mode="forwarder"/> 272 <xsl:apply-templates select="if" mode="forwarder"/> 273 <!-- 2) COM_FORWARD_Interface_TO(smth) --> 274 <xsl:text>#define COM_FORWARD_</xsl:text> 275 <xsl:value-of select="@name"/> 276 <xsl:text>_TO(smth) NS_FORWARD_</xsl:text> 277 <xsl:call-template name="uppercase"> 278 <xsl:with-param name="str" select="@name"/> 279 </xsl:call-template> 280 <xsl:text> (smth)
</xsl:text> 281 <!-- 3) COM_FORWARD_Interface_TO_OBJ(obj) --> 282 <xsl:text>#define COM_FORWARD_</xsl:text> 283 <xsl:value-of select="@name"/> 284 <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text> 285 <xsl:value-of select="@name"/> 286 <xsl:text>_TO ((obj)->)
</xsl:text> 287 <!-- 4) COM_FORWARD_Interface_TO_BASE(base) --> 288 <xsl:text>#define COM_FORWARD_</xsl:text> 289 <xsl:value-of select="@name"/> 290 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 291 <xsl:value-of select="@name"/> 292 <xsl:text>_TO (base::)
</xsl:text> 293 <!-- --> 294 <xsl:text>%}

</xsl:text> 295 <!-- end --> 296 </xsl:template> 297 298 299 <!-- 300 * attributes 301 --> 302 <xsl:template match="interface//attribute"> 303 <xsl:apply-templates select="@if" mode="begin"/> 304 <xsl:if test="@mod='ptr'"> 305 <!-- attributes using native types must be non-scriptable --> 306 <xsl:text> [noscript]
</xsl:text> 307 </xsl:if> 308 <xsl:choose> 309 <!-- safearray pseudo attribute --> 310 <xsl:when test="@safearray='yes'"> 311 <!-- getter --> 312 <xsl:text> void get</xsl:text> 313 <xsl:call-template name="capitalize"> 314 <xsl:with-param name="str" select="@name"/> 315 </xsl:call-template> 316 <xsl:text> (
</xsl:text> 317 <!-- array size --> 318 <xsl:text> out unsigned long </xsl:text> 319 <xsl:value-of select="@name"/> 320 <xsl:text>Size,
</xsl:text> 321 <!-- array pointer --> 322 <xsl:text> [array, size_is(</xsl:text> 323 <xsl:value-of select="@name"/> 324 <xsl:text>Size), retval] out </xsl:text> 325 <xsl:apply-templates select="@type"/> 326 <xsl:text> </xsl:text> 327 <xsl:value-of select="@name"/> 328 <xsl:text>
 );
</xsl:text> 329 <!-- setter --> 330 <xsl:if test="not(@readonly='yes')"> 331 <xsl:text> void set</xsl:text> 332 <xsl:call-template name="capitalize"> 333 <xsl:with-param name="str" select="@name"/> 334 </xsl:call-template> 335 <xsl:text> (
</xsl:text> 336 <!-- array size --> 337 <xsl:text> in unsigned long </xsl:text> 338 <xsl:value-of select="@name"/> 339 <xsl:text>Size,
</xsl:text> 340 <!-- array pointer --> 341 <xsl:text> [array, size_is(</xsl:text> 342 <xsl:value-of select="@name"/> 343 <xsl:text>Size)] in </xsl:text> 344 <xsl:apply-templates select="@type"/> 345 <xsl:text> </xsl:text> 346 <xsl:value-of select="@name"/> 347 <xsl:text>
 );
</xsl:text> 348 </xsl:if> 349 </xsl:when> 350 <!-- normal attribute --> 351 <xsl:otherwise> 352 <xsl:text> </xsl:text> 353 <xsl:if test="@readonly='yes'"> 354 <xsl:text>readonly </xsl:text> 355 </xsl:if> 356 <xsl:text>attribute </xsl:text> 357 <xsl:apply-templates select="@type"/> 358 <xsl:text> </xsl:text> 359 <xsl:value-of select="@name"/> 360 <xsl:text>;
</xsl:text> 361 </xsl:otherwise> 362 </xsl:choose> 363 <xsl:apply-templates select="@if" mode="end"/> 364 <xsl:text>
</xsl:text> 365 </xsl:template> 366 367 <xsl:template match="interface//attribute" mode="forwarder"> 368 369 <xsl:variable name="parent" select="ancestor::interface"/> 370 371 <xsl:apply-templates select="@if" mode="begin"/> 372 373 <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO(smth) --> 374 <xsl:text>#define COM_FORWARD_</xsl:text> 375 <xsl:value-of select="$parent/@name"/> 376 <xsl:text>_GETTER_</xsl:text> 377 <xsl:call-template name="capitalize"> 378 <xsl:with-param name="str" select="@name"/> 379 </xsl:call-template> 380 <xsl:text>_TO(smth) NS_IMETHOD Get</xsl:text> 381 <xsl:call-template name="capitalize"> 382 <xsl:with-param name="str" select="@name"/> 383 </xsl:call-template> 384 <xsl:text> (</xsl:text> 385 <xsl:if test="@safearray='yes'"> 386 <xsl:text>PRUint32 * a</xsl:text> 387 <xsl:call-template name="capitalize"> 388 <xsl:with-param name="str" select="@name"/> 389 </xsl:call-template> 390 <xsl:text>Size, </xsl:text> 391 </xsl:if> 392 <xsl:apply-templates select="@type" mode="forwarder"/> 393 <xsl:if test="@safearray='yes'"> 394 <xsl:text> *</xsl:text> 395 </xsl:if> 396 <xsl:text> * a</xsl:text> 397 <xsl:call-template name="capitalize"> 398 <xsl:with-param name="str" select="@name"/> 399 </xsl:call-template> 400 <xsl:text>) { return smth Get</xsl:text> 401 <xsl:call-template name="capitalize"> 402 <xsl:with-param name="str" select="@name"/> 403 </xsl:call-template> 404 <xsl:text> (</xsl:text> 405 <xsl:if test="@safearray='yes'"> 406 <xsl:text>a</xsl:text> 407 <xsl:call-template name="capitalize"> 408 <xsl:with-param name="str" select="@name"/> 409 </xsl:call-template> 410 <xsl:text>Size, </xsl:text> 411 </xsl:if> 412 <xsl:text>a</xsl:text> 413 <xsl:call-template name="capitalize"> 414 <xsl:with-param name="str" select="@name"/> 415 </xsl:call-template> 416 <xsl:text>); }
</xsl:text> 417 <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO_OBJ(obj) --> 418 <xsl:text>#define COM_FORWARD_</xsl:text> 419 <xsl:value-of select="$parent/@name"/> 420 <xsl:text>_GETTER_</xsl:text> 421 <xsl:call-template name="capitalize"> 422 <xsl:with-param name="str" select="@name"/> 423 </xsl:call-template> 424 <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text> 425 <xsl:value-of select="$parent/@name"/> 426 <xsl:text>_GETTER_</xsl:text> 427 <xsl:call-template name="capitalize"> 428 <xsl:with-param name="str" select="@name"/> 429 </xsl:call-template> 430 <xsl:text>_TO ((obj)->)
</xsl:text> 431 <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO_BASE(base) --> 432 <xsl:text>#define COM_FORWARD_</xsl:text> 433 <xsl:value-of select="$parent/@name"/> 434 <xsl:text>_GETTER_</xsl:text> 435 <xsl:call-template name="capitalize"> 436 <xsl:with-param name="str" select="@name"/> 437 </xsl:call-template> 438 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 439 <xsl:value-of select="$parent/@name"/> 440 <xsl:text>_GETTER_</xsl:text> 441 <xsl:call-template name="capitalize"> 442 <xsl:with-param name="str" select="@name"/> 443 </xsl:call-template> 444 <xsl:text>_TO (base::)
</xsl:text> 445 <!-- --> 446 <xsl:if test="not(@readonly='yes')"> 447 <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO(smth) --> 448 <xsl:text>#define COM_FORWARD_</xsl:text> 449 <xsl:value-of select="$parent/@name"/> 450 <xsl:text>_SETTER_</xsl:text> 451 <xsl:call-template name="capitalize"> 452 <xsl:with-param name="str" select="@name"/> 453 </xsl:call-template> 454 <xsl:text>_TO(smth) NS_IMETHOD Set</xsl:text> 455 <xsl:call-template name="capitalize"> 456 <xsl:with-param name="str" select="@name"/> 457 </xsl:call-template> 458 <xsl:text> (</xsl:text> 459 <xsl:if test="@safearray='yes'"> 460 <xsl:text>PRUint32 a</xsl:text> 461 <xsl:call-template name="capitalize"> 462 <xsl:with-param name="str" select="@name"/> 463 </xsl:call-template> 464 <xsl:text>Size, </xsl:text> 465 </xsl:if> 466 <xsl:if test="not(@safearray='yes') and (@type='string' or @type='wstring')"> 467 <xsl:text>const </xsl:text> 468 </xsl:if> 469 <xsl:apply-templates select="@type" mode="forwarder"/> 470 <xsl:if test="@safearray='yes'"> 471 <xsl:text> *</xsl:text> 472 </xsl:if> 473 <xsl:text> a</xsl:text> 474 <xsl:call-template name="capitalize"> 475 <xsl:with-param name="str" select="@name"/> 476 </xsl:call-template> 477 <xsl:text>) { return smth Set</xsl:text> 478 <xsl:call-template name="capitalize"> 479 <xsl:with-param name="str" select="@name"/> 480 </xsl:call-template> 481 <xsl:text> (a</xsl:text> 482 <xsl:call-template name="capitalize"> 483 <xsl:with-param name="str" select="@name"/> 484 </xsl:call-template> 485 <xsl:text>); }
</xsl:text> 486 <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO_OBJ(obj) --> 487 <xsl:text>#define COM_FORWARD_</xsl:text> 488 <xsl:value-of select="$parent/@name"/> 489 <xsl:text>_SETTER_</xsl:text> 490 <xsl:call-template name="capitalize"> 491 <xsl:with-param name="str" select="@name"/> 492 </xsl:call-template> 493 <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text> 494 <xsl:value-of select="$parent/@name"/> 495 <xsl:text>_SETTER_</xsl:text> 496 <xsl:call-template name="capitalize"> 497 <xsl:with-param name="str" select="@name"/> 498 </xsl:call-template> 499 <xsl:text>_TO ((obj)->)
</xsl:text> 500 <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO_BASE(base) --> 501 <xsl:text>#define COM_FORWARD_</xsl:text> 502 <xsl:value-of select="$parent/@name"/> 503 <xsl:text>_SETTER_</xsl:text> 504 <xsl:call-template name="capitalize"> 505 <xsl:with-param name="str" select="@name"/> 506 </xsl:call-template> 507 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 508 <xsl:value-of select="$parent/@name"/> 509 <xsl:text>_SETTER_</xsl:text> 510 <xsl:call-template name="capitalize"> 511 <xsl:with-param name="str" select="@name"/> 512 </xsl:call-template> 513 <xsl:text>_TO (base::)
</xsl:text> 514 </xsl:if> 515 516 <xsl:apply-templates select="@if" mode="end"/> 517 518 </xsl:template> 519 520 521 <!-- 522 * methods 523 --> 524 <xsl:template match="interface//method"> 525 <xsl:apply-templates select="@if" mode="begin"/> 526 <xsl:if test="param/@mod='ptr'"> 527 <!-- methods using native types must be non-scriptable --> 528 <xsl:text> [noscript]
</xsl:text> 529 </xsl:if> 530 <xsl:text> void </xsl:text> 531 <xsl:value-of select="@name"/> 532 <xsl:if test="param"> 533 <xsl:text> (
</xsl:text> 534 <xsl:for-each select="param [position() != last()]"> 535 <xsl:text> </xsl:text> 536 <xsl:apply-templates select="."/> 537 <xsl:text>,
</xsl:text> 538 </xsl:for-each> 539 <xsl:text> </xsl:text> 540 <xsl:apply-templates select="param [last()]"/> 541 <xsl:text>
 );
</xsl:text> 542 </xsl:if> 543 <xsl:if test="not(param)"> 544 <xsl:text>();
</xsl:text> 545 </xsl:if> 546 <xsl:apply-templates select="@if" mode="end"/> 547 <xsl:text>
</xsl:text> 548 </xsl:template> 549 550 <xsl:template match="interface//method" mode="forwarder"> 551 552 <xsl:variable name="parent" select="ancestor::interface"/> 553 554 <xsl:apply-templates select="@if" mode="begin"/> 555 556 <xsl:text>#define COM_FORWARD_</xsl:text> 557 <xsl:value-of select="$parent/@name"/> 558 <xsl:text>_</xsl:text> 559 <xsl:call-template name="capitalize"> 560 <xsl:with-param name="str" select="@name"/> 561 </xsl:call-template> 562 <xsl:text>_TO(smth) NS_IMETHOD </xsl:text> 563 <xsl:call-template name="capitalize"> 564 <xsl:with-param name="str" select="@name"/> 565 </xsl:call-template> 566 <xsl:choose> 567 <xsl:when test="param"> 568 <xsl:text> (</xsl:text> 569 <xsl:for-each select="param [position() != last()]"> 570 <xsl:apply-templates select="." mode="forwarder"/> 571 <xsl:text>, </xsl:text> 572 </xsl:for-each> 573 <xsl:apply-templates select="param [last()]" mode="forwarder"/> 574 <xsl:text>) { return smth </xsl:text> 575 <xsl:call-template name="capitalize"> 576 <xsl:with-param name="str" select="@name"/> 577 </xsl:call-template> 578 <xsl:text> (</xsl:text> 579 <xsl:for-each select="param [position() != last()]"> 580 <xsl:if test="@safearray='yes'"> 581 <xsl:text>a</xsl:text> 582 <xsl:call-template name="capitalize"> 583 <xsl:with-param name="str" select="@name"/> 584 </xsl:call-template> 585 <xsl:text>Size+++, </xsl:text> 586 </xsl:if> 587 <xsl:text>a</xsl:text> 588 <xsl:call-template name="capitalize"> 589 <xsl:with-param name="str" select="@name"/> 590 </xsl:call-template> 591 <xsl:text>, </xsl:text> 592 </xsl:for-each> 593 <xsl:if test="param [last()]/@safearray='yes'"> 594 <xsl:text>a</xsl:text> 595 <xsl:call-template name="capitalize"> 596 <xsl:with-param name="str" select="param [last()]/@name"/> 597 </xsl:call-template> 598 <xsl:text>Size, </xsl:text> 599 </xsl:if> 600 <xsl:text>a</xsl:text> 601 <xsl:call-template name="capitalize"> 602 <xsl:with-param name="str" select="param [last()]/@name"/> 603 </xsl:call-template> 604 <xsl:text>); }</xsl:text> 605 </xsl:when> 606 <xsl:otherwise test="not(param)"> 607 <xsl:text>() { return smth </xsl:text> 608 <xsl:call-template name="capitalize"> 609 <xsl:with-param name="str" select="@name"/> 610 </xsl:call-template> 611 <xsl:text>(); }</xsl:text> 612 </xsl:otherwise> 613 </xsl:choose> 614 <xsl:text>
</xsl:text> 615 <!-- COM_FORWARD_Interface_Method_TO_OBJ(obj) --> 616 <xsl:text>#define COM_FORWARD_</xsl:text> 617 <xsl:value-of select="$parent/@name"/> 618 <xsl:text>_</xsl:text> 619 <xsl:call-template name="capitalize"> 620 <xsl:with-param name="str" select="@name"/> 621 </xsl:call-template> 622 <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text> 623 <xsl:value-of select="$parent/@name"/> 624 <xsl:text>_</xsl:text> 625 <xsl:call-template name="capitalize"> 626 <xsl:with-param name="str" select="@name"/> 627 </xsl:call-template> 628 <xsl:text>_TO ((obj)->)
</xsl:text> 629 <!-- COM_FORWARD_Interface_Method_TO_BASE(base) --> 630 <xsl:text>#define COM_FORWARD_</xsl:text> 631 <xsl:value-of select="$parent/@name"/> 632 <xsl:text>_</xsl:text> 633 <xsl:call-template name="capitalize"> 634 <xsl:with-param name="str" select="@name"/> 635 </xsl:call-template> 636 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 637 <xsl:value-of select="$parent/@name"/> 638 <xsl:text>_</xsl:text> 639 <xsl:call-template name="capitalize"> 640 <xsl:with-param name="str" select="@name"/> 641 </xsl:call-template> 642 <xsl:text>_TO (base::)
</xsl:text> 643 644 <xsl:apply-templates select="@if" mode="end"/> 645 106 <xsl:text> = {
</xsl:text> 107 <xsl:text> 0x</xsl:text><xsl:value-of select="substring(@uuid,1,8)"/> 108 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,10,4)"/> 109 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,15,4)"/> 110 <xsl:text>, \
 </xsl:text> 111 <xsl:text>{ 0x</xsl:text><xsl:value-of select="substring(@uuid,20,2)"/> 112 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,22,2)"/> 113 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,25,2)"/> 114 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,27,2)"/> 115 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,29,2)"/> 116 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,31,2)"/> 117 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,33,2)"/> 118 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,35,2)"/> 119 <xsl:text> } \
};

</xsl:text> 646 120 </xsl:template> 647 121 … … 659 133 --> 660 134 <xsl:template match="module/class"> 661 <!-- class and contract id --> 662 <xsl:text>%{C++
</xsl:text> 663 <xsl:text>#define NS_</xsl:text> 664 <xsl:call-template name="uppercase"> 665 <xsl:with-param name="str" select="@name"/> 666 </xsl:call-template> 667 <xsl:text>_CID { \
</xsl:text> 135 <xsl:text>const nsCID CLSID_</xsl:text> 136 <xsl:value-of select="@name"/> 137 <xsl:text> = {
</xsl:text> 668 138 <xsl:text> 0x</xsl:text><xsl:value-of select="substring(@uuid,1,8)"/> 669 139 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,10,4)"/> … … 678 148 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,33,2)"/> 679 149 <xsl:text>, 0x</xsl:text><xsl:value-of select="substring(@uuid,35,2)"/> 680 <xsl:text> } \
}
</xsl:text> 681 <xsl:text>#define NS_</xsl:text> 682 <xsl:call-template name="uppercase"> 683 <xsl:with-param name="str" select="@name"/> 684 </xsl:call-template> 685 <!-- Contract ID --> 686 <xsl:text>_CONTRACTID "@</xsl:text> 687 <xsl:value-of select="@namespace"/> 688 <xsl:text>/</xsl:text> 689 <xsl:value-of select="@name"/> 690 <xsl:text>;1"
</xsl:text> 691 <!-- CLSID_xxx declarations for XPCOM, for compatibility with Win32 --> 692 <xsl:text>// for compatibility with Win32
</xsl:text> 693 <xsl:text>#define CLSID_</xsl:text> 694 <xsl:value-of select="@name"/> 695 <xsl:text> VBOX_GCC_EXTENSION (nsCID) NS_</xsl:text> 696 <xsl:call-template name="uppercase"> 697 <xsl:with-param name="str" select="@name"/> 698 </xsl:call-template> 699 <xsl:text>_CID
</xsl:text> 700 <xsl:text>%}

</xsl:text> 701 </xsl:template> 702 703 704 <!-- 705 * enums 706 --> 707 <xsl:template match="enum">[ 708 uuid(<xsl:value-of select="@uuid"/>), 709 scriptable 710 ] 711 <xsl:text>interface </xsl:text> 712 <xsl:value-of select="@name"/> 713 <xsl:text>
{
</xsl:text> 714 <xsl:for-each select="const"> 715 <xsl:text> const PRUint32 </xsl:text> 716 <xsl:value-of select="@name"/> = <xsl:value-of select="@value"/> 717 <xsl:text>;
</xsl:text> 718 </xsl:for-each> 719 <xsl:text>};

</xsl:text> 720 <!-- --> 721 <xsl:value-of select="concat('/* cross-platform type name for ', @name, ' */
')"/> 722 <xsl:text>%{C++
</xsl:text> 723 <xsl:value-of select="concat('#define ', @name, '_T', ' ', 724 'PRUint32
')"/> 725 <xsl:text>%}

</xsl:text> 726 <!-- --> 727 <xsl:value-of select="concat('/* cross-platform constants for ', @name, ' */
')"/> 728 <xsl:text>%{C++
</xsl:text> 729 <xsl:for-each select="const"> 730 <xsl:value-of select="concat('#define ', ../@name, '_', @name, ' ', 731 ../@name, '::', @name, '
')"/> 732 </xsl:for-each> 733 <xsl:text>%}

</xsl:text> 734 </xsl:template> 735 736 737 <!-- 738 * method parameters 739 --> 740 <xsl:template match="method/param"> 741 <xsl:choose> 742 <!-- safearray parameters --> 743 <xsl:when test="@safearray='yes'"> 744 <!-- array size --> 745 <xsl:choose> 746 <xsl:when test="@dir='in'">in </xsl:when> 747 <xsl:when test="@dir='out'">out </xsl:when> 748 <xsl:when test="@dir='return'">out </xsl:when> 749 <xsl:otherwise>in </xsl:otherwise> 750 </xsl:choose> 751 <xsl:text>unsigned long </xsl:text> 752 <xsl:value-of select="@name"/> 753 <xsl:text>Size,
</xsl:text> 754 <!-- array pointer --> 755 <xsl:text> [array, size_is(</xsl:text> 756 <xsl:value-of select="@name"/> 757 <xsl:text>Size)</xsl:text> 758 <xsl:choose> 759 <xsl:when test="@dir='in'">] in </xsl:when> 760 <xsl:when test="@dir='out'">] out </xsl:when> 761 <xsl:when test="@dir='return'"> , retval] out </xsl:when> 762 <xsl:otherwise>] in </xsl:otherwise> 763 </xsl:choose> 764 <xsl:apply-templates select="@type"/> 765 <xsl:text> </xsl:text> 766 <xsl:value-of select="@name"/> 767 </xsl:when> 768 <!-- normal and array parameters --> 769 <xsl:otherwise> 770 <xsl:choose> 771 <xsl:when test="@dir='in'">in </xsl:when> 772 <xsl:when test="@dir='out'">out </xsl:when> 773 <xsl:when test="@dir='return'">[retval] out </xsl:when> 774 <xsl:otherwise>in </xsl:otherwise> 775 </xsl:choose> 776 <xsl:apply-templates select="@type"/> 777 <xsl:text> </xsl:text> 778 <xsl:value-of select="@name"/> 779 </xsl:otherwise> 780 </xsl:choose> 781 </xsl:template> 782 783 <xsl:template match="method/param" mode="forwarder"> 784 <xsl:if test="@safearray='yes'"> 785 <xsl:text>PRUint32</xsl:text> 786 <xsl:if test="@dir='out' or @dir='return'"> 787 <xsl:text> *</xsl:text> 788 </xsl:if> 789 <xsl:text> a</xsl:text> 790 <xsl:call-template name="capitalize"> 791 <xsl:with-param name="str" select="@name"/> 792 </xsl:call-template> 793 <xsl:text>Size, </xsl:text> 794 </xsl:if> 795 <xsl:apply-templates select="@type" mode="forwarder"/> 796 <xsl:if test="@dir='out' or @dir='return'"> 797 <xsl:text> *</xsl:text> 798 </xsl:if> 799 <xsl:if test="@safearray='yes'"> 800 <xsl:text> *</xsl:text> 801 </xsl:if> 802 <xsl:text> a</xsl:text> 803 <xsl:call-template name="capitalize"> 804 <xsl:with-param name="str" select="@name"/> 805 </xsl:call-template> 806 </xsl:template> 807 808 809 <!-- 810 * attribute/parameter type conversion 811 --> 812 <xsl:template match="attribute/@type | param/@type"> 813 <xsl:variable name="self_target" select="current()/ancestor::if/@target"/> 814 815 <xsl:choose> 816 <!-- modifiers (ignored for 'enumeration' attributes)--> 817 <xsl:when test="name(current())='type' and ../@mod"> 818 <xsl:choose> 819 <xsl:when test="../@mod='ptr'"> 820 <xsl:choose> 821 <!-- standard types --> 822 <!--xsl:when test=".='result'">??</xsl:when--> 823 <xsl:when test=".='boolean'">booleanPtr</xsl:when> 824 <xsl:when test=".='octet'">octetPtr</xsl:when> 825 <xsl:when test=".='short'">shortPtr</xsl:when> 826 <xsl:when test=".='unsigned short'">ushortPtr</xsl:when> 827 <xsl:when test=".='long'">longPtr</xsl:when> 828 <xsl:when test=".='long long'">llongPtr</xsl:when> 829 <xsl:when test=".='unsigned long'">ulongPtr</xsl:when> 830 <xsl:when test=".='unsigned long long'">ullongPtr</xsl:when> 831 <xsl:otherwise> 832 <xsl:message terminate="yes"> 833 <xsl:value-of select="concat(../../../@name,'::',../../@name,'::',../@name,': ')"/> 834 <xsl:text>attribute 'mod=</xsl:text> 835 <xsl:value-of select="concat('"',../@mod,'"')"/> 836 <xsl:text>' cannot be used with type </xsl:text> 837 <xsl:value-of select="concat('"',current(),'"!')"/> 838 </xsl:message> 839 </xsl:otherwise> 840 </xsl:choose> 841 </xsl:when> 842 <xsl:when test="../@mod='string'"> 843 <xsl:choose> 844 <!-- standard types --> 845 <!--xsl:when test=".='result'">??</xsl:when--> 846 <xsl:when test=".='uuid'">wstring</xsl:when> 847 <xsl:otherwise> 848 <xsl:message terminate="yes"> 849 <xsl:value-of select="concat(../../../@name,'::',../../@name,'::',../@name,': ')"/> 850 <xsl:text>attribute 'mod=</xsl:text> 851 <xsl:value-of select="concat('"',../@mod,'"')"/> 852 <xsl:text>' cannot be used with type </xsl:text> 853 <xsl:value-of select="concat('"',current(),'"!')"/> 854 </xsl:message> 855 </xsl:otherwise> 856 </xsl:choose> 857 </xsl:when> 858 <xsl:otherwise> 859 <xsl:message terminate="yes"> 860 <xsl:value-of select="concat(../../../@name,'::',../../@name,'::',../@name,': ')"/> 861 <xsl:value-of select="concat('value "',../@mod,'" ')"/> 862 <xsl:text>of attribute 'mod' is invalid!</xsl:text> 863 </xsl:message> 864 </xsl:otherwise> 865 </xsl:choose> 866 </xsl:when> 867 <!-- no modifiers --> 868 <xsl:otherwise> 869 <xsl:choose> 870 <!-- standard types --> 871 <xsl:when test=".='result'">nsresult</xsl:when> 872 <xsl:when test=".='boolean'">boolean</xsl:when> 873 <xsl:when test=".='octet'">octet</xsl:when> 874 <xsl:when test=".='short'">short</xsl:when> 875 <xsl:when test=".='unsigned short'">unsigned short</xsl:when> 876 <xsl:when test=".='long'">long</xsl:when> 877 <xsl:when test=".='long long'">long long</xsl:when> 878 <xsl:when test=".='unsigned long'">unsigned long</xsl:when> 879 <xsl:when test=".='unsigned long long'">unsigned long long</xsl:when> 880 <xsl:when test=".='char'">char</xsl:when> 881 <xsl:when test=".='wchar'">wchar</xsl:when> 882 <xsl:when test=".='string'">string</xsl:when> 883 <xsl:when test=".='wstring'">wstring</xsl:when> 884 <!-- UUID type --> 885 <xsl:when test=".='uuid'"> 886 <xsl:choose> 887 <xsl:when test="name(..)='attribute'"> 888 <xsl:choose> 889 <xsl:when test="../@readonly='yes'"> 890 <xsl:text>nsIDPtr</xsl:text> 891 </xsl:when> 892 <xsl:otherwise> 893 <xsl:message terminate="yes"> 894 <xsl:value-of select="../@name"/> 895 <xsl:text>: Non-readonly uuid attributes are not supported!</xsl:text> 896 </xsl:message> 897 </xsl:otherwise> 898 </xsl:choose> 899 </xsl:when> 900 <xsl:when test="name(..)='param'"> 901 <xsl:choose> 902 <xsl:when test="../@dir='in' and not(../@safearray='yes')"> 903 <xsl:text>nsIDRef</xsl:text> 904 </xsl:when> 905 <xsl:otherwise> 906 <xsl:text>nsIDPtr</xsl:text> 907 </xsl:otherwise> 908 </xsl:choose> 909 </xsl:when> 910 </xsl:choose> 911 </xsl:when> 912 <!-- system interface types --> 913 <xsl:when test=".='$unknown'">nsISupports</xsl:when> 914 <xsl:otherwise> 915 <xsl:choose> 916 <!-- enum types --> 917 <xsl:when test=" 918 (ancestor::library/enum[@name=current()]) or 919 (ancestor::library/if[@target=$self_target]/enum[@name=current()]) 920 "> 921 <xsl:text>PRUint32</xsl:text> 922 </xsl:when> 923 <!-- custom interface types --> 924 <xsl:when test=" 925 (ancestor::library/interface[@name=current()]) or 926 (ancestor::library/if[@target=$self_target]/interface[@name=current()]) 927 "> 928 <xsl:value-of select="."/> 929 </xsl:when> 930 <!-- other types --> 931 <xsl:otherwise> 932 <xsl:message terminate="yes"> 933 <xsl:text>Unknown parameter type: </xsl:text> 934 <xsl:value-of select="."/> 935 </xsl:message> 936 </xsl:otherwise> 937 </xsl:choose> 938 </xsl:otherwise> 939 </xsl:choose> 940 </xsl:otherwise> 941 </xsl:choose> 942 </xsl:template> 943 944 <xsl:template match="attribute/@type | param/@type" mode="forwarder"> 945 946 <xsl:variable name="self_target" select="current()/ancestor::if/@target"/> 947 948 <xsl:choose> 949 <!-- modifiers (ignored for 'enumeration' attributes)--> 950 <xsl:when test="name(current())='type' and ../@mod"> 951 <xsl:choose> 952 <xsl:when test="../@mod='ptr'"> 953 <xsl:choose> 954 <!-- standard types --> 955 <!--xsl:when test=".='result'">??</xsl:when--> 956 <xsl:when test=".='boolean'">PRBool *</xsl:when> 957 <xsl:when test=".='octet'">PRUint8 *</xsl:when> 958 <xsl:when test=".='short'">PRInt16 *</xsl:when> 959 <xsl:when test=".='unsigned short'">PRUint16 *</xsl:when> 960 <xsl:when test=".='long'">PRInt32 *</xsl:when> 961 <xsl:when test=".='long long'">PRInt64 *</xsl:when> 962 <xsl:when test=".='unsigned long'">PRUint32 *</xsl:when> 963 <xsl:when test=".='unsigned long long'">PRUint64 *</xsl:when> 964 <xsl:when test=".='char'">char *</xsl:when> 965 <xsl:otherwise> 966 <xsl:message terminate="yes"> 967 <xsl:value-of select="concat(../../../@name,'::',../../@name,'::',../@name,': ')"/> 968 <xsl:text>attribute 'mod=</xsl:text> 969 <xsl:value-of select="concat('"',../@mod,'"')"/> 970 <xsl:text>' cannot be used with type </xsl:text> 971 <xsl:value-of select="concat('"',current(),'"!')"/> 972 </xsl:message> 973 </xsl:otherwise> 974 </xsl:choose> 975 </xsl:when> 976 <xsl:when test="../@mod='string'"> 977 <xsl:choose> 978 <!-- standard types --> 979 <!--xsl:when test=".='result'">??</xsl:when--> 980 <xsl:when test=".='uuid'">PRUnichar *</xsl:when> 981 <xsl:otherwise> 982 <xsl:message terminate="yes"> 983 <xsl:value-of select="concat(../../../@name,'::',../../@name,'::',../@name,': ')"/> 984 <xsl:text>attribute 'mod=</xsl:text> 985 <xsl:value-of select="concat('"',../@mod,'"')"/> 986 <xsl:text>' cannot be used with type </xsl:text> 987 <xsl:value-of select="concat('"',current(),'"!')"/> 988 </xsl:message> 989 </xsl:otherwise> 990 </xsl:choose> 991 </xsl:when> 992 </xsl:choose> 993 </xsl:when> 994 <!-- no modifiers --> 995 <xsl:otherwise> 996 <xsl:choose> 997 <!-- standard types --> 998 <xsl:when test=".='result'">nsresult</xsl:when> 999 <xsl:when test=".='boolean'">PRBool</xsl:when> 1000 <xsl:when test=".='octet'">PRUint8</xsl:when> 1001 <xsl:when test=".='short'">PRInt16</xsl:when> 1002 <xsl:when test=".='unsigned short'">PRUint16</xsl:when> 1003 <xsl:when test=".='long'">PRInt32</xsl:when> 1004 <xsl:when test=".='long long'">PRInt64</xsl:when> 1005 <xsl:when test=".='unsigned long'">PRUint32</xsl:when> 1006 <xsl:when test=".='unsigned long long'">PRUint64</xsl:when> 1007 <xsl:when test=".='char'">char</xsl:when> 1008 <xsl:when test=".='wchar'">PRUnichar</xsl:when> 1009 <!-- string types --> 1010 <xsl:when test=".='string'">char *</xsl:when> 1011 <xsl:when test=".='wstring'">PRUnichar *</xsl:when> 1012 <!-- UUID type --> 1013 <xsl:when test=".='uuid'"> 1014 <xsl:choose> 1015 <xsl:when test="name(..)='attribute'"> 1016 <xsl:choose> 1017 <xsl:when test="../@readonly='yes'"> 1018 <xsl:text>nsID *</xsl:text> 1019 </xsl:when> 1020 </xsl:choose> 1021 </xsl:when> 1022 <xsl:when test="name(..)='param'"> 1023 <xsl:choose> 1024 <xsl:when test="../@dir='in' and not(../@safearray='yes')"> 1025 <xsl:text>const nsID &</xsl:text> 1026 </xsl:when> 1027 <xsl:otherwise> 1028 <xsl:text>nsID *</xsl:text> 1029 </xsl:otherwise> 1030 </xsl:choose> 1031 </xsl:when> 1032 </xsl:choose> 1033 </xsl:when> 1034 <!-- system interface types --> 1035 <xsl:when test=".='$unknown'">nsISupports *</xsl:when> 1036 <xsl:otherwise> 1037 <xsl:choose> 1038 <!-- enum types --> 1039 <xsl:when test=" 1040 (ancestor::library/enum[@name=current()]) or 1041 (ancestor::library/if[@target=$self_target]/enum[@name=current()]) 1042 "> 1043 <xsl:text>PRUint32</xsl:text> 1044 </xsl:when> 1045 <!-- custom interface types --> 1046 <xsl:when test=" 1047 (ancestor::library/interface[@name=current()]) or 1048 (ancestor::library/if[@target=$self_target]/interface[@name=current()]) 1049 "> 1050 <xsl:value-of select="."/> 1051 <xsl:text> *</xsl:text> 1052 </xsl:when> 1053 <!-- other types --> 1054 </xsl:choose> 1055 </xsl:otherwise> 1056 </xsl:choose> 1057 </xsl:otherwise> 1058 </xsl:choose> 150 <xsl:text> } \
};

</xsl:text> 1059 151 </xsl:template> 1060 152
Note:
See TracChangeset
for help on using the changeset viewer.