--- parser3/src/main/compile.y 2003/01/31 12:34:34 1.204.2.3 +++ parser3/src/main/compile.y 2003/03/12 12:04:24 1.204.2.8 @@ -5,7 +5,7 @@ Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://design.ru/paf) - $Id: compile.y,v 1.204.2.3 2003/01/31 12:34:34 paf Exp $ + $Id: compile.y,v 1.204.2.8 2003/03/12 12:04:24 paf Exp $ */ /** @@ -44,10 +44,10 @@ static int yylex(YYSTYPE *lvalp, void *p // local convinient inplace typecast & var +#undef PC #define PC (*(parse_control *)pc) +#undef POOL #define POOL (*PC.pool) -#undef NEW -#define NEW new(POOL) #ifndef DOXYGEN %} @@ -148,17 +148,18 @@ control_method: '@' STRING '\n' // new class' name StringPtr name=LA2S(*strings_code); // creating the class - PC.cclass=VStateless_classPtr(new VClass); + VStateless_classPtr cclass(new VClass); + PC.cclass=cclass.get(); PC.cclass->set_name(name); // append to request's classes - PC.request->classes().put(name, PC.cclass); + PC.request->classes().put(name, cclass); } else { strcpy(PC.error, "@"CLASS_NAME" must contain sole name"); YYERROR; } } else if(*command==USE_CONTROL_METHOD_NAME) { for(int i=0; icount(); i+=2) - PC.request->use_file(PC.request->main_class, LA2S(*strings_code, i)); + PC.request->use_file(*PC.request->main_class, LA2S(*strings_code, i)); } else if(*command==BASE_NAME) { if(PC.cclass->base_class()) { // already changed from default? strcpy(PC.error, "class already have a base '"); @@ -171,7 +172,7 @@ control_method: '@' STRING '\n' if(ValuePtr base_class_value=PC.request->classes().get(base_name)) { // @CLASS == @BASE sanity check if(VStateless_class *base_class=base_class_value->get_class()) { - if(PC.cclass.get()==base_class) { + if(PC.cclass==base_class) { strcpy(PC.error, "@"CLASS_NAME" equals @"BASE_NAME); YYERROR; } @@ -1320,5 +1321,5 @@ static int real_yyerror(parse_control *p static void yyprint(FILE *file, int type, YYSTYPE value) { if(type==STRING) - fprintf(file, " \"%s\"", LA2S(*value)->cstr()); + fprintf(file, " \"%s\"", LA2S(*value)->cstr().get()); }