yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
a5e6ddd00
master
1#include "json-consumer.h" 2 3#include "../../core/slang-io.h" 4#include "../../core/slang-string-util.h" 5#include "../util/emum-to-string.h" 6#include "../util/record-utility.h" 7#include "slang.h" 8 9namespace SlangRecord 10{ 11#define SANITY_CHECK () \ 12 if (!m_isFileValid) \ 13 return 14 15static inline void _writeIndent (Slang ::StringBuilder & builder ,int indent ) 16{ 17for (int i = 0 ;i < indent ;i ++ ) 18 { 19builder <<" " ; 20 } 21} 22 23template < typename T > 24static inline void _writeString (Slang ::StringBuilder & builder ,int indent ,T const & str ) 25{ 26_writeIndent (builder ,indent ); 27builder <<str ; 28} 29 30template < typename T ,typename U > 31static inline void _writePair ( 32Slang ::StringBuilder & builder , 33int indent , 34T const & name , 35U const & value ) 36{ 37_writeIndent (builder ,indent ); 38builder <<name <<": " <<value <<",\n" ; 39} 40 41template < typename T ,typename U > 42static inline void _writePairNoComma ( 43Slang ::StringBuilder & builder , 44int indent , 45T const & name , 46U const & value ) 47{ 48_writeIndent (builder ,indent ); 49builder <<name <<": " <<value <<"\n" ; 50} 51 52class ScopeWritterForKey 53{ 54public : 55ScopeWritterForKey ( 56Slang ::StringBuilder * pBuilder , 57int * pIndent , 58Slang ::String const & keyName , 59bool isOutterScope = true) 60 :m_pBuilder (pBuilder ),m_pIndent (pIndent ),m_isOutterScope (isOutterScope ) 61 { 62_writeString ((* m_pBuilder ), (* m_pIndent ),keyName + ": {\n" ); 63 (* m_pIndent )++ ; 64 } 65 66 ~ScopeWritterForKey () 67 { 68 (* m_pIndent )-- ; 69 70if (m_isOutterScope ) 71_writeString ((* m_pBuilder ), (* m_pIndent ),"}\n" ); 72else 73_writeString ((* m_pBuilder ), (* m_pIndent ),"},\n" ); 74 } 75 76private : 77Slang ::StringBuilder * m_pBuilder ; 78int * m_pIndent ; 79bool m_isOutterScope ; 80}; 81 82void CommonInterfaceWriter ::getSession (ObjectID objectId ,ObjectID outSessionId ) 83{ 84Slang ::StringBuilder builder ; 85int indent = 0 ; 86 87Slang ::String functionName = m_className ; 88functionName = functionName + "::getSession" ; 89 90 { 91ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 92 { 93_writePair ( 94builder , 95indent , 96"this" , 97Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 98_writePairNoComma ( 99builder , 100indent , 101"retSession" , 102Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outSessionId )); 103 } 104 } 105 106m_fileStream .write (builder .begin (),builder .getLength ()); 107m_fileStream .flush (); 108} 109 110void CommonInterfaceWriter ::getLayout ( 111ObjectID objectId , 112SlangInt targetIndex , 113ObjectID outDiagnosticsId , 114ObjectID retProgramLayoutId ) 115{ 116Slang ::StringBuilder builder ; 117int indent = 0 ; 118 119Slang ::String functionName = m_className ; 120functionName = functionName + "::getLayout" ; 121 122 { 123ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 124 { 125_writePair ( 126builder , 127indent , 128"this" , 129Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 130_writePair (builder ,indent ,"targetIndex" ,targetIndex ); 131_writePair ( 132builder , 133indent , 134"outDiagnostics" , 135Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 136_writePairNoComma ( 137builder , 138indent , 139"retProgramLayout" , 140Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,retProgramLayoutId )); 141 } 142 } 143 144m_fileStream .write (builder .begin (),builder .getLength ()); 145m_fileStream .flush (); 146} 147 148void CommonInterfaceWriter ::getEntryPointCode ( 149ObjectID objectId , 150SlangInt entryPointIndex , 151SlangInt targetIndex , 152ObjectID outCodeId , 153ObjectID outDiagnosticsId ) 154{ 155Slang ::StringBuilder builder ; 156int indent = 0 ; 157 158Slang ::String functionName = m_className ; 159functionName = functionName + "::getEntryPointCode" ; 160 161 { 162ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 163 { 164_writePair ( 165builder , 166indent , 167"this" , 168Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 169_writePair (builder ,indent ,"entryPointIndex" ,entryPointIndex ); 170_writePair (builder ,indent ,"targetIndex" ,targetIndex ); 171_writePair ( 172builder , 173indent , 174"outCode" , 175Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outCodeId )); 176_writePairNoComma ( 177builder , 178indent , 179"outDiagnostics" , 180Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 181 } 182 } 183 184m_fileStream .write (builder .begin (),builder .getLength ()); 185m_fileStream .flush (); 186} 187 188void CommonInterfaceWriter ::getTargetCode ( 189ObjectID objectId , 190SlangInt targetIndex , 191ObjectID outCodeId , 192ObjectID outDiagnosticsId ) 193{ 194Slang ::StringBuilder builder ; 195int indent = 0 ; 196 197Slang ::String functionName = m_className ; 198functionName = functionName + "::getTargetCode" ; 199 200 { 201ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 202 { 203_writePair ( 204builder , 205indent , 206"this" , 207Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 208_writePair (builder ,indent ,"targetIndex" ,targetIndex ); 209_writePair ( 210builder , 211indent , 212"outCode" , 213Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outCodeId )); 214_writePairNoComma ( 215builder , 216indent , 217"outDiagnostics" , 218Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 219 } 220 } 221 222m_fileStream .write (builder .begin (),builder .getLength ()); 223m_fileStream .flush (); 224} 225 226void CommonInterfaceWriter ::getResultAsFileSystem ( 227ObjectID objectId , 228SlangInt entryPointIndex , 229SlangInt targetIndex , 230ObjectID outFileSystemId ) 231{ 232Slang ::StringBuilder builder ; 233int indent = 0 ; 234 235Slang ::String functionName = m_className ; 236functionName = functionName + "::getResultAsFileSystem" ; 237 238 { 239ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 240 { 241_writePair ( 242builder , 243indent , 244"this" , 245Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 246_writePair (builder ,indent ,"entryPointIndex" ,entryPointIndex ); 247_writePair (builder ,indent ,"targetIndex" ,targetIndex ); 248_writePairNoComma ( 249builder , 250indent , 251"outFileSystem" , 252Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outFileSystemId )); 253 } 254 } 255 256m_fileStream .write (builder .begin (),builder .getLength ()); 257m_fileStream .flush (); 258} 259 260void CommonInterfaceWriter ::getEntryPointHash ( 261ObjectID objectId , 262SlangInt entryPointIndex , 263SlangInt targetIndex , 264ObjectID outHashId ) 265{ 266Slang ::StringBuilder builder ; 267int indent = 0 ; 268 269Slang ::String functionName = m_className ; 270functionName = functionName + "::getEntryPointHash" ; 271 272 { 273ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 274 { 275_writePair ( 276builder , 277indent , 278"this" , 279Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 280_writePair (builder ,indent ,"entryPointIndex" ,entryPointIndex ); 281_writePair (builder ,indent ,"targetIndex" ,targetIndex ); 282_writePairNoComma ( 283builder , 284indent , 285"outHash" , 286Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outHashId )); 287 } 288 } 289 290m_fileStream .write (builder .begin (),builder .getLength ()); 291m_fileStream .flush (); 292} 293 294void CommonInterfaceWriter ::specialize ( 295ObjectID objectId , 296 slang::SpecializationArg const * specializationArgs , 297SlangInt specializationArgCount , 298ObjectID outSpecializedComponentTypeId , 299ObjectID outDiagnosticsId ) 300{ 301Slang ::StringBuilder builder ; 302int indent = 0 ; 303 304Slang ::String functionName = m_className ; 305functionName = functionName + "::specialize" ; 306 307 { 308ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 309 { 310_writePair ( 311builder , 312indent , 313"this" , 314Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 315if (specializationArgCount ) 316 { 317ScopeWritterForKey scopeWritterForArgs ( 318& builder , 319& indent , 320"specializationArgs" , 321 false); 322for (int i = 0 ;i < specializationArgCount ;i ++ ) 323 { 324bool isLastField = (i == specializationArgCount - 1 ); 325ScopeWritterForKey scopeWritterForArg ( 326& builder , 327& indent , 328Slang ::StringUtil ::makeStringWithFormat ("[%d]" ,i ), 329isLastField ); 330 { 331_writePair ( 332builder , 333indent , 334"kind" , 335SpecializationArgKindToString (specializationArgs [i ].kind )); 336_writePairNoComma ( 337builder , 338indent , 339"type" , 340Slang ::StringUtil ::makeStringWithFormat ( 341"0x%llX" , 342specializationArgs [i ].type )); 343 } 344 } 345 } 346else 347 { 348_writePair (builder ,indent ,"specializationArgs" ,"nullptr" ); 349 } 350_writePair (builder ,indent ,"specializationArgCount" ,specializationArgCount ); 351_writePair ( 352builder , 353indent , 354"outSpecializedComponentType" , 355Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outSpecializedComponentTypeId )); 356_writePairNoComma ( 357builder , 358indent , 359"outSpecializedComponentType" , 360Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 361 } 362 } 363 364m_fileStream .write (builder .begin (),builder .getLength ()); 365m_fileStream .flush (); 366} 367 368void CommonInterfaceWriter ::link ( 369ObjectID objectId , 370ObjectID outLinkedComponentTypeId , 371ObjectID outDiagnosticsId ) 372{ 373Slang ::StringBuilder builder ; 374int indent = 0 ; 375 376Slang ::String functionName = m_className ; 377functionName = functionName + "::link" ; 378 379 { 380ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 381 { 382_writePair ( 383builder , 384indent , 385"this" , 386Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 387_writePair ( 388builder , 389indent , 390"outLinkedComponentType" , 391Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outLinkedComponentTypeId )); 392_writePairNoComma ( 393builder , 394indent , 395"outDiagnostics" , 396Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 397 } 398 } 399 400m_fileStream .write (builder .begin (),builder .getLength ()); 401m_fileStream .flush (); 402} 403 404void CommonInterfaceWriter ::getEntryPointHostCallable ( 405ObjectID objectId , 406int entryPointIndex , 407int targetIndex , 408ObjectID outSharedLibraryId , 409ObjectID outDiagnosticsId ) 410{ 411Slang ::StringBuilder builder ; 412int indent = 0 ; 413 414Slang ::String functionName = m_className ; 415functionName = functionName + "::getEntryPointHostCallable" ; 416 417 { 418ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 419 { 420_writePair ( 421builder , 422indent , 423"this" , 424Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 425_writePair (builder ,indent ,"entryPointIndex" ,entryPointIndex ); 426_writePair (builder ,indent ,"targetIndex" ,targetIndex ); 427_writePair ( 428builder , 429indent , 430"outSharedLibrary" , 431Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outSharedLibraryId )); 432_writePairNoComma ( 433builder , 434indent , 435"outDiagnostics" , 436Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 437 } 438 } 439 440m_fileStream .write (builder .begin (),builder .getLength ()); 441m_fileStream .flush (); 442} 443 444void CommonInterfaceWriter ::renameEntryPoint ( 445ObjectID objectId , 446const char * newName , 447ObjectID outEntryPointId ) 448{ 449Slang ::StringBuilder builder ; 450int indent = 0 ; 451 452Slang ::String functionName = m_className ; 453functionName = functionName + "::renameEntryPoint" ; 454 455 { 456ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 457 { 458_writePair ( 459builder , 460indent , 461"this" , 462Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 463_writePair ( 464builder , 465indent , 466"newName" , 467Slang ::StringUtil ::makeStringWithFormat ( 468"\"%s\"" , 469newName != nullptr ?newName :"nullptr" )); 470_writePairNoComma ( 471builder , 472indent , 473"outEntryPoint" , 474Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outEntryPointId )); 475 } 476 } 477 478m_fileStream .write (builder .begin (),builder .getLength ()); 479m_fileStream .flush (); 480} 481 482void CommonInterfaceWriter ::linkWithOptions ( 483ObjectID objectId , 484ObjectID outLinkedComponentTypeId , 485uint32_t compilerOptionEntryCount , 486 slang::CompilerOptionEntry * compilerOptionEntries , 487ObjectID outDiagnosticsId ) 488{ 489 490Slang ::StringBuilder builder ; 491int indent = 0 ; 492 493Slang ::String functionName = m_className ; 494functionName = functionName + "::linkWithOptions" ; 495 496 { 497ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 498 { 499 500_writePair ( 501builder , 502indent , 503"this" , 504Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 505_writePair (builder ,indent ,"compilerOptionEntryCount" ,compilerOptionEntryCount ); 506 507JsonConsumer ::_writeCompilerOptionEntryHelper ( 508builder , 509indent , 510compilerOptionEntries , 511compilerOptionEntryCount ); 512 513_writePair ( 514builder , 515indent , 516"outLinkedComponentType" , 517Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outLinkedComponentTypeId )); 518_writePairNoComma ( 519builder , 520indent , 521"outDiagnostics" , 522Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 523 } 524 } 525 526m_fileStream .write (builder .begin (),builder .getLength ()); 527m_fileStream .flush (); 528} 529 530void CommonInterfaceWriter ::getTargetCompileResult ( 531ObjectID objectId , 532SlangInt targetIndex , 533ObjectID outCompileResultId , 534ObjectID outDiagnosticsId ) 535{ 536Slang ::StringBuilder builder ; 537int indent = 0 ; 538 539Slang ::String functionName = m_className ; 540functionName = functionName + "::getTargetCompileResult" ; 541 { 542ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 543 { 544_writePair ( 545builder , 546indent , 547"this" , 548Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 549_writePair (builder ,indent ,"targetIndex" ,targetIndex ); 550_writePair ( 551builder , 552indent , 553"outCompileResult" , 554Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outCompileResultId )); 555_writePairNoComma ( 556builder , 557indent , 558"outDiagnostics" , 559Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 560 } 561 } 562 563m_fileStream .write (builder .begin (),builder .getLength ()); 564m_fileStream .flush (); 565} 566 567void CommonInterfaceWriter ::getEntryPointCompileResult ( 568ObjectID objectId , 569SlangInt entryPointIndex , 570SlangInt targetIndex , 571ObjectID outCompileResultId , 572ObjectID outDiagnosticsId ) 573{ 574Slang ::StringBuilder builder ; 575int indent = 0 ; 576 577Slang ::String functionName = m_className ; 578functionName = functionName + "::getEntryPointCompileResult" ; 579 { 580ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 581 { 582_writePair ( 583builder , 584indent , 585"this" , 586Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 587_writePair (builder ,indent ,"entryPointIndex" ,entryPointIndex ); 588_writePair (builder ,indent ,"targetIndex" ,targetIndex ); 589_writePair ( 590builder , 591indent , 592"outCompileResult" , 593Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outCompileResultId )); 594_writePairNoComma ( 595builder , 596indent , 597"outDiagnostics" , 598Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 599 } 600 } 601 602m_fileStream .write (builder .begin (),builder .getLength ()); 603m_fileStream .flush (); 604} 605 606void CommonInterfaceWriter ::queryInterface ( 607ObjectID objectId , 608const SlangUUID & guid , 609ObjectID outInterfaceId ) 610{ 611Slang ::StringBuilder builder ; 612int indent = 0 ; 613 614Slang ::String functionName = m_className ; 615functionName = functionName + "::queryInterface" ; 616 { 617ScopeWritterForKey scopeWritter (& builder ,& indent ,functionName ); 618 { 619_writePair ( 620builder , 621indent , 622"this" , 623Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 624 625Slang ::String guidString = Slang ::StringUtil ::makeStringWithFormat ( 626"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x" , 627guid .data1 , 628guid .data2 , 629guid .data3 , 630guid .data4 [0 ], 631guid .data4 [1 ], 632guid .data4 [2 ], 633guid .data4 [3 ], 634guid .data4 [4 ], 635guid .data4 [5 ], 636guid .data4 [6 ], 637guid .data4 [7 ]); 638_writePair (builder ,indent ,"guid" ,guidString ); 639 640_writePairNoComma ( 641builder , 642indent , 643"outInterface" , 644Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outInterfaceId )); 645 } 646 } 647 648m_fileStream .write (builder .begin (),builder .getLength ()); 649m_fileStream .flush (); 650} 651 652JsonConsumer ::JsonConsumer (const Slang ::String & filePath ) 653{ 654if (!Slang ::File ::exists (Slang ::Path ::getParentDirectory (filePath ))) 655 { 656slangRecordLog ( 657LogLevel ::Error , 658"Directory for json file does not exist: %s\n" , 659filePath .getBuffer ()); 660 } 661 662Slang ::FileMode fileMode = Slang ::FileMode ::Create ; 663Slang ::FileAccess fileAccess = Slang ::FileAccess ::Write ; 664Slang ::FileShare fileShare = Slang ::FileShare ::None ; 665 666SlangResult res = m_fileStream .init (filePath ,fileMode ,fileAccess ,fileShare ); 667 668if (res != SLANG_OK ) 669 { 670slangRecordLog (LogLevel ::Error ,"Failed to open file %s\n" ,filePath .getBuffer ()); 671 } 672 673m_isFileValid = true; 674} 675 676void JsonConsumer ::_writeCompilerOptionEntryHelper ( 677Slang ::StringBuilder & builder , 678int indent , 679 slang::CompilerOptionEntry * compilerOptionEntries , 680uint32_t compilerOptionEntryCount , 681bool isLastField ) 682{ 683if (compilerOptionEntryCount ) 684 { 685ScopeWritterForKey scopeWritterForCompilerOptionEntries ( 686& builder , 687& indent , 688"compilerOptionEntries" , 689isLastField ); 690 691for (uint32_t j = 0 ;j < compilerOptionEntryCount ;j ++ ) 692 { 693ScopeWritterForKey scopeWritterForCompileOptionElement ( 694& builder , 695& indent , 696Slang ::StringUtil ::makeStringWithFormat ("[%d]\n" ,j )); 697 { 698_writePair ( 699builder , 700indent , 701"name" , 702CompilerOptionNameToString (compilerOptionEntries [j ].name )); 703 704bool isLastEntry = (j == compilerOptionEntryCount - 1 ); 705ScopeWritterForKey scopeWritterValue (& builder ,& indent ,"value" ,isLastEntry ); 706 { 707_writePair ( 708builder , 709indent , 710"kind" , 711CompilerOptionValueKindToString (compilerOptionEntries [j ].value .kind )); 712_writePair ( 713builder , 714indent , 715"intValue0" , 716compilerOptionEntries [j ].value .intValue0 ); 717_writePair ( 718builder , 719indent , 720"intValue1" , 721compilerOptionEntries [j ].value .intValue1 ); 722_writePair ( 723builder , 724indent , 725"stringValue0" , 726compilerOptionEntries [j ].value .stringValue0 ); 727_writePairNoComma ( 728builder , 729indent , 730"stringValue1" , 731compilerOptionEntries [j ].value .stringValue1 ); 732 } 733 } 734 } 735 } 736else 737 { 738_writePairNoComma (builder ,indent ,"compilerOptionEntries" ,"nullptr" ); 739 } 740} 741 742void JsonConsumer ::_writeGlobalSessionDescHelper ( 743Slang ::StringBuilder & builder , 744int indent , 745SlangGlobalSessionDesc const & desc , 746Slang ::String keyName , 747bool isLastField ) 748{ 749SLANG_UNUSED (isLastField ); 750 751ScopeWritterForKey scopeWritterForGlobalSessionDesc (& builder ,& indent ,keyName ); 752 { 753_writePair (builder ,indent ,"structureSize" , (uint32_t )desc .structureSize ); 754_writePair (builder ,indent ,"apiVersion" , (uint32_t )desc .apiVersion ); 755_writePair (builder ,indent ,"minLanguageVersion" , (uint32_t )desc .minLanguageVersion ); 756_writePair (builder ,indent ,"enablGLSL" , (uint32_t )desc .enableGLSL ); 757 } 758} 759 760void JsonConsumer ::_writeSessionDescHelper ( 761Slang ::StringBuilder & builder , 762int indent , 763 slang::SessionDesc const & desc , 764Slang ::String keyName , 765bool isLastField ) 766{ 767ScopeWritterForKey scopeWritterForSessionDesc (& builder ,& indent ,keyName ); 768 { 769_writePair (builder ,indent ,"structureSize" , (uint32_t )desc .structureSize ); 770 771if (desc .targetCount ) 772 { 773ScopeWritterForKey scopeWritterForTarget ( 774& builder , 775& indent , 776Slang ::StringUtil ::makeStringWithFormat ("targets (0x%llX)" ,desc .targets ), 777isLastField ); 778 { 779for (int i = 0 ;i < desc .targetCount ;i ++ ) 780 { 781bool isLastEntry = (i == desc .targetCount - 1 ); 782ScopeWritterForKey scopeWritterForTargetElement ( 783& builder , 784& indent , 785Slang ::StringUtil ::makeStringWithFormat ("[%d]" ,i ), 786isLastEntry ); 787 { 788_writePair ( 789builder , 790indent , 791"structureSize" , 792 (uint32_t )desc .targets [i ].structureSize ); 793_writePair ( 794builder , 795indent , 796"format" , 797SlangCompileTargetToString (desc .targets [i ].format )); 798_writePair ( 799builder , 800indent , 801"profile" , 802SlangProfileIDToString (desc .targets [i ].profile )); 803_writePair ( 804builder , 805indent , 806"flags" , 807SlangTargetFlagsToString (desc .targets [i ].flags )); 808_writePair ( 809builder , 810indent , 811"floatingPointMode" , 812SlangFloatingPointModeToString (desc .targets [i ].floatingPointMode )); 813_writePair ( 814builder , 815indent , 816"lineDirectiveMode" , 817SlangLineDirectiveModeToString (desc .targets [i ].lineDirectiveMode )); 818_writePair ( 819builder , 820indent , 821"forceGLSLScalarBufferLayout" , 822 (desc .targets [i ].floatingPointMode ?"true" :"false" )); 823 824_writeCompilerOptionEntryHelper ( 825builder , 826indent , 827desc .targets [i ].compilerOptionEntries , 828desc .targets [i ].compilerOptionEntryCount ); 829 } 830 } 831 } 832 } 833else 834 { 835_writePair (builder ,indent ,"targets" ,"nullptr" ); 836 } 837 838_writePair (builder ,indent ,"targetCount" ,desc .targetCount ); 839_writePair (builder ,indent ,"flags" ,SessionFlagsToString (desc .flags )); 840_writePair ( 841builder , 842indent , 843"defaultMatrixLayoutMode" , 844SlangMatrixLayoutModeToString (desc .defaultMatrixLayoutMode )); 845 846if (desc .searchPathCount ) 847 { 848ScopeWritterForKey scopeWritterForSearchPath (& builder ,& indent ,"searchPaths" , false); 849for (int i = 0 ;i < desc .searchPathCount ;i ++ ) 850 { 851Slang ::String searchPath (desc .searchPaths [i ]); 852searchPath = searchPath + ",\n" ; 853_writeString (builder ,indent ,searchPath ); 854 } 855 } 856else 857 { 858_writePair (builder ,indent ,"searchPaths" ,"nullptr" ); 859 } 860_writePair (builder ,indent ,"searchPathCount" ,desc .searchPathCount ); 861 862if (desc .preprocessorMacroCount ) 863 { 864ScopeWritterForKey scopeWritterForMacro (& builder ,& indent ,"preprocessorMacros" , false); 865for (int i = 0 ;i < desc .preprocessorMacroCount ;i ++ ) 866 { 867bool isLastField = (i == desc .preprocessorMacroCount - 1 ); 868ScopeWritterForKey scopeWritterForMacroElement ( 869& builder , 870& indent , 871Slang ::StringUtil ::makeStringWithFormat ("[%d]" ,i ), 872isLastField ); 873 874_writePair ( 875builder , 876indent , 877"name" , 878Slang ::StringUtil ::makeStringWithFormat ( 879"\"%s\"" , 880desc .preprocessorMacros [i ].name != nullptr ?desc .preprocessorMacros [i ].name 881 :"nullptr" )); 882 883_writePairNoComma ( 884builder , 885indent , 886"value" , 887Slang ::StringUtil ::makeStringWithFormat ( 888"\"%s\"" , 889desc .preprocessorMacros [i ].value != nullptr 890 ?desc .preprocessorMacros [i ].value 891 :"nullptr" )); 892 } 893 } 894else 895 { 896_writePair (builder ,indent ,"preprocessorMacros" ,"nullptr" ); 897 } 898_writePair (builder ,indent ,"preprocessorMacroCount" ,desc .preprocessorMacroCount ); 899 900AddressFormat address = reinterpret_cast < AddressFormat > (desc .fileSystem ); 901_writePair ( 902builder , 903indent , 904"fileSystem" , 905Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,address )); 906_writePair ( 907builder , 908indent , 909"enableEffectAnnotations" , 910 (desc .enableEffectAnnotations ?"true" :"false" )); 911_writePair (builder ,indent ,"allowGLSLSyntax" , (desc .allowGLSLSyntax ?"true" :"false" )); 912_writePair (builder ,indent ,"compilerOptionEntryCount" ,desc .compilerOptionEntryCount ); 913_writeCompilerOptionEntryHelper ( 914builder , 915indent , 916desc .compilerOptionEntries , 917desc .compilerOptionEntryCount ); 918 } 919} 920 921void JsonConsumer ::CreateGlobalSession ( 922SlangGlobalSessionDesc const & desc , 923ObjectID outGlobalSessionId ) 924{ 925SANITY_CHECK (); 926Slang ::StringBuilder builder ; 927int indent = 0 ; 928 929 { 930ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::createGlobalSession" ); 931_writeGlobalSessionDescHelper (builder ,indent ,desc ,"inDesc" ); 932_writePairNoComma ( 933builder , 934indent , 935"outGlobalSession" , 936Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outGlobalSessionId )); 937 } 938 939m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 940m_fileStream .flush (); 941} 942 943void JsonConsumer ::IGlobalSession_createSession ( 944ObjectID objectId , 945 slang::SessionDesc const & desc , 946ObjectID outSessionId ) 947{ 948SANITY_CHECK (); 949Slang ::StringBuilder builder ; 950int indent = 0 ; 951 952 { 953ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::createSession" ); 954 { 955_writePair ( 956builder , 957indent , 958"this" , 959Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 960 961_writeSessionDescHelper (builder ,indent ,desc ,"inDesc" ); 962 963_writePairNoComma ( 964builder , 965indent , 966"outSession" , 967Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outSessionId )); 968 } 969 } 970 971m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 972m_fileStream .flush (); 973} 974 975void JsonConsumer ::IGlobalSession_findProfile (ObjectID objectId ,char const * name ) 976{ 977SANITY_CHECK (); 978Slang ::StringBuilder builder ; 979int indent = 0 ; 980 981 { 982ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::findProfile" ); 983 { 984_writePair ( 985builder , 986indent , 987"this" , 988Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 989_writePairNoComma ( 990builder , 991indent , 992"name" , 993Slang ::StringUtil ::makeStringWithFormat ( 994"\"%s\"" , 995name != nullptr ?name :"nullptr" )); 996 } 997 } 998 999m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1000m_fileStream .flush (); 1001} 1002 1003 1004void JsonConsumer ::IGlobalSession_setDownstreamCompilerPath ( 1005ObjectID objectId , 1006SlangPassThrough passThrough , 1007char const * path ) 1008{ 1009SANITY_CHECK (); 1010Slang ::StringBuilder builder ; 1011int indent = 0 ; 1012 1013 { 1014ScopeWritterForKey scopeWritter ( 1015& builder , 1016& indent , 1017"IGlobalSession::setDownstreamCompilerPath" ); 1018 { 1019_writePair ( 1020builder , 1021indent , 1022"this" , 1023Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1024_writePair (builder ,indent ,"passThrough" ,SlangPassThroughToString (passThrough )); 1025_writePairNoComma ( 1026builder , 1027indent , 1028"path" , 1029Slang ::StringUtil ::makeStringWithFormat ( 1030"\"%s\"" , 1031path != nullptr ?path :"nullptr" )); 1032 } 1033 } 1034 1035m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1036m_fileStream .flush (); 1037} 1038 1039 1040void JsonConsumer ::IGlobalSession_setDownstreamCompilerPrelude ( 1041ObjectID objectId , 1042SlangPassThrough inPassThrough , 1043char const * prelude ) 1044{ 1045SANITY_CHECK (); 1046Slang ::StringBuilder builder ; 1047int indent = 0 ; 1048 1049 { 1050ScopeWritterForKey scopeWritter ( 1051& builder , 1052& indent , 1053"IGlobalSession::setDownstreamCompilerPrelude" ); 1054 { 1055_writePair ( 1056builder , 1057indent , 1058"this" , 1059Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1060_writePair (builder ,indent ,"passThrough" ,SlangPassThroughToString (inPassThrough )); 1061_writePairNoComma ( 1062builder , 1063indent , 1064"preludeText" , 1065Slang ::StringUtil ::makeStringWithFormat ( 1066"\"%s\"" , 1067prelude != nullptr ?prelude :"nullptr" )); 1068 } 1069 } 1070 1071m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1072m_fileStream .flush (); 1073} 1074 1075 1076void JsonConsumer ::IGlobalSession_getDownstreamCompilerPrelude ( 1077ObjectID objectId , 1078SlangPassThrough inPassThrough , 1079ObjectID outPreludeId ) 1080{ 1081SANITY_CHECK (); 1082Slang ::StringBuilder builder ; 1083int indent = 0 ; 1084 1085 { 1086ScopeWritterForKey scopeWritter ( 1087& builder , 1088& indent , 1089"IGlobalSession::getDownstreamCompilerPrelude" ); 1090 { 1091_writePair ( 1092builder , 1093indent , 1094"this" , 1095Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1096_writePair (builder ,indent ,"passThrough" ,SlangPassThroughToString (inPassThrough )); 1097_writePairNoComma ( 1098builder , 1099indent , 1100"outPrelude" , 1101Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outPreludeId )); 1102 } 1103 } 1104 1105m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1106m_fileStream .flush (); 1107} 1108 1109 1110void JsonConsumer ::IGlobalSession_setDefaultDownstreamCompiler ( 1111ObjectID objectId , 1112SlangSourceLanguage sourceLanguage , 1113SlangPassThrough defaultCompiler ) 1114{ 1115SANITY_CHECK (); 1116Slang ::StringBuilder builder ; 1117int indent = 0 ; 1118 1119 { 1120ScopeWritterForKey scopeWritter ( 1121& builder , 1122& indent , 1123"IGlobalSession::setDefaultDownstreamCompiler" ); 1124 { 1125_writePair ( 1126builder , 1127indent , 1128"this" , 1129Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1130_writePair ( 1131builder , 1132indent , 1133"sourceLanguage" , 1134SlangSourceLanguageToString (sourceLanguage )); 1135_writePairNoComma ( 1136builder , 1137indent , 1138"defaultCompiler" , 1139SlangPassThroughToString (defaultCompiler )); 1140 } 1141 } 1142 1143m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1144m_fileStream .flush (); 1145} 1146 1147 1148void JsonConsumer ::IGlobalSession_getDefaultDownstreamCompiler ( 1149ObjectID objectId , 1150SlangSourceLanguage sourceLanguage ) 1151{ 1152SANITY_CHECK (); 1153Slang ::StringBuilder builder ; 1154int indent = 0 ; 1155 1156 { 1157ScopeWritterForKey scopeWritter ( 1158& builder , 1159& indent , 1160"IGlobalSession::getDefaultDownstreamCompiler" ); 1161 { 1162_writePair ( 1163builder , 1164indent , 1165"this" , 1166Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1167_writePairNoComma ( 1168builder , 1169indent , 1170"sourceLanguage" , 1171SlangSourceLanguageToString (sourceLanguage )); 1172 } 1173 } 1174 1175m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1176m_fileStream .flush (); 1177} 1178 1179 1180void JsonConsumer ::IGlobalSession_setLanguagePrelude ( 1181ObjectID objectId , 1182SlangSourceLanguage inSourceLanguage , 1183char const * prelude ) 1184{ 1185SANITY_CHECK (); 1186Slang ::StringBuilder builder ; 1187int indent = 0 ; 1188 1189 { 1190ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::setLanguagePrelude" ); 1191 { 1192_writePair ( 1193builder , 1194indent , 1195"this" , 1196Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1197_writePair ( 1198builder , 1199indent , 1200"sourceLanguage" , 1201SlangSourceLanguageToString (inSourceLanguage )); 1202_writePairNoComma ( 1203builder , 1204indent , 1205"preludeText" , 1206Slang ::StringUtil ::makeStringWithFormat ( 1207"\"%s\"" , 1208prelude != nullptr ?prelude :"nullptr" )); 1209 } 1210 } 1211 1212m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1213m_fileStream .flush (); 1214} 1215 1216 1217void JsonConsumer ::IGlobalSession_getLanguagePrelude ( 1218ObjectID objectId , 1219SlangSourceLanguage inSourceLanguage , 1220ObjectID outPreludeId ) 1221{ 1222SANITY_CHECK (); 1223Slang ::StringBuilder builder ; 1224int indent = 0 ; 1225 1226 { 1227ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::getLanguagePrelude" ); 1228 { 1229_writePair ( 1230builder , 1231indent , 1232"this" , 1233Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1234_writePair ( 1235builder , 1236indent , 1237"sourceLanguage" , 1238SlangSourceLanguageToString (inSourceLanguage )); 1239_writePairNoComma ( 1240builder , 1241indent , 1242"outPrelude" , 1243Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outPreludeId )); 1244 } 1245 } 1246 1247m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1248m_fileStream .flush (); 1249} 1250 1251 1252void JsonConsumer ::IGlobalSession_createCompileRequest ( 1253ObjectID objectId , 1254ObjectID outCompileRequest ) 1255{ 1256SANITY_CHECK (); 1257Slang ::StringBuilder builder ; 1258int indent = 0 ; 1259_writeString (builder ,indent ,"IGlobalSession::createCompileRequest: {\n" ); 1260 1261 { 1262ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::createCompileRequest" ); 1263 { 1264_writePair ( 1265builder , 1266indent , 1267"this" , 1268Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1269_writePairNoComma ( 1270builder , 1271indent , 1272"outCompileRequest" , 1273Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outCompileRequest )); 1274 } 1275 } 1276 1277m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1278m_fileStream .flush (); 1279} 1280 1281 1282void JsonConsumer ::IGlobalSession_addBuiltins ( 1283ObjectID objectId , 1284char const * sourcePath , 1285char const * sourceString ) 1286{ 1287SANITY_CHECK (); 1288Slang ::StringBuilder builder ; 1289int indent = 0 ; 1290_writeString (builder ,indent ,"IGlobalSession::addBuiltins: {\n" ); 1291 1292 { 1293ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::addBuiltins" ); 1294 { 1295_writePair ( 1296builder , 1297indent , 1298"this" , 1299Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1300_writePair ( 1301builder , 1302indent , 1303"sourcePath" , 1304Slang ::StringUtil ::makeStringWithFormat ( 1305"\"%s\"" , 1306sourcePath != nullptr ?sourcePath :"nullptr" )); 1307_writePairNoComma ( 1308builder , 1309indent , 1310"sourceString" , 1311Slang ::StringUtil ::makeStringWithFormat ( 1312"\"%s\"" , 1313sourceString != nullptr ?sourceString :"nullptr" )); 1314 } 1315 } 1316 1317m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1318m_fileStream .flush (); 1319} 1320 1321 1322void JsonConsumer ::IGlobalSession_setSharedLibraryLoader (ObjectID objectId ,ObjectID loaderId ) 1323{ 1324SANITY_CHECK (); 1325Slang ::StringBuilder builder ; 1326int indent = 0 ; 1327 1328 { 1329ScopeWritterForKey scopeWritter ( 1330& builder , 1331& indent , 1332"IGlobalSession::setSharedLibraryLoader" ); 1333 { 1334_writePair ( 1335builder , 1336indent , 1337"this" , 1338Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1339_writePairNoComma ( 1340builder , 1341indent , 1342"loader" , 1343Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,loaderId )); 1344 } 1345 } 1346 1347m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1348m_fileStream .flush (); 1349} 1350 1351 1352void JsonConsumer ::IGlobalSession_getSharedLibraryLoader (ObjectID objectId ,ObjectID outLoaderId ) 1353{ 1354SANITY_CHECK (); 1355Slang ::StringBuilder builder ; 1356int indent = 0 ; 1357 1358 { 1359ScopeWritterForKey scopeWritter ( 1360& builder , 1361& indent , 1362"IGlobalSession::getSharedLibraryLoader" ); 1363 { 1364_writePair ( 1365builder , 1366indent , 1367"this" , 1368Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1369_writePairNoComma ( 1370builder , 1371indent , 1372"retLoader" , 1373Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outLoaderId )); 1374 } 1375 } 1376 1377_writeString (builder ,indent ,"}\n" ); 1378 1379m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1380m_fileStream .flush (); 1381} 1382 1383 1384void JsonConsumer ::IGlobalSession_checkCompileTargetSupport ( 1385ObjectID objectId , 1386SlangCompileTarget target ) 1387{ 1388SANITY_CHECK (); 1389Slang ::StringBuilder builder ; 1390int indent = 0 ; 1391 1392 { 1393ScopeWritterForKey scopeWritter ( 1394& builder , 1395& indent , 1396"IGlobalSession::checkCompileTargetSupport" ); 1397 { 1398_writePair ( 1399builder , 1400indent , 1401"this" , 1402Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1403_writePairNoComma (builder ,indent ,"target" ,SlangCompileTargetToString (target )); 1404 } 1405 } 1406 1407m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1408m_fileStream .flush (); 1409} 1410 1411 1412void JsonConsumer ::IGlobalSession_checkPassThroughSupport ( 1413ObjectID objectId , 1414SlangPassThrough passThrough ) 1415{ 1416SANITY_CHECK (); 1417Slang ::StringBuilder builder ; 1418int indent = 0 ; 1419 1420 { 1421ScopeWritterForKey scopeWritter ( 1422& builder , 1423& indent , 1424"IGlobalSession::checkPassThroughSupport" ); 1425 { 1426_writePair ( 1427builder , 1428indent , 1429"this" , 1430Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1431_writePairNoComma ( 1432builder , 1433indent , 1434"passThrough" , 1435SlangPassThroughToString (passThrough )); 1436 } 1437 } 1438 1439m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1440m_fileStream .flush (); 1441} 1442 1443 1444void JsonConsumer ::IGlobalSession_compileCoreModule ( 1445ObjectID objectId , 1446 slang::CompileCoreModuleFlags flags ) 1447{ 1448SANITY_CHECK (); 1449Slang ::StringBuilder builder ; 1450int indent = 0 ; 1451 1452 { 1453ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::compileCoreModule" ); 1454 { 1455_writePair ( 1456builder , 1457indent , 1458"this" , 1459Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1460_writePairNoComma (builder ,indent ,"flags" ,CompileCoreModuleFlagsToString (flags )); 1461 } 1462 } 1463 1464m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1465m_fileStream .flush (); 1466} 1467 1468 1469void JsonConsumer ::IGlobalSession_loadCoreModule ( 1470ObjectID objectId , 1471const void * coreModule , 1472size_t coreModuleSizeInBytes ) 1473{ 1474SANITY_CHECK (); 1475Slang ::StringBuilder builder ; 1476int indent = 0 ; 1477_writeString (builder ,indent ,"IGlobalSession::loadCoreModule: {\n" ); 1478 1479 { 1480ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::loadCoreModule" ); 1481 { 1482_writePair ( 1483builder , 1484indent , 1485"this" , 1486Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1487_writePair ( 1488builder , 1489indent , 1490"coreModule-Ignore-Data" , 1491Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1492_writePairNoComma ( 1493builder , 1494indent , 1495"coreModuleSizeInBytes" , 1496 (uint32_t )coreModuleSizeInBytes ); 1497 } 1498 } 1499 1500m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1501m_fileStream .flush (); 1502} 1503 1504void JsonConsumer ::IGlobalSession_saveCoreModule ( 1505ObjectID objectId , 1506SlangArchiveType archiveType , 1507ObjectID outBlobId ) 1508{ 1509SANITY_CHECK (); 1510Slang ::StringBuilder builder ; 1511int indent = 0 ; 1512 1513 { 1514ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::saveCoreModule" ); 1515 { 1516_writePair ( 1517builder , 1518indent , 1519"this" , 1520Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1521_writePair (builder ,indent ,"archiveType" ,SlangArchiveTypeToString (archiveType )); 1522_writePairNoComma ( 1523builder , 1524indent , 1525"outBlobId" , 1526Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outBlobId )); 1527 } 1528 } 1529 1530m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1531m_fileStream .flush (); 1532} 1533 1534 1535void JsonConsumer ::IGlobalSession_findCapability (ObjectID objectId ,char const * name ) 1536{ 1537SANITY_CHECK (); 1538Slang ::StringBuilder builder ; 1539int indent = 0 ; 1540 1541 { 1542ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::findCapability" ); 1543 { 1544_writePair ( 1545builder , 1546indent , 1547"this" , 1548Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1549_writePairNoComma ( 1550builder , 1551indent , 1552"name" , 1553Slang ::StringUtil ::makeStringWithFormat ( 1554"\"%s\"" , 1555name != nullptr ?name :"nullptr" )); 1556 } 1557 } 1558 1559m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1560m_fileStream .flush (); 1561} 1562 1563 1564void JsonConsumer ::IGlobalSession_setDownstreamCompilerForTransition ( 1565ObjectID objectId , 1566SlangCompileTarget source , 1567SlangCompileTarget target , 1568SlangPassThrough compiler ) 1569{ 1570SANITY_CHECK (); 1571Slang ::StringBuilder builder ; 1572int indent = 0 ; 1573 1574 { 1575ScopeWritterForKey scopeWritter ( 1576& builder , 1577& indent , 1578"IGlobalSession::setDownstreamCompilerForTransition" ); 1579 { 1580_writePair ( 1581builder , 1582indent , 1583"this" , 1584Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1585_writePair (builder ,indent ,"source" ,SlangCompileTargetToString (source )); 1586_writePair (builder ,indent ,"target" ,SlangCompileTargetToString (target )); 1587_writePairNoComma (builder ,indent ,"compiler" ,SlangPassThroughToString (compiler )); 1588 } 1589 } 1590 1591m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1592m_fileStream .flush (); 1593} 1594 1595 1596void JsonConsumer ::IGlobalSession_getDownstreamCompilerForTransition ( 1597ObjectID objectId , 1598SlangCompileTarget source , 1599SlangCompileTarget target ) 1600{ 1601SANITY_CHECK (); 1602Slang ::StringBuilder builder ; 1603int indent = 0 ; 1604 1605 { 1606ScopeWritterForKey scopeWritter ( 1607& builder , 1608& indent , 1609"IGlobalSession::getDownstreamCompilerForTransition" ); 1610 { 1611_writePair ( 1612builder , 1613indent , 1614"this" , 1615Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1616_writePair (builder ,indent ,"source" ,SlangCompileTargetToString (source )); 1617_writePairNoComma (builder ,indent ,"target" ,SlangCompileTargetToString (target )); 1618 } 1619 } 1620 1621m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1622m_fileStream .flush (); 1623} 1624 1625 1626void JsonConsumer ::IGlobalSession_setSPIRVCoreGrammar (ObjectID objectId ,char const * jsonPath ) 1627{ 1628SANITY_CHECK (); 1629Slang ::StringBuilder builder ; 1630int indent = 0 ; 1631 1632 { 1633ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::setSPIRVCoreGrammar" ); 1634 { 1635_writePair ( 1636builder , 1637indent , 1638"this" , 1639Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1640_writePairNoComma ( 1641builder , 1642indent , 1643"jsonPath" , 1644Slang ::StringUtil ::makeStringWithFormat ( 1645"\"%s\"" , 1646jsonPath != nullptr ?jsonPath :"nullptr" )); 1647 } 1648 } 1649 1650m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1651m_fileStream .flush (); 1652} 1653 1654 1655void JsonConsumer ::IGlobalSession_parseCommandLineArguments ( 1656ObjectID objectId , 1657int argc , 1658const char * const * argv , 1659ObjectID outSessionDescId , 1660ObjectID outAllocationId ) 1661{ 1662SANITY_CHECK (); 1663Slang ::StringBuilder builder ; 1664int indent = 0 ; 1665 1666 { 1667ScopeWritterForKey scopeWritter ( 1668& builder , 1669& indent , 1670"IGlobalSession::parseCommandLineArguments" ); 1671_writePair ( 1672builder , 1673indent , 1674"this" , 1675Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1676_writePair (builder ,indent ,"argc" ,argc ); 1677 1678if (argv ) 1679 { 1680_writeString (builder ,indent ,"argv: {\n" ); 1681ScopeWritterForKey scopeWritteriForArgv (& builder ,& indent ,"argv" ); 1682for (int i = 0 ;i < argc ;i ++ ) 1683 { 1684if (i == (argc - 1 )) 1685_writePairNoComma ( 1686builder , 1687indent , 1688Slang ::StringUtil ::makeStringWithFormat ("[%d]" ,i ), 1689argv [i ]); 1690else 1691_writePair ( 1692builder , 1693indent , 1694Slang ::StringUtil ::makeStringWithFormat ("[%d]" ,i ), 1695argv [i ]); 1696 } 1697 } 1698else 1699 { 1700_writePair (builder ,indent ,"argv" ,"nullptr" ); 1701 } 1702 } 1703 1704m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1705m_fileStream .flush (); 1706} 1707 1708 1709void JsonConsumer ::IGlobalSession_getSessionDescDigest ( 1710ObjectID objectId , 1711 slang::SessionDesc * sessionDesc , 1712ObjectID outBlobId ) 1713{ 1714SANITY_CHECK (); 1715Slang ::StringBuilder builder ; 1716int indent = 0 ; 1717 1718 { 1719ScopeWritterForKey scopeWritter (& builder ,& indent ,"IGlobalSession::getSessionDescDigest" ); 1720_writePair ( 1721builder , 1722indent , 1723"this" , 1724Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1725 1726if (sessionDesc ) 1727 { 1728_writeSessionDescHelper ( 1729builder , 1730indent , 1731* sessionDesc , 1732Slang ::StringUtil ::makeStringWithFormat ("sessionDesc (0x%llX)\n" ,sessionDesc )); 1733 } 1734else 1735 { 1736_writePair (builder ,indent ,"sessionDesc" ,"nullptr" ); 1737 } 1738 1739_writePair ( 1740builder , 1741indent , 1742"outBlob" , 1743Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outBlobId )); 1744 } 1745 1746m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1747m_fileStream .flush (); 1748} 1749 1750// ISession 1751void JsonConsumer ::ISession_getGlobalSession (ObjectID objectId ,ObjectID outGlobalSessionId ) 1752{ 1753SANITY_CHECK (); 1754Slang ::StringBuilder builder ; 1755int indent = 0 ; 1756 1757 { 1758ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::getGlobalSession" ); 1759 { 1760_writePair ( 1761builder , 1762indent , 1763"this" , 1764Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1765_writePairNoComma ( 1766builder , 1767indent , 1768"retGlobalSession" , 1769Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outGlobalSessionId )); 1770 } 1771 } 1772 1773m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1774m_fileStream .flush (); 1775} 1776 1777 1778void JsonConsumer ::ISession_loadModule ( 1779ObjectID objectId , 1780const char * moduleName , 1781ObjectID outDiagnostics , 1782ObjectID outModuleId ) 1783{ 1784SANITY_CHECK (); 1785Slang ::StringBuilder builder ; 1786int indent = 0 ; 1787 1788 { 1789ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::loadModule" ); 1790 { 1791_writePair ( 1792builder , 1793indent , 1794"this" , 1795Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1796_writePair ( 1797builder , 1798indent , 1799"moduleName" , 1800Slang ::StringUtil ::makeStringWithFormat ( 1801"\"%s\"" , 1802moduleName != nullptr ?moduleName :"nullptr" )); 1803_writePair ( 1804builder , 1805indent , 1806"outDiagnostics" , 1807Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnostics )); 1808_writePairNoComma ( 1809builder , 1810indent , 1811"retIModule" , 1812Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outModuleId )); 1813 } 1814 } 1815 1816m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1817m_fileStream .flush (); 1818} 1819 1820void JsonConsumer ::ISession_loadModuleFromIRBlob ( 1821ObjectID objectId , 1822const char * moduleName , 1823const char * path , 1824 slang::IBlob * source , 1825ObjectID outDiagnosticsId , 1826ObjectID outModuleId ) 1827{ 1828SANITY_CHECK (); 1829Slang ::StringBuilder builder ; 1830int indent = 0 ; 1831 1832 { 1833ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::loadModuleFromIRBlob" ); 1834 { 1835_writePair ( 1836builder , 1837indent , 1838"this" , 1839Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1840_writePair ( 1841builder , 1842indent , 1843"moduleName" , 1844Slang ::StringUtil ::makeStringWithFormat ( 1845"\"%s\"" , 1846moduleName != nullptr ?moduleName :"nullptr" )); 1847_writePair ( 1848builder , 1849indent , 1850"path" , 1851Slang ::StringUtil ::makeStringWithFormat ( 1852"\"%s\"" , 1853path != nullptr ?path :"nullptr" )); 1854if (source ) 1855 { 1856void const * bufPtr = source -> getBufferPointer (); 1857size_t bufSize = source -> getBufferSize (); 1858 1859ScopeWritterForKey scopeWritterForSource ( 1860& builder , 1861& indent , 1862Slang ::StringUtil ::makeStringWithFormat ("source (0x%llX): {\n" ,source ), 1863 false); 1864 { 1865_writePair ( 1866builder , 1867indent , 1868"bufferPointer" , 1869Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,bufPtr )); 1870_writePairNoComma (builder ,indent ,"bufferSize" , (uint32_t )bufSize ); 1871 } 1872 } 1873else 1874 { 1875_writePair (builder ,indent ,"source" ,"nullptr" ); 1876 } 1877 1878_writePair ( 1879builder , 1880indent , 1881"outDiagnostics" , 1882Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 1883_writePairNoComma ( 1884builder , 1885indent , 1886"retIModule" , 1887Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outModuleId )); 1888 } 1889 } 1890 1891m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1892m_fileStream .flush (); 1893} 1894 1895 1896void JsonConsumer ::ISession_loadModuleFromSource ( 1897ObjectID objectId , 1898const char * moduleName , 1899const char * path , 1900 slang::IBlob * source , 1901ObjectID outDiagnosticsId , 1902ObjectID outModuleId ) 1903{ 1904SANITY_CHECK (); 1905Slang ::StringBuilder builder ; 1906int indent = 0 ; 1907 1908 { 1909ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::loadModuleFromSource" ); 1910_writePair ( 1911builder , 1912indent , 1913"this" , 1914Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1915_writePair ( 1916builder , 1917indent , 1918"moduleName" , 1919Slang ::StringUtil ::makeStringWithFormat ( 1920"\"%s\"" , 1921moduleName != nullptr ?moduleName :"nullptr" )); 1922_writePair ( 1923builder , 1924indent , 1925"path" , 1926Slang ::StringUtil ::makeStringWithFormat ("\"%s\"" ,path != nullptr ?path :"nullptr" )); 1927if (source ) 1928 { 1929void const * bufPtr = source -> getBufferPointer (); 1930size_t bufSize = source -> getBufferSize (); 1931ScopeWritterForKey scopeWritterForSource ( 1932& builder , 1933& indent , 1934Slang ::StringUtil ::makeStringWithFormat ("source (0x%llX): {\n" ,source ), 1935 false); 1936 { 1937_writePair ( 1938builder , 1939indent , 1940"bufferPointer" , 1941Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,bufPtr )); 1942_writePairNoComma (builder ,indent ,"bufferSize" , (uint32_t )bufSize ); 1943 } 1944 } 1945else 1946 { 1947_writePair (builder ,indent ,"source" ,"nullptr" ); 1948 } 1949 1950_writePair ( 1951builder , 1952indent , 1953"outDiagnostics" , 1954Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 1955_writePairNoComma ( 1956builder , 1957indent , 1958"retIModule" , 1959Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outModuleId )); 1960 } 1961 1962m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 1963m_fileStream .flush (); 1964} 1965 1966 1967void JsonConsumer ::ISession_loadModuleFromSourceString ( 1968ObjectID objectId , 1969const char * moduleName , 1970const char * path , 1971const char * string , 1972ObjectID outDiagnosticsId , 1973ObjectID outModuleId ) 1974{ 1975SANITY_CHECK (); 1976Slang ::StringBuilder builder ; 1977int indent = 0 ; 1978 1979 { 1980ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::loadModuleFromSourceString" ); 1981_writePair ( 1982builder , 1983indent , 1984"this" , 1985Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 1986_writePair ( 1987builder , 1988indent , 1989"moduleName" , 1990Slang ::StringUtil ::makeStringWithFormat ( 1991"\"%s\"" , 1992moduleName != nullptr ?moduleName :"nullptr" )); 1993 1994_writePair ( 1995builder , 1996indent , 1997"path" , 1998Slang ::StringUtil ::makeStringWithFormat ("\"%s\"" ,path != nullptr ?path :"nullptr" )); 1999 2000_writePair ( 2001builder , 2002indent , 2003"string" , 2004Slang ::StringUtil ::makeStringWithFormat ( 2005"\"%s\"" , 2006string != nullptr ?string :"nullptr" )); 2007 2008_writePair ( 2009builder , 2010indent , 2011"outDiagnostics" , 2012Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 2013_writePairNoComma ( 2014builder , 2015indent , 2016"retIModule" , 2017Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outModuleId )); 2018 } 2019 2020m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2021m_fileStream .flush (); 2022} 2023 2024 2025void JsonConsumer ::ISession_createCompositeComponentType ( 2026ObjectID objectId , 2027ObjectID * componentTypeIds , 2028SlangInt componentTypeCount , 2029ObjectID outCompositeComponentTypeId , 2030ObjectID outDiagnosticsId ) 2031{ 2032SANITY_CHECK (); 2033Slang ::StringBuilder builder ; 2034int indent = 0 ; 2035 2036 { 2037ScopeWritterForKey scopeWritter ( 2038& builder , 2039& indent , 2040"ISession::createCompositeComponentType" ); 2041 { 2042_writePair ( 2043builder , 2044indent , 2045"this" , 2046Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2047if (componentTypeCount ) 2048 { 2049ScopeWritterForKey scopeWritterForComponentTypes ( 2050& builder , 2051& indent , 2052"componentTypes" , 2053 false); 2054for (int i = 0 ;i < componentTypeCount ;i ++ ) 2055 { 2056if (i != componentTypeCount - 1 ) 2057 { 2058_writeString ( 2059builder , 2060indent , 2061Slang ::StringUtil ::makeStringWithFormat ( 2062"[%d]: 0x%llX,\n" , 2063i , 2064componentTypeIds [i ])); 2065 } 2066else 2067 { 2068_writeString ( 2069builder , 2070indent , 2071Slang ::StringUtil ::makeStringWithFormat ( 2072"[%d]: 0x%llX\n" , 2073i , 2074componentTypeIds [i ])); 2075 } 2076 } 2077 } 2078else 2079 { 2080_writePair (builder ,indent ,"componentTypes" ,"nullptr" ); 2081 } 2082 } 2083_writePair (builder ,indent ,"componentTypeCount" ,componentTypeCount ); 2084_writePair ( 2085builder , 2086indent , 2087"outCompositeComponentType" , 2088Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outCompositeComponentTypeId )); 2089_writePairNoComma ( 2090builder , 2091indent , 2092"outDiagnostics" , 2093Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 2094 } 2095 2096m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2097m_fileStream .flush (); 2098} 2099 2100 2101void JsonConsumer ::ISession_specializeType ( 2102ObjectID objectId , 2103ObjectID typeId , 2104 slang::SpecializationArg const * specializationArgs , 2105SlangInt specializationArgCount , 2106ObjectID outDiagnosticsId , 2107ObjectID outTypeReflectionId ) 2108{ 2109SANITY_CHECK (); 2110Slang ::StringBuilder builder ; 2111int indent = 0 ; 2112 2113 { 2114ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::specializeType" ); 2115_writePair ( 2116builder , 2117indent , 2118"this" , 2119Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2120_writePair ( 2121builder , 2122indent , 2123"type" , 2124Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,typeId )); 2125 2126if (specializationArgCount ) 2127 { 2128ScopeWritterForKey scopeWritterForArgs (& builder ,& indent ,"specializationArgs" , false); 2129for (int i = 0 ;i < specializationArgCount ;i ++ ) 2130 { 2131ScopeWritterForKey scopeWritterForArg ( 2132& builder , 2133& indent , 2134Slang ::StringUtil ::makeStringWithFormat ("[%d]\n" ,i ), 2135 false); 2136 { 2137_writePair ( 2138builder , 2139indent , 2140"kind" , 2141SpecializationArgKindToString (specializationArgs [i ].kind )); 2142_writePairNoComma ( 2143builder , 2144indent , 2145"type" , 2146Slang ::StringUtil ::makeStringWithFormat ( 2147"0x%llX" , 2148specializationArgs [i ].type )); 2149 } 2150 } 2151 } 2152else 2153 { 2154_writePair (builder ,indent ,"specializationArgs" ,"nullptr" ); 2155 } 2156 2157_writePair (builder ,indent ,"specializationArgCount" ,specializationArgCount ); 2158_writePair (builder ,indent ,"outDiagnostics" ,outDiagnosticsId ); 2159_writePairNoComma (builder ,indent ,"retTypeReflectionId" ,outTypeReflectionId ); 2160 } 2161 2162m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2163m_fileStream .flush (); 2164} 2165 2166void JsonConsumer ::ISession_getTypeLayout ( 2167ObjectID objectId , 2168ObjectID typeId , 2169SlangInt targetIndex , 2170 slang::LayoutRules rules , 2171ObjectID outDiagnosticsId , 2172ObjectID outTypeLayoutReflectionId ) 2173{ 2174SANITY_CHECK (); 2175Slang ::StringBuilder builder ; 2176int indent = 0 ; 2177 2178 { 2179ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::getTypeLayout" ); 2180 { 2181_writePair ( 2182builder , 2183indent , 2184"this" , 2185Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2186_writePair ( 2187builder , 2188indent , 2189"type" , 2190Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,typeId )); 2191_writePair (builder ,indent ,"rules" ,LayoutRulesToString (rules )); 2192_writePair ( 2193builder , 2194indent , 2195"outDiagnostics" , 2196Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 2197_writePairNoComma ( 2198builder , 2199indent , 2200"retTypeReflectionId" , 2201Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outTypeLayoutReflectionId )); 2202 } 2203 } 2204 2205m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2206m_fileStream .flush (); 2207} 2208 2209void JsonConsumer ::ISession_getContainerType ( 2210ObjectID objectId , 2211ObjectID elementTypeId , 2212 slang::ContainerType containerType , 2213ObjectID outDiagnosticsId , 2214ObjectID outTypeReflectionId ) 2215{ 2216SANITY_CHECK (); 2217Slang ::StringBuilder builder ; 2218int indent = 0 ; 2219 2220 { 2221ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::getContainerType" ); 2222_writePair ( 2223builder , 2224indent , 2225"this" , 2226Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2227_writePair ( 2228builder , 2229indent , 2230"elementType" , 2231Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,elementTypeId )); 2232_writePair (builder ,indent ,"containerType" ,ContainerTypeToString (containerType )); 2233_writePair ( 2234builder , 2235indent , 2236"outDiagnosticsId" , 2237Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnosticsId )); 2238_writePairNoComma ( 2239builder , 2240indent , 2241"outTypeReflectionId" , 2242Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outTypeReflectionId )); 2243 } 2244 2245m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2246m_fileStream .flush (); 2247} 2248 2249void JsonConsumer ::ISession_getDynamicType (ObjectID objectId ,ObjectID outTypeReflectionId ) 2250{ 2251SANITY_CHECK (); 2252Slang ::StringBuilder builder ; 2253int indent = 0 ; 2254 2255 { 2256ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::getDynamicType" ); 2257_writePair ( 2258builder , 2259indent , 2260"this" , 2261Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2262_writePairNoComma ( 2263builder , 2264indent , 2265"outTypeReflectionId" , 2266Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outTypeReflectionId )); 2267 } 2268 2269m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2270m_fileStream .flush (); 2271} 2272 2273void JsonConsumer ::ISession_getTypeRTTIMangledName ( 2274ObjectID objectId , 2275ObjectID typeId , 2276ObjectID outNameBlobId ) 2277{ 2278SANITY_CHECK (); 2279Slang ::StringBuilder builder ; 2280int indent = 0 ; 2281 2282 { 2283ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::getTypeRTTIMangledName" ); 2284_writePair ( 2285builder , 2286indent , 2287"this" , 2288Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2289_writePair ( 2290builder , 2291indent , 2292"type" , 2293Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,typeId )); 2294_writePairNoComma ( 2295builder , 2296indent , 2297"outNameBlobId" , 2298Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outNameBlobId )); 2299 } 2300 2301m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2302m_fileStream .flush (); 2303} 2304 2305void JsonConsumer ::ISession_getTypeConformanceWitnessMangledName ( 2306ObjectID objectId , 2307ObjectID typeId , 2308ObjectID interfaceTypeId , 2309ObjectID outNameBlobId ) 2310{ 2311SANITY_CHECK (); 2312Slang ::StringBuilder builder ; 2313int indent = 0 ; 2314 2315 { 2316ScopeWritterForKey scopeWritter ( 2317& builder , 2318& indent , 2319"ISession::getTypeConformanceWitnessMangledName" ); 2320_writePair ( 2321builder , 2322indent , 2323"this" , 2324Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2325_writePair ( 2326builder , 2327indent , 2328"type" , 2329Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,typeId )); 2330_writePair ( 2331builder , 2332indent , 2333"interfaceType" , 2334Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,interfaceTypeId )); 2335_writePairNoComma ( 2336builder , 2337indent , 2338"outNameBlobId" , 2339Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outNameBlobId )); 2340 } 2341 2342m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2343m_fileStream .flush (); 2344} 2345 2346 2347void JsonConsumer ::ISession_getTypeConformanceWitnessSequentialID ( 2348ObjectID objectId , 2349ObjectID typeId , 2350ObjectID interfaceTypeId , 2351uint32_t outId ) 2352{ 2353SANITY_CHECK (); 2354Slang ::StringBuilder builder ; 2355int indent = 0 ; 2356 2357 { 2358ScopeWritterForKey scopeWritter ( 2359& builder , 2360& indent , 2361"ISession::getTypeConformanceWitnessSequentialID" ); 2362_writePair ( 2363builder , 2364indent , 2365"this" , 2366Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2367_writePairNoComma ( 2368builder , 2369indent , 2370"type" , 2371Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,typeId )); 2372 } 2373 2374m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2375m_fileStream .flush (); 2376} 2377 2378void JsonConsumer ::ISession_createTypeConformanceComponentType ( 2379ObjectID objectId , 2380ObjectID typeId , 2381ObjectID interfaceTypeId , 2382ObjectID outConformanceId , 2383SlangInt conformanceIdOverride , 2384ObjectID outDiagnosticsId ) 2385{ 2386SANITY_CHECK (); 2387Slang ::StringBuilder builder ; 2388int indent = 0 ; 2389 2390 { 2391ScopeWritterForKey scopeWritter ( 2392& builder , 2393& indent , 2394"ISession::createTypeConformanceComponentType" ); 2395_writePair ( 2396builder , 2397indent , 2398"this" , 2399Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2400_writePair ( 2401builder , 2402indent , 2403"type" , 2404Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,typeId )); 2405_writePair ( 2406builder , 2407indent , 2408"interfaceTypeId" , 2409Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,interfaceTypeId )); 2410_writePair ( 2411builder , 2412indent , 2413"outConformanceId" , 2414Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outConformanceId )); 2415_writePair (builder ,indent ,"conformanceIdOverride" ,conformanceIdOverride ); 2416_writePairNoComma ( 2417builder , 2418indent , 2419"outDiagnosticsId" , 2420Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,typeId )); 2421 } 2422 2423m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2424m_fileStream .flush (); 2425} 2426 2427 2428void JsonConsumer ::ISession_createCompileRequest (ObjectID objectId ,ObjectID outCompileRequestId ) 2429{ 2430SANITY_CHECK (); 2431Slang ::StringBuilder builder ; 2432int indent = 0 ; 2433 2434 { 2435ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::createCompileRequest" ); 2436 { 2437_writePair ( 2438builder , 2439indent , 2440"this" , 2441Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2442_writePair (builder ,indent ,"outCompileRequest" ,outCompileRequestId ); 2443 } 2444 } 2445 2446m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2447m_fileStream .flush (); 2448} 2449 2450 2451void JsonConsumer ::ISession_getLoadedModule (ObjectID objectId ,SlangInt index ,ObjectID outModuleId ) 2452{ 2453SANITY_CHECK (); 2454Slang ::StringBuilder builder ; 2455int indent = 0 ; 2456 2457 { 2458ScopeWritterForKey scopeWritter (& builder ,& indent ,"ISession::getLoadedModule" ); 2459 { 2460_writePair ( 2461builder , 2462indent , 2463"this" , 2464Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2465_writePair (builder ,indent ,"index" ,index ); 2466_writePairNoComma ( 2467builder , 2468indent , 2469"retModule" , 2470Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outModuleId )); 2471 } 2472 } 2473 2474m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2475m_fileStream .flush (); 2476} 2477 2478 2479// IModule 2480void JsonConsumer ::IModule_findEntryPointByName ( 2481ObjectID objectId , 2482char const * name , 2483ObjectID outEntryPointId ) 2484{ 2485SANITY_CHECK (); 2486Slang ::StringBuilder builder ; 2487int indent = 0 ; 2488 2489 { 2490ScopeWritterForKey scopeWritter (& builder ,& indent ,"IModule::findEntryPointByName" ); 2491 { 2492_writePair ( 2493builder , 2494indent , 2495"this" , 2496Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2497_writePair ( 2498builder , 2499indent , 2500"name" , 2501Slang ::StringUtil ::makeStringWithFormat ( 2502"\"%s\"" , 2503name != nullptr ?name :"nullptr" )); 2504 2505_writePairNoComma ( 2506builder , 2507indent , 2508"outEntryPoint" , 2509Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outEntryPointId )); 2510 } 2511 } 2512 2513m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2514m_fileStream .flush (); 2515} 2516 2517 2518void JsonConsumer ::IModule_getDefinedEntryPoint ( 2519ObjectID objectId , 2520SlangInt32 index , 2521ObjectID outEntryPointId ) 2522{ 2523SANITY_CHECK (); 2524Slang ::StringBuilder builder ; 2525int indent = 0 ; 2526 2527 { 2528ScopeWritterForKey scopeWritter (& builder ,& indent ,"IModule::getDefinedEntryPoint" ); 2529 { 2530_writePair ( 2531builder , 2532indent , 2533"this" , 2534Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2535_writePair (builder ,indent ,"index" ,index ); 2536_writePairNoComma ( 2537builder , 2538indent , 2539"outEntryPoint" , 2540Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outEntryPointId )); 2541 } 2542 } 2543 2544m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2545m_fileStream .flush (); 2546} 2547 2548 2549void JsonConsumer ::IModule_serialize (ObjectID objectId ,ObjectID outSerializedBlobId ) 2550{ 2551SANITY_CHECK (); 2552Slang ::StringBuilder builder ; 2553int indent = 0 ; 2554 2555 { 2556ScopeWritterForKey scopeWritter (& builder ,& indent ,"IModule::serialize" ); 2557 { 2558_writePair ( 2559builder , 2560indent , 2561"this" , 2562Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2563_writePairNoComma (builder ,indent ,"outSerializedBlob" ,outSerializedBlobId ); 2564 } 2565 } 2566 2567m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2568m_fileStream .flush (); 2569} 2570 2571 2572void JsonConsumer ::IModule_writeToFile (ObjectID objectId ,char const * fileName ) 2573{ 2574SANITY_CHECK (); 2575Slang ::StringBuilder builder ; 2576int indent = 0 ; 2577 2578 { 2579ScopeWritterForKey scopeWritter (& builder ,& indent ,"IModule::writeToFile" ); 2580 { 2581_writePair ( 2582builder , 2583indent , 2584"this" , 2585Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2586_writePairNoComma ( 2587builder , 2588indent , 2589"fileName" , 2590Slang ::StringUtil ::makeStringWithFormat ( 2591"\"%s\"" , 2592fileName != nullptr ?fileName :"nullptr" )); 2593 } 2594 } 2595 2596m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2597m_fileStream .flush (); 2598} 2599 2600 2601void JsonConsumer ::IModule_findAndCheckEntryPoint ( 2602ObjectID objectId , 2603char const * name , 2604SlangStage stage , 2605ObjectID outEntryPointId , 2606ObjectID outDiagnostics ) 2607{ 2608SANITY_CHECK (); 2609Slang ::StringBuilder builder ; 2610int indent = 0 ; 2611 2612 { 2613ScopeWritterForKey scopeWritter (& builder ,& indent ,"IModule::findAndCheckEntryPoint" ); 2614 { 2615_writePair ( 2616builder , 2617indent , 2618"this" , 2619Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,objectId )); 2620_writePair ( 2621builder , 2622indent , 2623"name" , 2624Slang ::StringUtil ::makeStringWithFormat ( 2625"\"%s\"" , 2626name != nullptr ?name :"nullptr" )); 2627_writePair (builder ,indent ,"stage" ,SlangStageToString (stage )); 2628_writePair ( 2629builder , 2630indent , 2631"outEntryPoint" , 2632Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outEntryPointId )); 2633_writePairNoComma ( 2634builder , 2635indent , 2636"outDiagnostics" , 2637Slang ::StringUtil ::makeStringWithFormat ("0x%llX" ,outDiagnostics )); 2638 } 2639 } 2640 2641m_fileStream .write (builder .produceString ().begin (),builder .produceString ().getLength ()); 2642m_fileStream .flush (); 2643} 2644 2645void JsonConsumer ::IModule_getSession (ObjectID objectId ,ObjectID outSessionId ) 2646{ 2647SANITY_CHECK (); 2648m_moduleHelper .getSession (objectId ,outSessionId ); 2649} 2650 2651void JsonConsumer ::IModule_getLayout ( 2652ObjectID objectId , 2653SlangInt targetIndex , 2654ObjectID outDiagnosticsId , 2655ObjectID retProgramLayoutId ) 2656{ 2657SANITY_CHECK (); 2658m_moduleHelper .getLayout (objectId ,targetIndex ,outDiagnosticsId ,retProgramLayoutId ); 2659} 2660 2661 2662void JsonConsumer ::IModule_getEntryPointCode ( 2663ObjectID objectId , 2664SlangInt entryPointIndex , 2665SlangInt targetIndex , 2666ObjectID outCodeId , 2667ObjectID outDiagnosticsId ) 2668{ 2669SANITY_CHECK (); 2670m_moduleHelper 2671 .getEntryPointCode (objectId ,entryPointIndex ,targetIndex ,outCodeId ,outDiagnosticsId ); 2672} 2673 2674 2675void JsonConsumer ::IModule_getTargetCode ( 2676ObjectID objectId , 2677SlangInt targetIndex , 2678ObjectID outCodeId , 2679ObjectID outDiagnosticsId ) 2680{ 2681SANITY_CHECK (); 2682m_moduleHelper .getTargetCode (objectId ,targetIndex ,outCodeId ,outDiagnosticsId ); 2683} 2684 2685 2686void JsonConsumer ::IModule_getResultAsFileSystem ( 2687ObjectID objectId , 2688SlangInt entryPointIndex , 2689SlangInt targetIndex , 2690ObjectID outFileSystemId ) 2691{ 2692SANITY_CHECK (); 2693m_moduleHelper .getResultAsFileSystem (objectId ,entryPointIndex ,targetIndex ,outFileSystemId ); 2694} 2695 2696 2697void JsonConsumer ::IModule_getEntryPointHash ( 2698ObjectID objectId , 2699SlangInt entryPointIndex , 2700SlangInt targetIndex , 2701ObjectID outHashId ) 2702{ 2703SANITY_CHECK (); 2704m_moduleHelper .getEntryPointHash (objectId ,entryPointIndex ,targetIndex ,outHashId ); 2705} 2706 2707 2708void JsonConsumer ::IModule_specialize ( 2709ObjectID objectId , 2710 slang::SpecializationArg const * specializationArgs , 2711SlangInt specializationArgCount , 2712ObjectID outSpecializedComponentTypeId , 2713ObjectID outDiagnosticsId ) 2714{ 2715SANITY_CHECK (); 2716m_moduleHelper .specialize ( 2717objectId , 2718specializationArgs , 2719specializationArgCount , 2720outSpecializedComponentTypeId , 2721outDiagnosticsId ); 2722} 2723 2724 2725void JsonConsumer ::IModule_link ( 2726ObjectID objectId , 2727ObjectID outLinkedComponentTypeId , 2728ObjectID outDiagnosticsId ) 2729{ 2730SANITY_CHECK (); 2731m_moduleHelper .link (objectId ,outLinkedComponentTypeId ,outDiagnosticsId ); 2732} 2733 2734 2735void JsonConsumer ::IModule_getEntryPointHostCallable ( 2736ObjectID objectId , 2737int entryPointIndex , 2738int targetIndex , 2739ObjectID outSharedLibraryId , 2740ObjectID outDiagnosticsId ) 2741{ 2742SANITY_CHECK (); 2743m_moduleHelper .getEntryPointHostCallable ( 2744objectId , 2745entryPointIndex , 2746targetIndex , 2747outSharedLibraryId , 2748outDiagnosticsId ); 2749} 2750 2751 2752void JsonConsumer ::IModule_renameEntryPoint ( 2753ObjectID objectId , 2754const char * newName , 2755ObjectID outEntryPointId ) 2756{ 2757SANITY_CHECK (); 2758m_moduleHelper .renameEntryPoint (objectId ,newName ,outEntryPointId ); 2759} 2760 2761 2762void JsonConsumer ::IModule_linkWithOptions ( 2763ObjectID objectId , 2764ObjectID outLinkedComponentTypeId , 2765uint32_t compilerOptionEntryCount , 2766 slang::CompilerOptionEntry * compilerOptionEntries , 2767ObjectID outDiagnosticsId ) 2768{ 2769SANITY_CHECK (); 2770m_moduleHelper .linkWithOptions ( 2771objectId , 2772outLinkedComponentTypeId , 2773compilerOptionEntryCount , 2774compilerOptionEntries , 2775outDiagnosticsId ); 2776} 2777 2778// IEntryPoint 2779void JsonConsumer ::IEntryPoint_getSession (ObjectID objectId ,ObjectID outSessionId ) 2780{ 2781SANITY_CHECK (); 2782m_entryPointHelper .getSession (objectId ,outSessionId ); 2783} 2784 2785 2786void JsonConsumer ::IEntryPoint_getLayout ( 2787ObjectID objectId , 2788SlangInt targetIndex , 2789ObjectID outDiagnosticsId , 2790ObjectID retProgramLayoutId ) 2791{ 2792SANITY_CHECK (); 2793m_entryPointHelper .getLayout (objectId ,targetIndex ,outDiagnosticsId ,retProgramLayoutId ); 2794} 2795 2796 2797void JsonConsumer ::IEntryPoint_getEntryPointCode ( 2798ObjectID objectId , 2799SlangInt entryPointIndex , 2800SlangInt targetIndex , 2801ObjectID outCodeId , 2802ObjectID outDiagnosticsId ) 2803{ 2804SANITY_CHECK (); 2805m_entryPointHelper 2806 .getEntryPointCode (objectId ,entryPointIndex ,targetIndex ,outCodeId ,outDiagnosticsId ); 2807} 2808 2809 2810void JsonConsumer ::IEntryPoint_getTargetCode ( 2811ObjectID objectId , 2812SlangInt targetIndex , 2813ObjectID outCodeId , 2814ObjectID outDiagnosticsId ) 2815{ 2816SANITY_CHECK (); 2817m_entryPointHelper .getTargetCode (objectId ,targetIndex ,outCodeId ,outDiagnosticsId ); 2818} 2819 2820 2821void JsonConsumer ::IEntryPoint_getResultAsFileSystem ( 2822ObjectID objectId , 2823SlangInt entryPointIndex , 2824SlangInt targetIndex , 2825ObjectID outFileSystem ) 2826{ 2827SANITY_CHECK (); 2828m_entryPointHelper .getResultAsFileSystem (objectId ,entryPointIndex ,targetIndex ,outFileSystem ); 2829} 2830 2831 2832void JsonConsumer ::IEntryPoint_getEntryPointHash ( 2833ObjectID objectId , 2834SlangInt entryPointIndex , 2835SlangInt targetIndex , 2836ObjectID outHashId ) 2837{ 2838SANITY_CHECK (); 2839m_entryPointHelper .getEntryPointHash (objectId ,entryPointIndex ,targetIndex ,outHashId ); 2840} 2841 2842 2843void JsonConsumer ::IEntryPoint_specialize ( 2844ObjectID objectId , 2845 slang::SpecializationArg const * specializationArgs , 2846SlangInt specializationArgCount , 2847ObjectID outSpecializedComponentTypeId , 2848ObjectID outDiagnosticsId ) 2849{ 2850SANITY_CHECK (); 2851m_entryPointHelper .specialize ( 2852objectId , 2853specializationArgs , 2854specializationArgCount , 2855outSpecializedComponentTypeId , 2856outDiagnosticsId ); 2857} 2858 2859 2860void JsonConsumer ::IEntryPoint_link ( 2861ObjectID objectId , 2862ObjectID outLinkedComponentTypeId , 2863ObjectID outDiagnosticsId ) 2864{ 2865SANITY_CHECK (); 2866m_entryPointHelper .link (objectId ,outLinkedComponentTypeId ,outDiagnosticsId ); 2867} 2868 2869 2870void JsonConsumer ::IEntryPoint_getEntryPointHostCallable ( 2871ObjectID objectId , 2872int entryPointIndex , 2873int targetIndex , 2874ObjectID outSharedLibrary , 2875ObjectID outDiagnostics ) 2876{ 2877SANITY_CHECK (); 2878m_entryPointHelper .getEntryPointHostCallable ( 2879objectId , 2880entryPointIndex , 2881targetIndex , 2882outSharedLibrary , 2883outDiagnostics ); 2884} 2885 2886 2887void JsonConsumer ::IEntryPoint_renameEntryPoint ( 2888ObjectID objectId , 2889const char * newName , 2890ObjectID outEntryPointId ) 2891{ 2892SANITY_CHECK (); 2893m_entryPointHelper .renameEntryPoint (objectId ,newName ,outEntryPointId ); 2894} 2895 2896 2897void JsonConsumer ::IEntryPoint_linkWithOptions ( 2898ObjectID objectId , 2899ObjectID outLinkedComponentTypeId , 2900uint32_t compilerOptionEntryCount , 2901 slang::CompilerOptionEntry * compilerOptionEntries , 2902ObjectID outDiagnosticsId ) 2903{ 2904SANITY_CHECK (); 2905m_entryPointHelper .linkWithOptions ( 2906objectId , 2907outLinkedComponentTypeId , 2908compilerOptionEntryCount , 2909compilerOptionEntries , 2910outDiagnosticsId ); 2911} 2912 2913 2914// ICompositeComponentType 2915void JsonConsumer ::ICompositeComponentType_getSession (ObjectID objectId ,ObjectID outSessionId ) 2916{ 2917SANITY_CHECK (); 2918m_compositeComponentTypeHelper .getSession (objectId ,outSessionId ); 2919} 2920 2921 2922void JsonConsumer ::ICompositeComponentType_getLayout ( 2923ObjectID objectId , 2924SlangInt targetIndex , 2925ObjectID outDiagnosticsId , 2926ObjectID retProgramLayoutId ) 2927{ 2928SANITY_CHECK (); 2929m_compositeComponentTypeHelper 2930 .getLayout (objectId ,targetIndex ,outDiagnosticsId ,retProgramLayoutId ); 2931} 2932 2933 2934void JsonConsumer ::ICompositeComponentType_getEntryPointCode ( 2935ObjectID objectId , 2936SlangInt entryPointIndex , 2937SlangInt targetIndex , 2938ObjectID outCodeId , 2939ObjectID outDiagnosticsId ) 2940{ 2941SANITY_CHECK (); 2942m_compositeComponentTypeHelper 2943 .getEntryPointCode (objectId ,entryPointIndex ,targetIndex ,outCodeId ,outDiagnosticsId ); 2944} 2945 2946 2947void JsonConsumer ::ICompositeComponentType_getTargetCode ( 2948ObjectID objectId , 2949SlangInt targetIndex , 2950ObjectID outCodeId , 2951ObjectID outDiagnosticsId ) 2952{ 2953SANITY_CHECK (); 2954m_compositeComponentTypeHelper 2955 .getTargetCode (objectId ,targetIndex ,outCodeId ,outDiagnosticsId ); 2956} 2957 2958 2959void JsonConsumer ::ICompositeComponentType_getResultAsFileSystem ( 2960ObjectID objectId , 2961SlangInt entryPointIndex , 2962SlangInt targetIndex , 2963ObjectID outFileSystem ) 2964{ 2965SANITY_CHECK (); 2966m_compositeComponentTypeHelper 2967 .getResultAsFileSystem (objectId ,entryPointIndex ,targetIndex ,outFileSystem ); 2968} 2969 2970 2971void JsonConsumer ::ICompositeComponentType_getEntryPointHash ( 2972ObjectID objectId , 2973SlangInt entryPointIndex , 2974SlangInt targetIndex , 2975ObjectID outHashId ) 2976{ 2977SANITY_CHECK (); 2978m_compositeComponentTypeHelper 2979 .getEntryPointHash (objectId ,entryPointIndex ,targetIndex ,outHashId ); 2980} 2981 2982 2983void JsonConsumer ::ICompositeComponentType_specialize ( 2984ObjectID objectId , 2985 slang::SpecializationArg const * specializationArgs , 2986SlangInt specializationArgCount , 2987ObjectID outSpecializedComponentTypeId , 2988ObjectID outDiagnosticsId ) 2989{ 2990SANITY_CHECK (); 2991m_compositeComponentTypeHelper .specialize ( 2992objectId , 2993specializationArgs , 2994specializationArgCount , 2995outSpecializedComponentTypeId , 2996outDiagnosticsId ); 2997} 2998 2999 3000void JsonConsumer ::ICompositeComponentType_link ( 3001ObjectID objectId , 3002ObjectID outLinkedComponentTypeId , 3003ObjectID outDiagnosticsId ) 3004{ 3005SANITY_CHECK (); 3006m_compositeComponentTypeHelper .link (objectId ,outLinkedComponentTypeId ,outDiagnosticsId ); 3007} 3008 3009 3010void JsonConsumer ::ICompositeComponentType_getEntryPointHostCallable ( 3011ObjectID objectId , 3012int entryPointIndex , 3013int targetIndex , 3014ObjectID outSharedLibrary , 3015ObjectID outDiagnostics ) 3016{ 3017SANITY_CHECK (); 3018m_compositeComponentTypeHelper .getEntryPointHostCallable ( 3019objectId , 3020entryPointIndex , 3021targetIndex , 3022outSharedLibrary , 3023outDiagnostics ); 3024} 3025 3026 3027void JsonConsumer ::ICompositeComponentType_renameEntryPoint ( 3028ObjectID objectId , 3029const char * newName , 3030ObjectID outEntryPointId ) 3031{ 3032SANITY_CHECK (); 3033m_compositeComponentTypeHelper .renameEntryPoint (objectId ,newName ,outEntryPointId ); 3034} 3035 3036 3037void JsonConsumer ::ICompositeComponentType_linkWithOptions ( 3038ObjectID objectId , 3039ObjectID outLinkedComponentTypeId , 3040uint32_t compilerOptionEntryCount , 3041 slang::CompilerOptionEntry * compilerOptionEntries , 3042ObjectID outDiagnosticsId ) 3043{ 3044SANITY_CHECK (); 3045m_compositeComponentTypeHelper .linkWithOptions ( 3046objectId , 3047outLinkedComponentTypeId , 3048compilerOptionEntryCount , 3049compilerOptionEntries , 3050outDiagnosticsId ); 3051} 3052 3053void JsonConsumer ::ICompositeComponentType_queryInterface ( 3054ObjectID objectId , 3055const SlangUUID & guid , 3056ObjectID outInterfaceId ) 3057{ 3058SANITY_CHECK (); 3059m_compositeComponentTypeHelper .queryInterface (objectId ,guid ,outInterfaceId ); 3060} 3061 3062// ITypeConformance 3063void JsonConsumer ::ITypeConformance_getSession (ObjectID objectId ,ObjectID outSessionId ) 3064{ 3065SANITY_CHECK (); 3066m_typeConformanceHelper .getSession (objectId ,outSessionId ); 3067} 3068 3069 3070void JsonConsumer ::ITypeConformance_getLayout ( 3071ObjectID objectId , 3072SlangInt targetIndex , 3073ObjectID outDiagnosticsId , 3074ObjectID retProgramLayoutId ) 3075{ 3076SANITY_CHECK (); 3077m_typeConformanceHelper .getLayout (objectId ,targetIndex ,outDiagnosticsId ,retProgramLayoutId ); 3078} 3079 3080 3081void JsonConsumer ::ITypeConformance_getEntryPointCode ( 3082ObjectID objectId , 3083SlangInt entryPointIndex , 3084SlangInt targetIndex , 3085ObjectID outCodeId , 3086ObjectID outDiagnosticsId ) 3087{ 3088SANITY_CHECK (); 3089m_typeConformanceHelper 3090 .getEntryPointCode (objectId ,entryPointIndex ,targetIndex ,outCodeId ,outDiagnosticsId ); 3091} 3092 3093 3094void JsonConsumer ::ITypeConformance_getTargetCode ( 3095ObjectID objectId , 3096SlangInt targetIndex , 3097ObjectID outCodeId , 3098ObjectID outDiagnosticsId ) 3099{ 3100SANITY_CHECK (); 3101m_typeConformanceHelper .getTargetCode (objectId ,targetIndex ,outCodeId ,outDiagnosticsId ); 3102} 3103 3104 3105void JsonConsumer ::ITypeConformance_getResultAsFileSystem ( 3106ObjectID objectId , 3107SlangInt entryPointIndex , 3108SlangInt targetIndex , 3109ObjectID outFileSystem ) 3110{ 3111SANITY_CHECK (); 3112m_typeConformanceHelper 3113 .getResultAsFileSystem (objectId ,entryPointIndex ,targetIndex ,outFileSystem ); 3114} 3115 3116 3117void JsonConsumer ::ITypeConformance_getEntryPointHash ( 3118ObjectID objectId , 3119SlangInt entryPointIndex , 3120SlangInt targetIndex , 3121ObjectID outHashId ) 3122{ 3123SANITY_CHECK (); 3124m_typeConformanceHelper .getEntryPointHash (objectId ,entryPointIndex ,targetIndex ,outHashId ); 3125} 3126 3127 3128void JsonConsumer ::ITypeConformance_specialize ( 3129ObjectID objectId , 3130 slang::SpecializationArg const * specializationArgs , 3131SlangInt specializationArgCount , 3132ObjectID outSpecializedComponentTypeId , 3133ObjectID outDiagnosticsId ) 3134{ 3135SANITY_CHECK (); 3136m_typeConformanceHelper .specialize ( 3137objectId , 3138specializationArgs , 3139specializationArgCount , 3140outSpecializedComponentTypeId , 3141outDiagnosticsId ); 3142} 3143 3144 3145void JsonConsumer ::ITypeConformance_link ( 3146ObjectID objectId , 3147ObjectID outLinkedComponentTypeId , 3148ObjectID outDiagnosticsId ) 3149{ 3150SANITY_CHECK (); 3151m_typeConformanceHelper .link (objectId ,outLinkedComponentTypeId ,outDiagnosticsId ); 3152} 3153 3154 3155void JsonConsumer ::ITypeConformance_getEntryPointHostCallable ( 3156ObjectID objectId , 3157int entryPointIndex , 3158int targetIndex , 3159ObjectID outSharedLibrary , 3160ObjectID outDiagnostics ) 3161{ 3162SANITY_CHECK (); 3163m_typeConformanceHelper .getEntryPointHostCallable ( 3164objectId , 3165entryPointIndex , 3166targetIndex , 3167outSharedLibrary , 3168outDiagnostics ); 3169} 3170 3171 3172void JsonConsumer ::ITypeConformance_renameEntryPoint ( 3173ObjectID objectId , 3174const char * newName , 3175ObjectID outEntryPointId ) 3176{ 3177SANITY_CHECK (); 3178m_typeConformanceHelper .renameEntryPoint (objectId ,newName ,outEntryPointId ); 3179} 3180 3181 3182void JsonConsumer ::ITypeConformance_linkWithOptions ( 3183ObjectID objectId , 3184ObjectID outLinkedComponentTypeId , 3185uint32_t compilerOptionEntryCount , 3186 slang::CompilerOptionEntry * compilerOptionEntries , 3187ObjectID outDiagnosticsId ) 3188{ 3189SANITY_CHECK (); 3190m_typeConformanceHelper .linkWithOptions ( 3191objectId , 3192outLinkedComponentTypeId , 3193compilerOptionEntryCount , 3194compilerOptionEntries , 3195outDiagnosticsId ); 3196} 3197 3198void JsonConsumer ::IComponentType2_getTargetCompileResult ( 3199ObjectID objectId , 3200SlangInt targetIndex , 3201ObjectID outCompileResultId , 3202ObjectID outDiagnosticsId ) 3203{ 3204SANITY_CHECK (); 3205m_componentType2Helper 3206 .getTargetCompileResult (objectId ,targetIndex ,outCompileResultId ,outDiagnosticsId ); 3207} 3208 3209void JsonConsumer ::IComponentType2_getEntryPointCompileResult ( 3210ObjectID objectId , 3211SlangInt entryPointIndex , 3212SlangInt targetIndex , 3213ObjectID outCompileResultId , 3214ObjectID outDiagnosticsId ) 3215{ 3216SANITY_CHECK (); 3217m_componentType2Helper .getEntryPointCompileResult ( 3218objectId , 3219entryPointIndex , 3220targetIndex , 3221outCompileResultId , 3222outDiagnosticsId ); 3223} 3224};// namespace SlangRecord