============ idCompiler::ParseFunction parse a function type ============ */
| 2105 | ============ |
| 2106 | */ |
| 2107 | idTypeDef *idCompiler::ParseFunction( idTypeDef *returnType, const char *name ) { |
| 2108 | idTypeDef newtype( ev_function, NULL, name, type_function.Size(), returnType ); |
| 2109 | idTypeDef *type; |
| 2110 | |
| 2111 | if ( scope->Type() != ev_namespace ) { |
| 2112 | // create self pointer |
| 2113 | newtype.AddFunctionParm( scope->TypeDef(), "self" ); |
| 2114 | } |
| 2115 | |
| 2116 | if ( !CheckToken( ")" ) ) { |
| 2117 | idStr parmName; |
| 2118 | do { |
| 2119 | type = ParseType(); |
| 2120 | ParseName( parmName ); |
| 2121 | newtype.AddFunctionParm( type, parmName ); |
| 2122 | } while( CheckToken( "," ) ); |
| 2123 | |
| 2124 | ExpectToken( ")" ); |
| 2125 | } |
| 2126 | |
| 2127 | return gameLocal.program.GetType( newtype, true ); |
| 2128 | } |
| 2129 | |
| 2130 | /* |
| 2131 | ================ |
nothing calls this directly
no test coverage detected