Changeset 13580 in vbox for trunk/src/VBox/Main/idl/midl.xsl
- Timestamp:
- Oct 27, 2008 2:04:18 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/idl/midl.xsl
r11982 r13580 1 1 <?xml version="1.0"?> 2 <!-- $Id$ --> 2 3 3 4 <!-- … … 5 6 * from the generic interface definition expressed in XML. 6 7 7 Copyright (C) 2006-200 7Sun Microsystems, Inc.8 Copyright (C) 2006-2008 Sun Microsystems, Inc. 8 9 9 10 This file is part of VirtualBox Open Source Edition (OSE), as … … 104 105 <xsl:if test="@target='midl'"> 105 106 <xsl:apply-templates mode="forward"/> 107 </xsl:if> 108 </xsl:template> 109 <xsl:template match="if" mode="forwarder"> 110 <xsl:param name="nameOnly"/> 111 <xsl:if test="@target='midl'"> 112 <xsl:apply-templates mode="forwarder"> 113 <xsl:with-param name="nameOnly" select="$nameOnly"/> 114 </xsl:apply-templates> 106 115 </xsl:if> 107 116 </xsl:template> … … 195 204 <xsl:value-of select="@name"/> 196 205 <xsl:text> */

</xsl:text> 206 <!-- Interface implementation forwarder macro --> 207 <xsl:text>/* Interface implementation forwarder macro */
</xsl:text> 208 <!-- 1) indivudual methods --> 209 <xsl:apply-templates select="attribute" mode="forwarder"/> 210 <xsl:apply-templates select="method" mode="forwarder"/> 211 <xsl:apply-templates select="if" mode="forwarder"/> 212 <!-- 2) COM_FORWARD_Interface_TO(smth) --> 213 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 214 <xsl:value-of select="@name"/> 215 <xsl:text>_TO(smth) </xsl:text> 216 <xsl:apply-templates select="attribute" mode="forwarder"> 217 <xsl:with-param name="nameOnly" select="'yes'"/> 218 </xsl:apply-templates> 219 <xsl:apply-templates select="method" mode="forwarder"> 220 <xsl:with-param name="nameOnly" select="'yes'"/> 221 </xsl:apply-templates> 222 <xsl:apply-templates select="if" mode="forwarder"> 223 <xsl:with-param name="nameOnly" select="'yes'"/> 224 </xsl:apply-templates> 225 <xsl:text>")
</xsl:text> 226 <!-- 3) COM_FORWARD_Interface_TO_OBJ(obj) --> 227 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 228 <xsl:value-of select="@name"/> 229 <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text> 230 <xsl:value-of select="@name"/> 231 <xsl:text>_TO ((obj)->)")
</xsl:text> 232 <!-- 4) COM_FORWARD_Interface_TO_BASE(base) --> 233 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 234 <xsl:value-of select="@name"/> 235 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 236 <xsl:value-of select="@name"/> 237 <xsl:text>_TO (base::)")
</xsl:text> 238 <!-- end --> 239 <xsl:text>
</xsl:text> 197 240 </xsl:template> 198 241 … … 256 299 </xsl:template> 257 300 301 <xsl:template match="interface//attribute | collection//attribute" mode="forwarder"> 302 303 <!-- if nameOnly='yes' then only the macro name is composed 304 followed by a space --> 305 <xsl:param name="nameOnly"/> 306 307 <xsl:variable name="parent" select="ancestor::interface | ancestor::collection"/> 308 309 <xsl:apply-templates select="@if" mode="begin"/> 310 311 <xsl:choose> 312 <xsl:when test="$nameOnly='yes'"> 313 <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO(smth) --> 314 <xsl:text>COM_FORWARD_</xsl:text> 315 <xsl:value-of select="$parent/@name"/> 316 <xsl:text>_GETTER_</xsl:text> 317 <xsl:call-template name="capitalize"> 318 <xsl:with-param name="str" select="@name"/> 319 </xsl:call-template> 320 <xsl:text>_TO (smth) </xsl:text> 321 <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO(smth) --> 322 <xsl:if test="not(@readonly='yes')"> 323 <xsl:text>COM_FORWARD_</xsl:text> 324 <xsl:value-of select="$parent/@name"/> 325 <xsl:text>_SETTER_</xsl:text> 326 <xsl:call-template name="capitalize"> 327 <xsl:with-param name="str" select="@name"/> 328 </xsl:call-template> 329 <xsl:text>_TO (smth) </xsl:text> 330 </xsl:if> 331 </xsl:when> 332 <xsl:otherwise> 333 <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO(smth) --> 334 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 335 <xsl:value-of select="$parent/@name"/> 336 <xsl:text>_GETTER_</xsl:text> 337 <xsl:call-template name="capitalize"> 338 <xsl:with-param name="str" select="@name"/> 339 </xsl:call-template> 340 <xsl:text>_TO(smth) HRESULT STDMETHODCALLTYPE get_</xsl:text> 341 <xsl:call-template name="capitalize"> 342 <xsl:with-param name="str" select="@name"/> 343 </xsl:call-template> 344 <xsl:text> (</xsl:text> 345 <xsl:choose> 346 <xsl:when test="@safearray='yes'"> 347 <xsl:text>SAFEARRAY *</xsl:text> 348 </xsl:when> 349 <xsl:otherwise> 350 <xsl:apply-templates select="@type"/> 351 </xsl:otherwise> 352 </xsl:choose> 353 <xsl:text> * a</xsl:text> 354 <xsl:call-template name="capitalize"> 355 <xsl:with-param name="str" select="@name"/> 356 </xsl:call-template> 357 <xsl:text>) { return smth get_</xsl:text> 358 <xsl:call-template name="capitalize"> 359 <xsl:with-param name="str" select="@name"/> 360 </xsl:call-template> 361 <xsl:text> (a</xsl:text> 362 <xsl:call-template name="capitalize"> 363 <xsl:with-param name="str" select="@name"/> 364 </xsl:call-template> 365 <xsl:text>); }")
</xsl:text> 366 <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO_OBJ(obj) --> 367 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 368 <xsl:value-of select="$parent/@name"/> 369 <xsl:text>_GETTER_</xsl:text> 370 <xsl:call-template name="capitalize"> 371 <xsl:with-param name="str" select="@name"/> 372 </xsl:call-template> 373 <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text> 374 <xsl:value-of select="$parent/@name"/> 375 <xsl:text>_GETTER_</xsl:text> 376 <xsl:call-template name="capitalize"> 377 <xsl:with-param name="str" select="@name"/> 378 </xsl:call-template> 379 <xsl:text>_TO ((obj)->)")
</xsl:text> 380 <!-- getter: COM_FORWARD_Interface_GETTER_Name_TO_BASE(base) --> 381 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 382 <xsl:value-of select="$parent/@name"/> 383 <xsl:text>_GETTER_</xsl:text> 384 <xsl:call-template name="capitalize"> 385 <xsl:with-param name="str" select="@name"/> 386 </xsl:call-template> 387 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 388 <xsl:value-of select="$parent/@name"/> 389 <xsl:text>_GETTER_</xsl:text> 390 <xsl:call-template name="capitalize"> 391 <xsl:with-param name="str" select="@name"/> 392 </xsl:call-template> 393 <xsl:text>_TO (base::)")
</xsl:text> 394 <!-- --> 395 <xsl:if test="not(@readonly='yes')"> 396 <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO(smth) --> 397 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 398 <xsl:value-of select="$parent/@name"/> 399 <xsl:text>_SETTER_</xsl:text> 400 <xsl:call-template name="capitalize"> 401 <xsl:with-param name="str" select="@name"/> 402 </xsl:call-template> 403 <xsl:text>_TO(smth) HRESULT STDMETHODCALLTYPE put_</xsl:text> 404 <xsl:call-template name="capitalize"> 405 <xsl:with-param name="str" select="@name"/> 406 </xsl:call-template> 407 <xsl:text> (</xsl:text> 408 <xsl:choose> 409 <xsl:when test="@safearray='yes'"> 410 <xsl:text>SAFEARRAY *</xsl:text> 411 </xsl:when> 412 <xsl:otherwise> 413 <xsl:apply-templates select="@type"/> 414 </xsl:otherwise> 415 </xsl:choose> 416 <xsl:text> a</xsl:text> 417 <xsl:call-template name="capitalize"> 418 <xsl:with-param name="str" select="@name"/> 419 </xsl:call-template> 420 <xsl:text>) { return smth put_</xsl:text> 421 <xsl:call-template name="capitalize"> 422 <xsl:with-param name="str" select="@name"/> 423 </xsl:call-template> 424 <xsl:text> (a</xsl:text> 425 <xsl:call-template name="capitalize"> 426 <xsl:with-param name="str" select="@name"/> 427 </xsl:call-template> 428 <xsl:text>); }")
</xsl:text> 429 <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO_OBJ(obj) --> 430 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 431 <xsl:value-of select="$parent/@name"/> 432 <xsl:text>_SETTER_</xsl:text> 433 <xsl:call-template name="capitalize"> 434 <xsl:with-param name="str" select="@name"/> 435 </xsl:call-template> 436 <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text> 437 <xsl:value-of select="$parent/@name"/> 438 <xsl:text>_SETTER_</xsl:text> 439 <xsl:call-template name="capitalize"> 440 <xsl:with-param name="str" select="@name"/> 441 </xsl:call-template> 442 <xsl:text>_TO ((obj)->)")
</xsl:text> 443 <!-- setter: COM_FORWARD_Interface_SETTER_Name_TO_BASE(base) --> 444 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 445 <xsl:value-of select="$parent/@name"/> 446 <xsl:text>_SETTER_</xsl:text> 447 <xsl:call-template name="capitalize"> 448 <xsl:with-param name="str" select="@name"/> 449 </xsl:call-template> 450 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 451 <xsl:value-of select="$parent/@name"/> 452 <xsl:text>_SETTER_</xsl:text> 453 <xsl:call-template name="capitalize"> 454 <xsl:with-param name="str" select="@name"/> 455 </xsl:call-template> 456 <xsl:text>_TO (base::)")
</xsl:text> 457 </xsl:if> 458 </xsl:otherwise> 459 </xsl:choose> 460 461 <xsl:apply-templates select="@if" mode="end"/> 462 463 </xsl:template> 464 258 465 259 466 <!-- … … 266 473 <xsl:with-param name="str" select="@name"/> 267 474 </xsl:call-template> 268 <xsl:if test="param"> 269 <xsl:text> (
</xsl:text> 270 <xsl:for-each select="param [position() != last()]"> 475 <xsl:choose> 476 <xsl:when test="param"> 477 <xsl:text> (
</xsl:text> 478 <xsl:for-each select="param [position() != last()]"> 479 <xsl:text> </xsl:text> 480 <xsl:apply-templates select="."/> 481 <xsl:text>,
</xsl:text> 482 </xsl:for-each> 271 483 <xsl:text> </xsl:text> 272 <xsl:apply-templates select="."/> 273 <xsl:text>,
</xsl:text> 274 </xsl:for-each> 275 <xsl:text> </xsl:text> 276 <xsl:apply-templates select="param [last()]"/> 277 <xsl:text>
 );
</xsl:text> 278 </xsl:if> 279 <xsl:if test="not(param)"> 280 <xsl:text>();
</xsl:text> 281 </xsl:if> 484 <xsl:apply-templates select="param [last()]"/> 485 <xsl:text>
 );
</xsl:text> 486 </xsl:when> 487 <xsl:otherwise test="not(param)"> 488 <xsl:text>();
</xsl:text> 489 </xsl:otherwise> 490 </xsl:choose> 282 491 <xsl:apply-templates select="@if" mode="end"/> 283 492 <xsl:text>
</xsl:text> 493 </xsl:template> 494 495 <xsl:template match="interface//method | collection//method" mode="forwarder"> 496 497 <!-- if nameOnly='yes' then only the macro name is composed followed by \ --> 498 <xsl:param name="nameOnly"/> 499 500 <xsl:variable name="parent" select="ancestor::interface | ancestor::collection"/> 501 502 <xsl:apply-templates select="@if" mode="begin"/> 503 504 <xsl:choose> 505 <xsl:when test="$nameOnly='yes'"> 506 <!-- COM_FORWARD_Interface_Method_TO(smth) --> 507 <xsl:text>COM_FORWARD_</xsl:text> 508 <xsl:value-of select="$parent/@name"/> 509 <xsl:text>_</xsl:text> 510 <xsl:call-template name="capitalize"> 511 <xsl:with-param name="str" select="@name"/> 512 </xsl:call-template> 513 <xsl:text>_TO (smth) </xsl:text> 514 </xsl:when> 515 <xsl:otherwise> 516 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 517 <xsl:value-of select="$parent/@name"/> 518 <xsl:text>_</xsl:text> 519 <xsl:call-template name="capitalize"> 520 <xsl:with-param name="str" select="@name"/> 521 </xsl:call-template> 522 <xsl:text>_TO(smth) HRESULT STDMETHODCALLTYPE </xsl:text> 523 <xsl:call-template name="capitalize"> 524 <xsl:with-param name="str" select="@name"/> 525 </xsl:call-template> 526 <xsl:choose> 527 <xsl:when test="param"> 528 <xsl:text> (</xsl:text> 529 <xsl:for-each select="param [position() != last()]"> 530 <xsl:apply-templates select="." mode="forwarder"/> 531 <xsl:text>, </xsl:text> 532 </xsl:for-each> 533 <xsl:apply-templates select="param [last()]" mode="forwarder"/> 534 <xsl:text>) { return smth </xsl:text> 535 <xsl:call-template name="capitalize"> 536 <xsl:with-param name="str" select="@name"/> 537 </xsl:call-template> 538 <xsl:text> (</xsl:text> 539 <xsl:for-each select="param [position() != last()]"> 540 <xsl:text>a</xsl:text> 541 <xsl:call-template name="capitalize"> 542 <xsl:with-param name="str" select="@name"/> 543 </xsl:call-template> 544 <xsl:text>, </xsl:text> 545 </xsl:for-each> 546 <xsl:text>a</xsl:text> 547 <xsl:call-template name="capitalize"> 548 <xsl:with-param name="str" select="param [last()]/@name"/> 549 </xsl:call-template> 550 <xsl:text>); }</xsl:text> 551 </xsl:when> 552 <xsl:otherwise test="not(param)"> 553 <xsl:text>() { return smth </xsl:text> 554 <xsl:call-template name="capitalize"> 555 <xsl:with-param name="str" select="@name"/> 556 </xsl:call-template> 557 <xsl:text>(); }</xsl:text> 558 </xsl:otherwise> 559 </xsl:choose> 560 <xsl:text>")
</xsl:text> 561 <!-- COM_FORWARD_Interface_Method_TO_OBJ(obj) --> 562 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 563 <xsl:value-of select="$parent/@name"/> 564 <xsl:text>_</xsl:text> 565 <xsl:call-template name="capitalize"> 566 <xsl:with-param name="str" select="@name"/> 567 </xsl:call-template> 568 <xsl:text>_TO_OBJ(obj) COM_FORWARD_</xsl:text> 569 <xsl:value-of select="$parent/@name"/> 570 <xsl:text>_</xsl:text> 571 <xsl:call-template name="capitalize"> 572 <xsl:with-param name="str" select="@name"/> 573 </xsl:call-template> 574 <xsl:text>_TO ((obj)->)")
</xsl:text> 575 <!-- COM_FORWARD_Interface_Method_TO_BASE(base) --> 576 <xsl:text>cpp_quote("#define COM_FORWARD_</xsl:text> 577 <xsl:value-of select="$parent/@name"/> 578 <xsl:text>_</xsl:text> 579 <xsl:call-template name="capitalize"> 580 <xsl:with-param name="str" select="@name"/> 581 </xsl:call-template> 582 <xsl:text>_TO_BASE(base) COM_FORWARD_</xsl:text> 583 <xsl:value-of select="$parent/@name"/> 584 <xsl:text>_</xsl:text> 585 <xsl:call-template name="capitalize"> 586 <xsl:with-param name="str" select="@name"/> 587 </xsl:call-template> 588 <xsl:text>_TO (base::)")
</xsl:text> 589 </xsl:otherwise> 590 </xsl:choose> 591 592 <xsl:apply-templates select="@if" mode="end"/> 593 284 594 </xsl:template> 285 595 … … 458 768 <xsl:text>)</xsl:text> 459 769 </xsl:if> 770 <xsl:if test="@array"> 771 <xsl:text> *</xsl:text> 772 </xsl:if> 773 <xsl:if test="@dir='out' or @dir='return' or @safearray='yes'"> 774 <xsl:text> *</xsl:text> 775 </xsl:if> 776 <xsl:text> a</xsl:text> 777 <xsl:call-template name="capitalize"> 778 <xsl:with-param name="str" select="@name"/> 779 </xsl:call-template> 780 </xsl:template> 781 782 <xsl:template match="method/param" mode="forwarder"> 783 <xsl:choose> 784 <xsl:when test="@safearray='yes'"> 785 <xsl:text>SAFEARRAY *</xsl:text> 786 </xsl:when> 787 <xsl:otherwise> 788 <xsl:apply-templates select="@type"/> 789 </xsl:otherwise> 790 </xsl:choose> 460 791 <xsl:if test="@array"> 461 792 <xsl:text> *</xsl:text>
Note:
See TracChangeset
for help on using the changeset viewer.