Diff for /parser3/src/classes/string.C between versions 1.106 and 1.109

version 1.106, 2002/04/19 11:59:43 version 1.109, 2002/04/22 14:25:41
Line 88  static void _left(Request& r, const Stri Line 88  static void _left(Request& r, const Stri
   
         size_t n=(size_t)params->as_int(0, "n must be int", r);          size_t n=(size_t)params->as_int(0, "n must be int", r);
                   
         const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode());          const String& string=static_cast<VString *>(r.self)->string();
         r.write_assign_lang(string.mid(0, n));          r.write_assign_lang(string.mid(0, n));
 }  }
   
Line 97  static void _right(Request& r, const Str Line 97  static void _right(Request& r, const Str
   
         size_t n=(size_t)params->as_int(0, "n must be int", r);          size_t n=(size_t)params->as_int(0, "n must be int", r);
                   
         const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode());          const String& string=static_cast<VString *>(r.self)->string();
         r.write_assign_lang(string.mid(string.size()-n, string.size()));          r.write_assign_lang(string.mid(string.size()-n, string.size()));
 }  }
   
 static void _mid(Request& r, const String&, MethodParams *params) {  static void _mid(Request& r, const String&, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode());          const String& string=*r.self->get_string();
   
         size_t p=(size_t)params->as_int(0, "p must be int", r);          size_t p=(size_t)params->as_int(0, "p must be int", r);
         size_t n=params->size()>1?          size_t n=params->size()>1?
Line 117  static void _pos(Request& r, const Strin Line 117  static void _pos(Request& r, const Strin
   
         Value& substr=params->as_no_junction(0, "substr must not be code");          Value& substr=params->as_no_junction(0, "substr must not be code");
                   
         const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode());          const String& string=static_cast<VString *>(r.self)->string();
         r.write_assign_lang(*new(pool) VInt(pool, string.pos(substr.as_string())));          r.write_assign_lang(*new(pool) VInt(pool, string.pos(substr.as_string())));
 }  }
   
Line 131  static void split_list(Request& r, const Line 131  static void split_list(Request& r, const
   
 static void _lsplit(Request& r, const String& method_name, MethodParams *params) {  static void _lsplit(Request& r, const String& method_name, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode());          const String& string=*r.self->get_string();
   
         Array pieces(pool);          Array pieces(pool);
         split_list(r, method_name, params, string, pieces);          split_list(r, method_name, params, string, pieces);
Line 152  static void _lsplit(Request& r, const St Line 152  static void _lsplit(Request& r, const St
   
 static void _rsplit(Request& r, const String& method_name, MethodParams *params) {  static void _rsplit(Request& r, const String& method_name, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         const String& string=static_cast<VString *>(r.self)->optimized_string(r.origins_mode());          const String& string=*r.self->get_string();
   
         Array pieces(pool);          Array pieces(pool);
         split_list(r, method_name, params, string, pieces);          split_list(r, method_name, params, string, pieces);
Line 223  static void _match(Request& r, const Str Line 223  static void _match(Request& r, const Str
                 const String& src=static_cast<VString *>(r.self)->string();                  const String& src=static_cast<VString *>(r.self)->string();
   
                 bool was_global;                  bool was_global;
                 bool matched=src.match(0,                  bool matched=src.match(
                         &method_name,                           &method_name, 
                         regexp.as_string(), options,                          regexp.as_string(), options,
                         &table,                          &table,
Line 239  static void _match(Request& r, const Str Line 239  static void _match(Request& r, const Str
                 r.write_assign_lang(*result);                  r.write_assign_lang(*result);
         } else { // replace          } else { // replace
                 char* src_cstr;                  char* src_cstr;
                 const String& src=static_cast<VString *>(r.self)->optimized_string(r.origins_mode(), &src_cstr);                  const String& src=*r.self->get_string();
   
                 Value& replacement_code=params->as_junction(2, "replacement param must be code");                  Value& replacement_code=params->as_junction(2, "replacement param must be code");
   
Line 254  static void _match(Request& r, const Str Line 254  static void _match(Request& r, const Str
                 Temp_value_element temp_match_var(                  Temp_value_element temp_match_var(
                         *replacement_code.get_junction()->root,                           *replacement_code.get_junction()->root, 
                         *match_var_name, &vtable);                          *match_var_name, &vtable);
                 src.match(src_cstr,                  src.match(
                         &method_name,                           &method_name, 
                         r.process_to_string(regexp), options,                          r.process_to_string(regexp), options,
                         &table,                          &table,
Line 391  static void _sql(Request& r, const Strin Line 391  static void _sql(Request& r, const Strin
   
 static void _replace(Request& r, const String& method_name, MethodParams *params) {  static void _replace(Request& r, const String& method_name, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         const String& src=static_cast<VString *>(r.self)->optimized_string(false/*unused*/,           const String& src=*r.self->get_string();
                 0/*cstr not needed*/, true/*optimization forced,   
                                                                   so that replace fould strings that span across pices*/);  
   
         Table *table=params->as_no_junction(0, "parameter must not be code").get_table();          Table *table=params->as_no_junction(0, "parameter must not be code").get_table();
         if(!table)          if(!table)
Line 428  static void _save(Request& r, const Stri Line 426  static void _save(Request& r, const Stri
                 buf, strlen(buf), true, do_append);                  buf, strlen(buf), true, do_append);
 }  }
   
   static void _optimize(Request& r, const String& method_name, MethodParams * /*params*/) {
           r.write_assign_lang(r.self->get_string()->join_chains(r.pool(), 0/*cstr*/));
   }
   
 // constructor  // constructor
   
 MString::MString(Pool& apool) : Methoded(apool, "string") {  MString::MString(Pool& apool) : Methoded(apool, "string") {
Line 477  MString::MString(Pool& apool) : Methoded Line 479  MString::MString(Pool& apool) : Methoded
   
         // ^string.save[file]            // ^string.save[file]  
         add_native_method("save", Method::CT_DYNAMIC, _save, 1, 2);          add_native_method("save", Method::CT_DYNAMIC, _save, 1, 2);
   
           // ^string.optimize[]  
           add_native_method("optimize", Method::CT_DYNAMIC, _optimize, 0, 0);
 }         }       
   
 // global variable  // global variable

Removed from v.1.106  
changed lines
  Added in v.1.109


E-mail: