void ParseEnumStruct(Type * type) { Var * var; UInt16 column_count = 0; EnterBlockWithStop(TOKEN_EQUAL); // TOKEN_EQUAL while (TOK != TOKEN_ERROR && !NextIs(TOKEN_BLOCK_END)) { if (TOK == TOKEN_ID) { ParseAssign(INSTR_VAR, SUBMODE_EMPTY, type); NextIs(TOKEN_COMMA); NextIs(TOKEN_EOL); } else { SyntaxError("Expected variable name"); } } // Convert parsed fields to constant arrays FOR_EACH_LOCAL(type->owner, var) var->type = TypeArray(type, var->type); // var->type->step = TypeSize(var->type->element); var->mode = INSTR_INT; column_count++; NEXT_LOCAL NextIs(TOKEN_HORIZ_RULE); ParseEnumItems(type, column_count); }
CqFuncDef::CqFuncDef( TqInt Type, const char* strName, const char* strVMName, const char* strParams, CqParseNode* pDef, CqParseNode* pArgs ) : m_Type( Type ), m_strName( strName ), m_strVMName( strVMName ), m_strParamTypes( strParams ), m_fLocal( true ), m_pDef( pDef ), m_pArgs( pArgs ), m_fVarying( false ) { // Build the type array. TypeArray(); if ( m_pDef ) m_pDef->Optimise(); }