--- parser3/src/classes/op.C 2006/04/09 13:38:46 1.164 +++ parser3/src/classes/op.C 2007/04/23 10:30:09 1.166 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_OP_C="$Date: 2006/04/09 13:38:46 $"; +static const char * const IDENT_OP_C="$Date: 2007/04/23 10:30:09 $"; #include "classes.h" #include "pa_vmethod_frame.h" @@ -163,7 +163,7 @@ static void _process(Request& r, MethodP { VStateless_class *target_class=target_self->get_last_derived_class(); if(!target_class) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "no target class"); @@ -180,7 +180,7 @@ static void _process(Request& r, MethodP Value& voptions=params.as_no_junction(options_index, "options must not be code"); options=voptions.get_hash(); if(!options) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "options must be hash"); } @@ -204,7 +204,7 @@ static void _process(Request& r, MethodP } if(valid_options!=options->count()) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "called with invalid option"); } @@ -252,7 +252,7 @@ static void _while(Request& r, MethodPar bool need_delim=false; while(true) { if(++endless_loop_count>=MAX_LOOPS) // endless loop? - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "endless loop detected"); @@ -284,7 +284,7 @@ static void _use(Request& r, MethodParam static void set_skip(Request& r, Request::Skip askip) { void* data=r.classes_conf.get(cycle_data_name); if(!data) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "without cycle"); @@ -310,7 +310,7 @@ static void _for(Request& r, MethodParam Value* delim_maybe_code=params.count()>4?¶ms[4]:0; if(to-from>=MAX_LOOPS) // too long loop? - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "endless loop detected"); @@ -341,7 +341,7 @@ static void _eval(Request& r, MethodPara Value& expr=params.as_junction(0, "need expression"); // evaluate expresion Value& value_result=r.process_to_value(expr, - true/*don't intercept string*/).as_expr_result(); + false/*don't intercept string*/).as_expr_result(); if(params.count()>1) { Value& fmt=params.as_no_junction(1, "fmt must not be code"); r.write_no_lang(String(format(value_result.as_double(), fmt.as_string().cstrm()))); @@ -423,7 +423,7 @@ static void _switch(Request& r, MethodPa static void _case(Request& r, MethodParams& params) { Switch_data* data=static_cast(r.classes_conf.get(switch_data_name)); if(!data) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "without switch"); @@ -448,7 +448,7 @@ static void _case(Request& r, MethodPara if(matches) { if(data->found) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "duplicate found"); @@ -578,7 +578,7 @@ static void locked_process_and_cache_put assert(body_from_disk); info.processed_code=body_from_disk; } else - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, result.exception_should_be_handled, "$"EXCEPTION_VAR_NAME"."EXCEPTION_HANDLED_PART_NAME" value must be " "either boolean or string '"CACHE_EXCEPTION_HANDLED_CACHE_NAME"'"); @@ -671,7 +671,7 @@ static void _cache(Request& r, MethodPar // return current expiration time Cache_scope* scope=static_cast(r.classes_conf.get(cache_data_name)); if(!scope) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "expire-time get without cache"); r.write_no_lang(*new VDate(scope->expires)); @@ -690,7 +690,7 @@ static void _cache(Request& r, MethodPar // secods|expires date Cache_scope* scope=static_cast(r.classes_conf.get(cache_data_name)); if(!scope) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "expire-time reducing instruction without cache"); @@ -700,7 +700,7 @@ static void _cache(Request& r, MethodPar return; } else if(params.count()<3) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "invalid number of parameters"); @@ -787,7 +787,7 @@ static void _try_operator(Request& r, Me &catch_code); if(result.exception_should_be_handled) - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, result.exception_should_be_handled, "catch block must set $exception.handled to some boolean value, not string"); @@ -812,7 +812,7 @@ static void _throw_operator(Request&, Me source?source:0, "%s", comment?comment:""); } else - throw Exception("parser.runtime", + throw Exception(PARSER_RUNTIME, 0, "one-param version has hash param"); } else {