MCPcopy Create free account
hub / github.com/carbonengine/trinity / GetMethodType

Method GetMethodType

shadercompiler/Type.cpp:183–450  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

181}
182
183bool Type::GetMethodType( ASTNode* methodCall, Type& returnType ) const
184{
185 if( symbol )
186 {
187 return false;
188 }
189 const InlineString& method = methodCall->GetToken()->stringValue;
190 switch( builtInType )
191 {
192 case OP_TEXTURE2D:
193 case OP_TEXTURE2DARRAY:
194 if( method == MakeInlineString( "Gather" ) ||
195 method == MakeInlineString( "GatherRed" ) ||
196 method == MakeInlineString( "GatherGreen" ) ||
197 method == MakeInlineString( "GatherBlue" ) ||
198 method == MakeInlineString( "GatherAlpha" ) )
199 {
200 if( templateParameter )
201 {
202 returnType = *templateParameter;
203 }
204 else
205 {
206 returnType.FromTokenType( OP_FLOAT );
207 }
208 returnType.width = 4;
209 return true;
210 }
211 if( method == MakeInlineString( "GatherCmp" ) ||
212 method == MakeInlineString( "GatherCmpRed" ) ||
213 method == MakeInlineString( "GatherCmpGreen" ) ||
214 method == MakeInlineString( "GatherCmpBlue" ) ||
215 method == MakeInlineString( "GatherCmpAlpha" ) )
216 {
217 returnType.FromTokenType( OP_FLOAT );
218 returnType.width = 4;
219 return true;
220 }
221 case OP_TEXTURE1D:
222 case OP_TEXTURE3D:
223 case OP_TEXTURECUBE:
224 case OP_TEXTURE1DARRAY:
225 case OP_TEXTURE3DARRAY:
226 case OP_TEXTURECUBEARRAY:
227 if( method == MakeInlineString( "CalculateLevelOfDetail" ) )
228 {
229 returnType.FromTokenType( OP_FLOAT );
230 return true;
231 }
232 if( method == MakeInlineString( "CalculateLevelOfDetailUnclamped" ) )
233 {
234 returnType.FromTokenType( OP_FLOAT );
235 return true;
236 }
237 if( method == MakeInlineString( "GetDimensions" ) )
238 {
239 returnType.FromTokenType( OP_VOID );
240 return true;

Callers

nothing calls this directly

Calls 3

MakeInlineStringFunction · 0.85
GetTokenMethod · 0.80
FromTokenTypeMethod · 0.45

Tested by

no test coverage detected