--- parser3/src/main/compile.tab.C 2003/02/04 09:46:50 1.81.2.8 +++ parser3/src/main/compile.tab.C 2003/03/20 08:11:13 1.81.2.13.2.3 @@ -43,7 +43,7 @@ Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://design.ru/paf) - $Id: compile.tab.C,v 1.81.2.8 2003/02/04 09:46:50 paf Exp $ + $Id: compile.tab.C,v 1.81.2.13.2.3 2003/03/20 08:11:13 paf Exp $ */ /** @@ -82,10 +82,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 #ifndef YYSTYPE #define YYSTYPE int @@ -1036,7 +1036,7 @@ case 1: { MethodPtr method(new Method(main_method_name, Method::CT_ANY, 0, 0, /*min, max numbered_params_count*/ - ArrayStringPtr(0)/*param_names*/, ArrayStringPtr(0)/*local_names*/, + Array0/*param_names*/, Array0/*local_names*/, yyvsp[0]/*parser_code*/, 0/*native_code*/)); PC.cclass->add_method(main_method_name, method); ; @@ -1044,7 +1044,7 @@ case 1: case 8: #line 131 "compile.y" { - StringPtr command=LA2S(*yyvsp[-2]); + const String& command=LA2S(*yyvsp[-2]); YYSTYPE strings_code=yyvsp[0]; if(strings_code->count()<1*2) { strcpy(PC.error, "@"); @@ -1061,13 +1061,13 @@ case 8: } if(strings_code->count()==1*2) { // new class' name - StringPtr name=LA2S(*strings_code); + const String& name=LA2S(*strings_code); // creating the class - VStateless_classPtr cclass(new VClass); - PC.cclass=cclass.get(); - PC.cclass->set_name(name); + VStateless_classPtr cclass(new VClass); cclass->set_name(name); // append to request's classes PC.request->classes().put(name, cclass); + // new methods go to that class + PC.cclass=cclass.get(); } else { strcpy(PC.error, "@"CLASS_NAME" must contain sole name"); YYERROR; @@ -1083,7 +1083,7 @@ case 8: YYERROR; } if(strings_code->count()==1*2) { - StringPtr base_name=LA2S(*strings_code); + const String& base_name=LA2S(*strings_code); 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()) { @@ -1122,20 +1122,20 @@ case 12: case 16: #line 208 "compile.y" { - StringPtr name=LA2S(*yyvsp[-5]); + const String& name=LA2S(*yyvsp[-5]); YYSTYPE params_names_code=yyvsp[-4]; - ArrayStringPtr params_names; + ArrayString& params_names; if(int size=params_names_code->count()) { - params_names=ArrayStringPtr(new ArrayString); + params_names=ArrayString* (new ArrayString); for(int i=0; icount()) { - locals_names=ArrayStringPtr(new ArrayString); + locals_names=ArrayString* (new ArrayString); for(int i=0; i xxx... // OP_VALUE+string+OP_GET_ELEMENT+... -> OP_WITH_SELF+... if(first_name && *first_name==SELF_ELEMENT_NAME) { @@ -1224,7 +1224,7 @@ case 50: { yyval=N(); ArrayOperationPtr diving_code=yyvsp[0]; - StringPtr first_name=LA2S(*diving_code); + const String& first_name=LA2S(*diving_code); // $self.xxx... -> $xxx... // OP_VALUE+string+OP_GET_ELEMENT+... -> OP_WITH_SELF+... if(first_name && *first_name==SELF_ELEMENT_NAME) { @@ -1281,7 +1281,7 @@ case 62: #line 355 "compile.y" { yyval=N(); - OA(*yyval, OP_OBJECT_POOL, yyvsp[0]); /* stack: empty write context */ + OA(*yyval, OP_OBJECT_yyvsp[0]); /* stack: empty write context */ /* some code that writes to that context */ /* context=pop; stack: context.value() */ ; @@ -1427,14 +1427,14 @@ case 105: P(*code, *yyvsp[0]); } yyval=N(); - OA(*yyval, OP_STRING_POOL, code); + OA(*yyval, OP_STRING_code); ; break;} case 106: #line 478 "compile.y" { yyval=N(); - OA(*yyval, OP_OBJECT_POOL, yyvsp[-1]); /* stack: empty write context */ + OA(*yyval, OP_OBJECT_yyvsp[-1]); /* stack: empty write context */ /* some code that writes to that context */ /* context=pop; stack: context.value() */ ; @@ -1648,7 +1648,7 @@ case 157: #line 574 "compile.y" { yyval=N(); - OA(*yyval, OP_STRING_POOL, yyvsp[0]); /* stack: empty write context */ + OA(*yyval, OP_STRING_yyvsp[0]); /* stack: empty write context */ /* some code that writes to that context */ /* context=pop; stack: context.get_string() */ ; @@ -2607,7 +2607,7 @@ break2: // create STRING value: array of OP_VALUE+vstring *lvalp=VL(ValuePtr(new VString(PC.string))); // new pieces storage - PC.string=StringPtr(new String); + PC.string=String* (new String); // make current result be pending for next call, return STRING for now PC.pending_state=result; result=STRING; }