Diff for /parser3/src/classes/string.C between versions 1.28 and 1.30

version 1.28, 2001/04/03 15:25:07 version 1.30, 2001/04/03 15:54:46
Line 143  static void search_row_action(Table& tab Line 143  static void search_row_action(Table& tab
 }  }
   
 struct Replace_action_info {  struct Replace_action_info {
           Request *request;  const String *origin;
         String *dest;          String *dest;
         Value *replacement_code;          Value *replacement_code;
         bool first_time;          bool first_time;
           const String *post_match;
 };  };
 static void replace_row_action(Table& table, Array *row, void *info) {  static void replace_row_action(Table& table, Array *row, void *info) {
         Replace_action_info& ai=*static_cast<Replace_action_info *>(info);          Replace_action_info& ai=*static_cast<Replace_action_info *>(info);
         //table+=&row;          if(row) { // begin/middle
         if(ai.first_time) { // begin                  // store found parts in one-record Vtable
                 ai.first_time=false;                  if(ai.first_time) { // begin
                 ai.dest->APPEND_CONST("B");                          ai.first_time=false;
         }                          ai.dest->append(*(String *)row->get(0/*pre_match*/), 
         if(row) // middle                                  String::UL_PASS_APPENDED);
                 ai.dest->APPEND_CONST("M");                          table+=row;
         else // end                  } else
                 ai.dest->APPEND_CONST("E");                          table.put(0, row);
                   { // execute 'replacement_code' in 'table' context
                           VTable& vtable=*new(table.pool()) VTable(table.pool(), &table);
                           vtable.set_name(*ai.origin);
   
                           Junction *junction=ai.replacement_code->get_junction();
                           junction->rcontext/*=junction->self*/=&vtable;
                           Value& replaced=ai.request->process(*ai.replacement_code, ai.origin, false);
   
                           ai.dest->append(replaced.as_string(), String::UL_PASS_APPENDED);
                   }
                   ai.post_match=(String *)row->get(2/*post_match*/);
           } else // end
                   ai.dest->append(*ai.post_match, String::UL_PASS_APPENDED);
 }  }
   
 /** search/replace  /** search/replace
Line 204  static void _match(Request& r, const Str Line 219  static void _match(Request& r, const Str
   
                 String& dest=*new(pool) String(pool);                  String& dest=*new(pool) String(pool);
                 Replace_action_info replace_action_info={                  Replace_action_info replace_action_info={
                           &r, &method_name,
                         &dest,                          &dest,
                         &replacement_code,                          &replacement_code,
                         true                          true,
                           &src
                 };                  };
                 src.match(&method_name,                   src.match(&method_name, 
                         r.process(regexp).as_string(), options,                          r.process(regexp).as_string(), options,

Removed from v.1.28  
changed lines
  Added in v.1.30


E-mail: