From 55ba3eaf8977d9c917bd44d61d650f371a70536d Mon Sep 17 00:00:00 2001 From: Christoph Kubisch Date: Sat, 13 Apr 2019 22:18:16 +0200 Subject: [PATCH 1/7] introduce new --dump-builtin-symbols command line add corresponding EShMsgBuiltinSymbolTable TSymbol::dump functions have option to do "complete" print bugfix in TType::getCompleteString, structure can be null for block --- StandAlone/StandAlone.cpp | 6 ++ glslang/Include/Types.h | 2 +- glslang/MachineIndependent/ShaderLang.cpp | 14 +++++ glslang/MachineIndependent/SymbolTable.cpp | 65 ++++++++++++++++++---- glslang/MachineIndependent/SymbolTable.h | 13 +++-- glslang/Public/ShaderLang.h | 1 + 6 files changed, 82 insertions(+), 19 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index bb37a840eb..278c52eb00 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -162,6 +162,7 @@ const char* shaderStageName = nullptr; const char* variableName = nullptr; bool HlslEnable16BitTypes = false; bool HlslDX9compatible = false; +bool DumpBuiltinSymbols = false; std::vector IncludeDirectoryList; // Source environment @@ -494,6 +495,8 @@ void ProcessArguments(std::vector>& workItem Error("--client expects vulkan100 or opengl100"); } bumpArg(); + } else if (lowerword == "dump-builtin-symbols") { + DumpBuiltinSymbols = true; } else if (lowerword == "entry-point") { entryPointName = argv[1]; if (argc <= 1) @@ -833,6 +836,8 @@ void SetMessageOptions(EShMessages& messages) messages = (EShMessages)(messages | EShMsgHlslLegalization); if (HlslDX9compatible) messages = (EShMessages)(messages | EShMsgHlslDX9Compatible); + if (DumpBuiltinSymbols) + messages = (EShMessages)(messages | EShMsgBuiltinSymbolTable); } // @@ -1520,6 +1525,7 @@ void usage() " --auto-map-locations | --aml automatically locate input/output lacking\n" " 'location' (fragile, not cross stage)\n" " --client {vulkan|opengl} see -V and -G\n" + " --dump-builtin-symbols prints builint symbol table prior each stage\n" " -dumpfullversion | -dumpversion print bare major.minor.patchlevel\n" " --flatten-uniform-arrays | --fua flatten uniform texture/sampler arrays to\n" " scalars\n" diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index d0d9b604a3..90341dcb27 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -2018,7 +2018,7 @@ class TType { } // Add struct/block members - if (isStruct()) { + if (isStruct() && structure) { appendStr("{"); for (size_t i = 0; i < structure->size(); ++i) { if (! (*structure)[i].type->hiddenMember()) { diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index adfe5344a1..e3d89ef930 100755 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -377,6 +377,8 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS infoSink, commonTable, symbolTables); #endif + + return true; } @@ -474,6 +476,14 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp glslang::ReleaseGlobalLock(); } +// Function to Print all builtins +void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable) +{ + infoSink.debug << "BuiltinSymbolTable {\n"; + symbolTable.dump(infoSink, true); + infoSink.debug << "}\n"; +} + // Return true if the shader was correctly specified for version/profile/stage. bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNotFirst, int defaultVersion, EShSource source, int& version, EProfile& profile, const SpvVersion& spvVersion) @@ -905,6 +915,10 @@ bool ProcessDeferred( return false; } + if (messages & EShMsgBuiltinSymbolTable) { + DumpBuiltinSymbolTable(compiler->infoSink, *symbolTable); + } + // // Now we can process the full shader under proper symbols and rules. // diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index d8d68468be..d20f78e4ab 100755 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -176,37 +176,78 @@ void TType::buildMangledName(TString& mangledName) const // Dump functions. // -void TVariable::dump(TInfoSink& infoSink) const +void TSymbol::dumpExtensions(TInfoSink &infoSink) const { - infoSink.debug << getName().c_str() << ": " << type.getStorageQualifierString() << " " << type.getBasicTypeString(); - if (type.isArray()) { - infoSink.debug << "[0]"; + int numExtensions = getNumExtensions(); + if (numExtensions) + { + infoSink.debug << " <"; + for (int i = 0; i < numExtensions; i++) + { + infoSink.debug << getExtensions()[i] << ","; + } + infoSink.debug << ">"; } +} + +void TVariable::dump(TInfoSink &infoSink, bool complete) const +{ + if (complete) + { + infoSink.debug << getName().c_str() << ": " << type.getCompleteString(); + dumpExtensions(infoSink); + } + else { + infoSink.debug << getName().c_str() << ": " << type.getStorageQualifierString() << " " + << type.getBasicTypeString(); + if (type.isArray()) + { + infoSink.debug << "[0]"; + } + } + infoSink.debug << "\n"; } -void TFunction::dump(TInfoSink& infoSink) const +void TFunction::dump(TInfoSink &infoSink, bool complete) const { - infoSink.debug << getName().c_str() << ": " << returnType.getBasicTypeString() << " " << getMangledName().c_str() << "\n"; + if (complete) + { + infoSink.debug << getName().c_str() << ": " << returnType.getCompleteString() << " " << getName().c_str() << "("; + int numParams = getParamCount(); + for (int i = 0; i < numParams; i++){ + const TParameter& param = parameters[i]; + infoSink.debug << param.type->getCompleteString() << " " << (param.name ? param.name->c_str() : "") << (i < numParams-1 ? "," : ""); + } + infoSink.debug << ")"; + dumpExtensions(infoSink); + } else + { + infoSink.debug << getName().c_str() << ": " << returnType.getBasicTypeString() << " " + << getMangledName().c_str() << "n"; + } + + infoSink.debug << "\n"; } -void TAnonMember::dump(TInfoSink& TInfoSink) const +void TAnonMember::dump(TInfoSink &TInfoSink, bool complete) const { - TInfoSink.debug << "anonymous member " << getMemberNumber() << " of " << getAnonContainer().getName().c_str() << "\n"; + TInfoSink.debug << "anonymous member " << getMemberNumber() << " of " << getAnonContainer().getName().c_str() + << "\n"; } -void TSymbolTableLevel::dump(TInfoSink &infoSink) const +void TSymbolTableLevel::dump(TInfoSink &infoSink, bool complete) const { tLevel::const_iterator it; for (it = level.begin(); it != level.end(); ++it) - (*it).second->dump(infoSink); + (*it).second->dump(infoSink, complete); } -void TSymbolTable::dump(TInfoSink &infoSink) const +void TSymbolTable::dump(TInfoSink &infoSink, bool complete) const { for (int level = currentLevel(); level >= 0; --level) { infoSink.debug << "LEVEL " << level << "\n"; - table[level]->dump(infoSink); + table[level]->dump(infoSink, complete); } } diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index f9c1903475..0381f6e6e3 100755 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -116,7 +116,8 @@ class TSymbol { } virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual const char** getExtensions() const { return extensions->data(); } - virtual void dump(TInfoSink &infoSink) const = 0; + virtual void dump(TInfoSink &infoSink, bool pretty = false) const = 0; + void dumpExtensions(TInfoSink &infoSink) const; virtual bool isReadOnly() const { return ! writable; } virtual void makeReadOnly() { writable = false; } @@ -192,7 +193,7 @@ class TVariable : public TSymbol { } virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); } - virtual void dump(TInfoSink &infoSink) const; + virtual void dump(TInfoSink &infoSink, bool complete = false) const; protected: explicit TVariable(const TVariable&); @@ -313,7 +314,7 @@ class TFunction : public TSymbol { virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; } virtual const TParameter& operator[](int i) const { return parameters[i]; } - virtual void dump(TInfoSink &infoSink) const override; + virtual void dump(TInfoSink &infoSink, bool complete = false) const override; protected: explicit TFunction(const TFunction&); @@ -373,7 +374,7 @@ class TAnonMember : public TSymbol { virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); } virtual int getAnonId() const { return anonId; } - virtual void dump(TInfoSink &infoSink) const override; + virtual void dump(TInfoSink &infoSink, bool complete = false) const override; protected: explicit TAnonMember(const TAnonMember&); @@ -541,7 +542,7 @@ class TSymbolTableLevel { void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); - void dump(TInfoSink &infoSink) const; + void dump(TInfoSink &infoSink, bool complete = false) const; TSymbolTableLevel* clone() const; void readOnly(); @@ -842,7 +843,7 @@ class TSymbolTable { } int getMaxSymbolId() { return uniqueId; } - void dump(TInfoSink &infoSink) const; + void dump(TInfoSink &infoSink, bool complete = false) const; void copyTable(const TSymbolTable& copyOf); void setPreviousDefaultPrecisions(TPrecisionQualifier *p) { table[currentLevel()]->setPreviousDefaultPrecisions(p); } diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 0c2556976d..d6b0bc9d55 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -234,6 +234,7 @@ enum EShMessages { EShMsgHlslEnable16BitTypes = (1 << 11), // enable use of 16-bit types in SPIR-V for HLSL EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (right now only for samplers) + EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table }; // From 412ff6ea6a9a3d3bff2e5560769350ec0174dcdc Mon Sep 17 00:00:00 2001 From: Christoph Kubisch Date: Sat, 13 Apr 2019 22:57:33 +0200 Subject: [PATCH 2/7] minor naming cleanup --- StandAlone/StandAlone.cpp | 2 +- glslang/MachineIndependent/SymbolTable.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 278c52eb00..b7c4387718 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1525,7 +1525,7 @@ void usage() " --auto-map-locations | --aml automatically locate input/output lacking\n" " 'location' (fragile, not cross stage)\n" " --client {vulkan|opengl} see -V and -G\n" - " --dump-builtin-symbols prints builint symbol table prior each stage\n" + " --dump-builtin-symbols prints builtin symbol table prior each compile\n" " -dumpfullversion | -dumpversion print bare major.minor.patchlevel\n" " --flatten-uniform-arrays | --fua flatten uniform texture/sampler arrays to\n" " scalars\n" diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 0381f6e6e3..591858ca3c 100755 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -116,7 +116,7 @@ class TSymbol { } virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual const char** getExtensions() const { return extensions->data(); } - virtual void dump(TInfoSink &infoSink, bool pretty = false) const = 0; + virtual void dump(TInfoSink &infoSink, bool complete = false) const = 0; void dumpExtensions(TInfoSink &infoSink) const; virtual bool isReadOnly() const { return ! writable; } From b84a52049269ca0902f0e4f70053c869fbe8f182 Mon Sep 17 00:00:00 2001 From: Christoph Kubisch Date: Mon, 15 Apr 2019 13:37:12 +0200 Subject: [PATCH 3/7] minor improvements to formating --- glslang/MachineIndependent/ShaderLang.cpp | 5 +++-- glslang/MachineIndependent/SymbolTable.cpp | 15 +++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index e3d89ef930..6f9db0195c 100755 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -480,7 +480,9 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable) { infoSink.debug << "BuiltinSymbolTable {\n"; + symbolTable.dump(infoSink, true); + infoSink.debug << "}\n"; } @@ -915,9 +917,8 @@ bool ProcessDeferred( return false; } - if (messages & EShMsgBuiltinSymbolTable) { + if (messages & EShMsgBuiltinSymbolTable) DumpBuiltinSymbolTable(compiler->infoSink, *symbolTable); - } // // Now we can process the full shader under proper symbols and rules. diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index d20f78e4ab..6e721ea687 100755 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -196,8 +196,8 @@ void TVariable::dump(TInfoSink &infoSink, bool complete) const { infoSink.debug << getName().c_str() << ": " << type.getCompleteString(); dumpExtensions(infoSink); - } - else { + } else + { infoSink.debug << getName().c_str() << ": " << type.getStorageQualifierString() << " " << type.getBasicTypeString(); if (type.isArray()) @@ -213,11 +213,14 @@ void TFunction::dump(TInfoSink &infoSink, bool complete) const { if (complete) { - infoSink.debug << getName().c_str() << ": " << returnType.getCompleteString() << " " << getName().c_str() << "("; + infoSink.debug << getName().c_str() << ": " << returnType.getCompleteString() << " " << getName().c_str() + << "("; int numParams = getParamCount(); - for (int i = 0; i < numParams; i++){ - const TParameter& param = parameters[i]; - infoSink.debug << param.type->getCompleteString() << " " << (param.name ? param.name->c_str() : "") << (i < numParams-1 ? "," : ""); + for (int i = 0; i < numParams; i++) + { + const TParameter ¶m = parameters[i]; + infoSink.debug << param.type->getCompleteString() << " " + << (param.name ? param.name->c_str() : "") << (i < numParams - 1 ? "," : ""); } infoSink.debug << ")"; dumpExtensions(infoSink); From 8a0e12a10704dc2affb241817874317bdef335d1 Mon Sep 17 00:00:00 2001 From: Christoph Kubisch Date: Tue, 16 Apr 2019 09:50:48 +0200 Subject: [PATCH 4/7] TType::getCompleteString insert optional structure name --- glslang/Include/Types.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 90341dcb27..9b71801e51 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -2019,6 +2019,11 @@ class TType { // Add struct/block members if (isStruct() && structure) { + if (typeName) { + appendStr(" "); + appendStr(typeName->c_str()); + appendStr(" "); + } appendStr("{"); for (size_t i = 0; i < structure->size(); ++i) { if (! (*structure)[i].type->hiddenMember()) { From 4b1dfc56b120c3635f840661781a24cdafb91760 Mon Sep 17 00:00:00 2001 From: Christoph Kubisch Date: Tue, 16 Apr 2019 10:00:28 +0200 Subject: [PATCH 5/7] improve formating --- glslang/MachineIndependent/SymbolTable.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 6e721ea687..556d5fcc62 100755 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -179,31 +179,28 @@ void TType::buildMangledName(TString& mangledName) const void TSymbol::dumpExtensions(TInfoSink &infoSink) const { int numExtensions = getNumExtensions(); - if (numExtensions) - { + if (numExtensions) { infoSink.debug << " <"; + for (int i = 0; i < numExtensions; i++) - { infoSink.debug << getExtensions()[i] << ","; - } + infoSink.debug << ">"; } } void TVariable::dump(TInfoSink &infoSink, bool complete) const { - if (complete) - { + if (complete) { infoSink.debug << getName().c_str() << ": " << type.getCompleteString(); dumpExtensions(infoSink); } else { infoSink.debug << getName().c_str() << ": " << type.getStorageQualifierString() << " " << type.getBasicTypeString(); + if (type.isArray()) - { infoSink.debug << "[0]"; - } } infoSink.debug << "\n"; @@ -211,17 +208,17 @@ void TVariable::dump(TInfoSink &infoSink, bool complete) const void TFunction::dump(TInfoSink &infoSink, bool complete) const { - if (complete) - { + if (complete) { infoSink.debug << getName().c_str() << ": " << returnType.getCompleteString() << " " << getName().c_str() << "("; + int numParams = getParamCount(); - for (int i = 0; i < numParams; i++) - { + for (int i = 0; i < numParams; i++) { const TParameter ¶m = parameters[i]; infoSink.debug << param.type->getCompleteString() << " " << (param.name ? param.name->c_str() : "") << (i < numParams - 1 ? "," : ""); } + infoSink.debug << ")"; dumpExtensions(infoSink); } else From aa4e5277817aa0fb04215a32ac6725465a4b2b27 Mon Sep 17 00:00:00 2001 From: Christoph Kubisch Date: Tue, 16 Apr 2019 13:28:49 +0200 Subject: [PATCH 6/7] revert typeName from getCompleteString() (breaks tests), add to function dump instead --- glslang/Include/Types.h | 5 ----- glslang/MachineIndependent/SymbolTable.cpp | 3 ++- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 9b71801e51..90341dcb27 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -2019,11 +2019,6 @@ class TType { // Add struct/block members if (isStruct() && structure) { - if (typeName) { - appendStr(" "); - appendStr(typeName->c_str()); - appendStr(" "); - } appendStr("{"); for (size_t i = 0; i < structure->size(); ++i) { if (! (*structure)[i].type->hiddenMember()) { diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 556d5fcc62..d0b6ecdee7 100755 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -216,7 +216,8 @@ void TFunction::dump(TInfoSink &infoSink, bool complete) const for (int i = 0; i < numParams; i++) { const TParameter ¶m = parameters[i]; infoSink.debug << param.type->getCompleteString() << " " - << (param.name ? param.name->c_str() : "") << (i < numParams - 1 ? "," : ""); + << (param.type->isStruct() ? "of " + param.type->getTypeName() + " " : "") + << (param.name ? *param.name : "") << (i < numParams - 1 ? "," : ""); } infoSink.debug << ")"; From 83318018e6037c49b7785d210b4648c17d747c87 Mon Sep 17 00:00:00 2001 From: Christoph Kubisch Date: Wed, 17 Apr 2019 10:49:53 +0200 Subject: [PATCH 7/7] improve formating --- glslang/MachineIndependent/SymbolTable.cpp | 18 ++++++++---------- glslang/MachineIndependent/SymbolTable.h | 14 +++++++------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index d0b6ecdee7..c0a02e68a7 100755 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -176,7 +176,7 @@ void TType::buildMangledName(TString& mangledName) const // Dump functions. // -void TSymbol::dumpExtensions(TInfoSink &infoSink) const +void TSymbol::dumpExtensions(TInfoSink& infoSink) const { int numExtensions = getNumExtensions(); if (numExtensions) { @@ -189,13 +189,12 @@ void TSymbol::dumpExtensions(TInfoSink &infoSink) const } } -void TVariable::dump(TInfoSink &infoSink, bool complete) const +void TVariable::dump(TInfoSink& infoSink, bool complete) const { if (complete) { infoSink.debug << getName().c_str() << ": " << type.getCompleteString(); dumpExtensions(infoSink); - } else - { + } else { infoSink.debug << getName().c_str() << ": " << type.getStorageQualifierString() << " " << type.getBasicTypeString(); @@ -206,7 +205,7 @@ void TVariable::dump(TInfoSink &infoSink, bool complete) const infoSink.debug << "\n"; } -void TFunction::dump(TInfoSink &infoSink, bool complete) const +void TFunction::dump(TInfoSink& infoSink, bool complete) const { if (complete) { infoSink.debug << getName().c_str() << ": " << returnType.getCompleteString() << " " << getName().c_str() @@ -222,8 +221,7 @@ void TFunction::dump(TInfoSink &infoSink, bool complete) const infoSink.debug << ")"; dumpExtensions(infoSink); - } else - { + } else { infoSink.debug << getName().c_str() << ": " << returnType.getBasicTypeString() << " " << getMangledName().c_str() << "n"; } @@ -231,20 +229,20 @@ void TFunction::dump(TInfoSink &infoSink, bool complete) const infoSink.debug << "\n"; } -void TAnonMember::dump(TInfoSink &TInfoSink, bool complete) const +void TAnonMember::dump(TInfoSink& TInfoSink, bool complete) const { TInfoSink.debug << "anonymous member " << getMemberNumber() << " of " << getAnonContainer().getName().c_str() << "\n"; } -void TSymbolTableLevel::dump(TInfoSink &infoSink, bool complete) const +void TSymbolTableLevel::dump(TInfoSink& infoSink, bool complete) const { tLevel::const_iterator it; for (it = level.begin(); it != level.end(); ++it) (*it).second->dump(infoSink, complete); } -void TSymbolTable::dump(TInfoSink &infoSink, bool complete) const +void TSymbolTable::dump(TInfoSink& infoSink, bool complete) const { for (int level = currentLevel(); level >= 0; --level) { infoSink.debug << "LEVEL " << level << "\n"; diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 591858ca3c..f3873cff02 100755 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -116,8 +116,8 @@ class TSymbol { } virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual const char** getExtensions() const { return extensions->data(); } - virtual void dump(TInfoSink &infoSink, bool complete = false) const = 0; - void dumpExtensions(TInfoSink &infoSink) const; + virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0; + void dumpExtensions(TInfoSink& infoSink) const; virtual bool isReadOnly() const { return ! writable; } virtual void makeReadOnly() { writable = false; } @@ -193,7 +193,7 @@ class TVariable : public TSymbol { } virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); } - virtual void dump(TInfoSink &infoSink, bool complete = false) const; + virtual void dump(TInfoSink& infoSink, bool complete = false) const; protected: explicit TVariable(const TVariable&); @@ -314,7 +314,7 @@ class TFunction : public TSymbol { virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; } virtual const TParameter& operator[](int i) const { return parameters[i]; } - virtual void dump(TInfoSink &infoSink, bool complete = false) const override; + virtual void dump(TInfoSink& infoSink, bool complete = false) const override; protected: explicit TFunction(const TFunction&); @@ -374,7 +374,7 @@ class TAnonMember : public TSymbol { virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); } virtual int getAnonId() const { return anonId; } - virtual void dump(TInfoSink &infoSink, bool complete = false) const override; + virtual void dump(TInfoSink& infoSink, bool complete = false) const override; protected: explicit TAnonMember(const TAnonMember&); @@ -542,7 +542,7 @@ class TSymbolTableLevel { void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); - void dump(TInfoSink &infoSink, bool complete = false) const; + void dump(TInfoSink& infoSink, bool complete = false) const; TSymbolTableLevel* clone() const; void readOnly(); @@ -843,7 +843,7 @@ class TSymbolTable { } int getMaxSymbolId() { return uniqueId; } - void dump(TInfoSink &infoSink, bool complete = false) const; + void dump(TInfoSink& infoSink, bool complete = false) const; void copyTable(const TSymbolTable& copyOf); void setPreviousDefaultPrecisions(TPrecisionQualifier *p) { table[currentLevel()]->setPreviousDefaultPrecisions(p); }