--- parser3/src/classes/int.C 2002/03/27 15:30:34 1.41 +++ parser3/src/classes/int.C 2002/08/01 11:26:43 1.45 @@ -3,10 +3,10 @@ Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) - - $Id: int.C,v 1.41 2002/03/27 15:30:34 paf Exp $ */ +static const char* IDENT_INT_C="$Id: int.C,v 1.45 2002/08/01 11:26:43 paf Exp $"; + #include "classes.h" #include "pa_request.h" #include "pa_vdouble.h" @@ -16,10 +16,6 @@ void _string_format(Request& r, const String& method_name, MethodParams *); -// defines - -#define INT_CLASS_NAME "int" - // class class MInt : public Methoded { @@ -31,20 +27,24 @@ public: // Methoded // methods -static void _int(Request& r, const String& method_name, MethodParams *) { +static void _int(Request& r, const String& method_name, MethodParams *params) { Pool& pool=r.pool(); + // just checking (default) syntax validity, never really using it here, just for string.int compatibility + if(params->size()>0) + params->as_junction(0, "default must be int"); + VInt *vint=static_cast(r.self); - Value& result=*new(pool) VInt(pool, vint->get_int()); - result.set_name(method_name); - r.write_no_lang(result); + r.write_no_lang(*new(pool) VInt(pool, vint->get_int())); } -static void _double(Request& r, const String& method_name, MethodParams *) { +static void _double(Request& r, const String& method_name, MethodParams *params) { Pool& pool=r.pool(); + // just checking (default) syntax validity, never really using it here, just for string.doube compatibility + if(params->size()>0) + params->as_junction(0, "default must be double"); + VInt *vint=static_cast(r.self); - Value& result=*new(pool) VDouble(pool, vint->as_double()); - result.set_name(method_name); - r.write_no_lang(result); + r.write_no_lang(*new(pool) VDouble(pool, vint->as_double())); } typedef void (*vint_op_func_ptr)(VInt& vint, double param); @@ -83,29 +83,24 @@ static void _sql(Request& r, const Strin val=string->as_int(); else if(default_code) - val=r.process(*default_code).as_int(); + val=r.process_to_value(*default_code).as_int(); else { throw Exception("parser.runtime", &method_name, "produced no result, but no default option specified"); val=0; //calm, compiler } - VInt& result=*new(pool) VInt(pool, val); - result.set_name(method_name); - r.write_assign_lang(result); + r.write_no_lang(*new(pool) VInt(pool, val)); } // constructor -MInt::MInt(Pool& apool) : Methoded(apool) { - set_name(*NEW String(pool(), INT_CLASS_NAME)); - - +MInt::MInt(Pool& apool) : Methoded(apool, "int") { // ^int.int[] - add_native_method("int", Method::CT_DYNAMIC, _int, 0, 0); + add_native_method("int", Method::CT_DYNAMIC, _int, 0, 1); // ^int.double[] - add_native_method("double", Method::CT_DYNAMIC, _double, 0, 0); + add_native_method("double", Method::CT_DYNAMIC, _double, 0, 1); // ^int.inc[] // ^int.inc[offset]