MCPcopy Create free account
hub / github.com/alecazam/kram / FindGlobalDeclaration

Method FindGlobalDeclaration

hlslparser/src/HLSLTree.cpp:99–161  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

97}
98
99HLSLDeclaration *HLSLTree::FindGlobalDeclaration(const char *name, HLSLBuffer **buffer_out /*=NULL*/)
100{
101 HLSLStatement *statement = m_root->statement;
102 while (statement != NULL) {
103 if (statement->nodeType == HLSLNodeType_Declaration) {
104 HLSLDeclaration *declaration = (HLSLDeclaration *)statement;
105 if (String_Equal(name, declaration->name)) {
106 if (buffer_out) *buffer_out = NULL;
107 return declaration;
108 }
109 }
110 else if (statement->nodeType == HLSLNodeType_Buffer) {
111 HLSLBuffer *buffer = (HLSLBuffer *)statement;
112
113 // This searches the fields to find the buffer,
114 // since cbuffer/tbuffer represent globals.
115 if (buffer->IsGlobalFields()) {
116 HLSLDeclaration *field = buffer->field;
117 while (field != NULL) {
118 ASSERT(field->nodeType == HLSLNodeType_Declaration);
119 if (String_Equal(name, field->name)) {
120 if (buffer_out) *buffer_out = buffer;
121 return field;
122 }
123 field = (HLSLDeclaration *)field->nextStatement;
124 }
125 }
126 else {
127 if (String_Equal(name, buffer->name)) {
128 if (buffer_out) *buffer_out = buffer;
129 return NULL;
130 }
131
132 /* This isn't same type...
133
134 // Note: should pass buffers, but buffer/texture
135 // and cbuffer fields can be global to entire shader.
136
137 // find struct first
138 const HLSLStruct* bufferStruct = buffer->bufferStruct;
139
140 // new search those for the fields
141 HLSLStructField* field = bufferStruct->field;
142 while (field != NULL)
143 {
144 ASSERT(field->nodeType == HLSLNodeType_Declaration);
145 if (String_Equal(name, field->name))
146 {
147 if (buffer_out) *buffer_out = buffer;
148 return field;
149 }
150 field = field->nextField;
151 }
152 */
153 }
154 }
155
156 statement = statement->nextStatement;

Callers 2

OutputExpressionMethod · 0.80

Calls 2

String_EqualFunction · 0.85
IsGlobalFieldsMethod · 0.80

Tested by

no test coverage detected