--- parser3/src/classes/op.C 2001/05/04 10:42:36 1.14 +++ parser3/src/classes/op.C 2001/05/08 06:13:00 1.17 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: op.C,v 1.14 2001/05/04 10:42:36 paf Exp $ + $Id: op.C,v 1.17 2001/05/08 06:13:00 paf Exp $ */ #include "classes.h" @@ -202,11 +202,11 @@ static void _for(Request& r, const Strin } } -static void _eval(Request& r, const String&, MethodParams *params) { +static void _eval(Request& r, const String& method_name, MethodParams *params) { Value& expr=params->get_junction(0, "need expression"); // evaluate expresion Value *result=r.process(expr, - 0/*no name*/, + 0/*no name YET*/, true/*don't intercept string*/).as_expr_result(); if(params->size()==2) { Value& fmt=params->get_no_junction(1, "fmt must not be code"); @@ -216,6 +216,7 @@ static void _eval(Request& r, const Stri string.APPEND_CONST(format(pool, result->as_double(), fmt.as_string().cstr())); result=new(pool) VString(string); } + result->set_name(method_name); r.write_no_lang(*result); } @@ -224,14 +225,14 @@ typedef double (*math_one_double_op_func static double round(double op) { return floor(op+0.5); } static double sign(double op) { return op > 0 ? 1 : ( op < 0 ? -1 : 0 ); } -static void double_one_op( - Request& r, - const String& method_name, MethodParams *params, - math_one_double_op_func_ptr func) { +static void double_one_op(Request& r, + const String& method_name, MethodParams *params, + math_one_double_op_func_ptr func) { Pool& pool=r.pool(); Value& param=params->get_junction(0, "parameter must be expression"); Value& result=*new(pool) VDouble(pool, (*func)(r.process(param).as_double())); + result.set_name(method_name); r.write_no_lang(result); }