| 181 | } |
| 182 | |
| 183 | bool 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; |
nothing calls this directly
no test coverage detected