Diff for /parser3/src/classes/double.C between versions 1.7 and 1.19

version 1.7, 2001/03/11 08:44:39 version 1.19, 2001/03/30 05:51:11
Line 10 Line 10
 #include "_double.h"  #include "_double.h"
 #include "pa_vdouble.h"  #include "pa_vdouble.h"
 #include "pa_vint.h"  #include "pa_vint.h"
   #include "_string.h"
   
 // global var  // global var
   
 VClass *double_class;  VStateless_class *double_class;
   
 // methods  // methods
   
 static void _int(Request& r, Array *) {  static void _int(Request& r, const String&, Array *) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         VDouble *vdouble=static_cast<VDouble *>(r.self);          VDouble *vdouble=static_cast<VDouble *>(r.self);
         Value& value=*new(pool) VInt(pool, static_cast<int>(vdouble->get_double()));          Value& value=*new(pool) VInt(pool, (int)vdouble->as_double());
         r.wcontext->write(value, String::Untaint_lang::NO /*always object, not string*/);          r.write_no_lang(value);
 }  }
   
 static void _double(Request& r, Array *) {  static void _double(Request& r, const String&, Array *) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         VDouble *vdouble=static_cast<VDouble *>(r.self);          VDouble *vdouble=static_cast<VDouble *>(r.self);
         Value& value=*new(pool) VDouble(pool, vdouble->get_double());          Value& value=*new(pool) VDouble(pool, vdouble->as_double());
         r.wcontext->write(value, String::Untaint_lang::NO /*always object, not string*/);          r.write_no_lang(value);
 }  }
   
 static void _inc(Request& r, Array *params) {  typedef void (*vdouble_op_func_ptr)(VDouble& vdouble, double param);
   
   static void __inc(VDouble& vdouble, double param) { vdouble.inc(param); }
   static void __dec(VDouble& vdouble, double param) { vdouble.inc(-param); }
   static void __mul(VDouble& vdouble, double param) { vdouble.mul(param); }
   static void __div(VDouble& vdouble, double param) { vdouble.div(param); }
   static void __mod(VDouble& vdouble, double param) { vdouble.mod((int)param); }
   
   static void vdouble_op(Request& r, Array *params, 
                                              vdouble_op_func_ptr func) {
         VDouble *vdouble=static_cast<VDouble *>(r.self);          VDouble *vdouble=static_cast<VDouble *>(r.self);
         double increment=params->size()?          double param=params->size()?
                 r.autocalc(                  r.process(
                         *static_cast<Value *>(params->get(0)),                          *static_cast<Value *>(params->get(0)),
                         0/*no name*/,                          0/*no name*/,
                         false/*don't make it string*/).get_double():1;                          false/*don't intercept string*/).as_double():1/*used in inc/dec*/;
         vdouble->inc(increment);          (*func)(*vdouble, param);
 }  }
   
 void initialize_double_class(Pool& pool, VClass& vclass) {  static void _inc(Request& r, const String&, Array *params) { vdouble_op(r, params, &__inc); }
         vclass.add_native_method("int", _int, 0, 0); // ^double.int[]  static void _dec(Request& r, const String&, Array *params) { vdouble_op(r, params, &__dec); }
         vclass.add_native_method("double", _double, 0, 0); // ^double.double[]  static void _mul(Request& r, const String&, Array *params) { vdouble_op(r, params, &__mul); }
         vclass.add_native_method("inc", _inc, 0, 1); // ^double.inc[] ^double.inc[offset]  static void _div(Request& r, const String&, Array *params) { vdouble_op(r, params, &__div); }
 }  static void _mod(Request& r, const String&, Array *params) { vdouble_op(r, params, &__mod); }
   
   // initialize
   
   void initialize_double_class(Pool& pool, VStateless_class& vclass) {
           // ^double.int[]
           vclass.add_native_method("int", Method::CT_DYNAMIC, _int, 0, 0);
   
           // ^double.double[]
           vclass.add_native_method("double", Method::CT_DYNAMIC, _double, 0, 0);
           
           // ^double.inc[] 
           // ^double.inc[offset]
           vclass.add_native_method("inc", Method::CT_DYNAMIC, _inc, 0, 1);
           // ^double.dec[] 
           // ^double.dec[offset]
           vclass.add_native_method("dec", Method::CT_DYNAMIC, _dec, 0, 1);
           // ^double.mul[k] 
           vclass.add_native_method("mul", Method::CT_DYNAMIC, _mul, 1, 1);
           // ^double.div[d]
           vclass.add_native_method("div", Method::CT_DYNAMIC, _div, 1, 1);
           // ^double.mod[offset]
           vclass.add_native_method("mod", Method::CT_DYNAMIC, _mod, 1, 1);
   
           // ^double.format[]
           vclass.add_native_method("format", Method::CT_DYNAMIC, _string_format, 1, 1);
   }

Removed from v.1.7  
changed lines
  Added in v.1.19


E-mail: