Diff for /parser3/src/classes/string.C between versions 1.71 and 1.74

version 1.71, 2001/08/28 09:27:42 version 1.74, 2001/09/06 06:11:13
Line 39  static void _length(Request& r, const St Line 39  static void _length(Request& r, const St
         r.write_no_lang(result);          r.write_no_lang(result);
 }  }
   
 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();          Pool& pool=r.pool();
         Value& result=*new(pool) VInt(pool, r.self->as_int());          bool convert_problem=false; Exception rethrow_me;
           int converted;
           PTRY {
                   converted=r.self->as_int();
           }
           PCATCH(e) { // convert problem
                   if(convert_problem=params->size()==0) { // we have a problem when do not have default
                           rethrow_me=e;  
                           converted=0;
                   } else
                           converted=params->as_int(0, r); // (default)
           }
           PEND_CATCH
           if(convert_problem)
                   PTHROW(rethrow_me.type(), rethrow_me.code(), 
                           rethrow_me.problem_source(),
                           rethrow_me.comment());
   
           Value& result=*new(pool) VInt(pool, converted);
         result.set_name(method_name);          result.set_name(method_name);
         r.write_no_lang(result);          r.write_no_lang(result);
 }  }
   
 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();          Pool& pool=r.pool();
         Value& result=*new(pool) VDouble(pool, r.self->as_double());          bool convert_problem=false; Exception rethrow_me;
           double converted;
           PTRY {
                   converted=r.self->as_double();
           }
           PCATCH(e) { // convert problem
                   if(convert_problem=params->size()==0) { // we have a problem when do not have default
                           rethrow_me=e;  
                           converted=0;
                   } else
                           converted=params->as_double(0, r); // (default)
           }
           PEND_CATCH
           if(convert_problem)
                   PTHROW(rethrow_me.type(), rethrow_me.code(), 
                           rethrow_me.problem_source(),
                           rethrow_me.comment());
   
           Value& result=*new(pool) VDouble(pool, converted);
         result.set_name(method_name);          result.set_name(method_name);
         r.write_no_lang(result);          r.write_no_lang(result);
 }  }
Line 160  static void search_action(Table& table, Line 196  static void search_action(Table& table,
                 table+=row;                  table+=row;
 }  }
   
 /// used by string: _match / replace_action  #ifndef DOXYGEN
 struct Replace_action_info {  struct Replace_action_info {
         Request *request;  const String *origin;          Request *request;  const String *origin;
         const String *src;  String *dest;          const String *src;  String *dest;
         Value *replacement_code;          Value *replacement_code;
         const String *post_match;          const String *post_match;
 };  };
   #endif
 static void replace_action(Table& table, Array *row, int start, int finish,   static void replace_action(Table& table, Array *row, int start, int finish, 
                                                            void *info) {                                                             void *info) {
         Replace_action_info& ai=*static_cast<Replace_action_info *>(info);          Replace_action_info& ai=*static_cast<Replace_action_info *>(info);
Line 319  const String* sql_result_string(Request& Line 356  const String* sql_result_string(Request&
         ulong limit=0;          ulong limit=0;
         ulong offset=0;          ulong offset=0;
         if(params->size()>1) {          if(params->size()>1) {
                 Value& options_param=params->as_no_junction(1, "options must be hash, not code");                  Value& voptions=params->as_no_junction(1, "options must be hash, not code");
                 if(options=options_param.get_hash()) {                  if(voptions.is_defined())
                         if(Value *vlimit=(Value *)options->get(*sql_limit_name))                          if(options=voptions.get_hash()) {
                                 limit=(ulong)r.process(*vlimit).as_double();                                  if(Value *vlimit=(Value *)options->get(*sql_limit_name))
                         if(Value *voffset=(Value *)options->get(*sql_offset_name))                                          limit=(ulong)r.process(*vlimit).as_double();
                                 offset=(ulong)r.process(*voffset).as_double();                                  if(Value *voffset=(Value *)options->get(*sql_offset_name))
                 } else                                          offset=(ulong)r.process(*voffset).as_double();
                         PTHROW(0, 0,                          } else
                                 &method_name,                                  PTHROW(0, 0,
                                 "options must be hash");                                          &method_name,
                                           "options must be hash");
         } else          } else
                 options=0;                  options=0;
   
Line 410  MString::MString(Pool& apool) : Methoded Line 448  MString::MString(Pool& apool) : Methoded
         add_native_method("length", Method::CT_DYNAMIC, _length, 0, 0);          add_native_method("length", Method::CT_DYNAMIC, _length, 0, 0);
                   
         // ^string.int[]          // ^string.int[]
         add_native_method("int", Method::CT_DYNAMIC, _int, 0, 0);          // ^string.int(default)
                   add_native_method("int", Method::CT_DYNAMIC, _int, 0, 1);
         // ^string.double[]          // ^string.double[]
         add_native_method("double", Method::CT_DYNAMIC, _double, 0, 0);          // ^string.double(default)
           add_native_method("double", Method::CT_DYNAMIC, _double, 0, 1);
   
         // ^string.format{format}          // ^string.format{format}
         add_native_method("format", Method::CT_DYNAMIC, _string_format, 1, 1);          add_native_method("format", Method::CT_DYNAMIC, _string_format, 1, 1);

Removed from v.1.71  
changed lines
  Added in v.1.74


E-mail: