CcNode_t * CcNode(const CcNodeType_t * type, int line) { CcNode_t * self = (CcNode_t *)CcObject(&type->base); self->line = line; return self; }
CcString_t * CcString(const char * value) { CcString_t * self = (CcString_t *)CcObject(&StringType); self->value = CcStrdup(value); return self; }
void CcGlobals_NewSection(CcGlobals_t * self, const char * secname, CcsPosition_t * pos) { CcSection_t * section = (CcSection_t *) CcArrayList_New(&self->sections, CcObject(&SectionType)); section->name = CcStrdup(secname); section->pos = pos; }
int CcSyntax_SyncError(CcSyntax_t * self, const CcSymbol_t * sym) { CcSyntaxError_t * error = (CcSyntaxError_t *) CcArrayList_New(&self->errors, CcObject(&CcSyntaxErrorType)); error->type = cet_sync; error->sym = sym; return error->base.index; }
static CcObject_t * CcXmlData(const char * tokenName, const CcsToken_t * token) { CcXmlData_t * self = (CcXmlData_t *)CcObject(&XmlDataType); self->tokenName = CcUnescape(tokenName); self->name = CcUnescape(token->val); memcpy(&self->loc, &token->loc, sizeof(token->loc)); return (CcObject_t *)self; }
CcXmlSpec_t * CcXmlSpec(CcGlobals_t * globals) { CcXmlSpec_t * self = (CcXmlSpec_t *)CcObject(&XmlSpecType); self->globals = globals; self->caseSensitive = TRUE; CcBitArray(&self->options, XSO_SIZE); CcArrayList(&self->Tags); CcArrayList(&self->Attrs); CcArrayList(&self->PInstructions); return self; }
static void CcSyntax_Errors(CcSyntax_t * self) { CcArrayListIter_t iter; const CcSymbol_t * sym; CcSyntaxError_t * error; const CcArrayList_t * terminals = &self->globals->symtab.terminals; for (sym = (const CcSymbol_t *)CcArrayList_FirstC(terminals, &iter); sym; sym = (const CcSymbol_t *)CcArrayList_NextC(terminals, &iter)) { error = (CcSyntaxError_t *) CcArrayList_New(&self->errors, CcObject(&CcSyntaxErrorType)); error->type = cet_t; error->sym = sym; } }
CcState_t * CcState(void) { return (CcState_t *)CcObject(&StateType); }