Diff for /parser3/src/classes/table.C between versions 1.36 and 1.38

version 1.36, 2001/03/28 08:01:40 version 1.38, 2001/03/29 15:00:19
Line 63  static void set_or_load( Line 63  static void set_or_load(
                 if(char *row_chars=getrow(&data))                   if(char *row_chars=getrow(&data)) 
                         do {                          do {
                                 String *name=new(pool) String(pool);                                  String *name=new(pool) String(pool);
                                 name->APPEND(lsplit(&row_chars, '\t'), 0, file, line++);                                  name->APPEND_CLEAN(lsplit(&row_chars, '\t'), 0, file, line++);
                                 *columns+=name;                                  *columns+=name;
                         } while(row_chars);                          } while(row_chars);
         }          }
Line 77  static void set_or_load( Line 77  static void set_or_load(
                 Array *row=new(pool) Array(pool);                  Array *row=new(pool) Array(pool);
                 while(char *cell_chars=lsplit(&row_chars, '\t')) {                  while(char *cell_chars=lsplit(&row_chars, '\t')) {
                         String *cell=new(pool) String(pool);                          String *cell=new(pool) String(pool);
                         cell->APPEND(cell_chars, 0, file, line);                          cell->APPEND_CLEAN(cell_chars, 0, file, line);
                         *row+=cell;                          *row+=cell;
                 }                  }
                 line++;                  line++;
Line 159  static void _count(Request& r, const Str Line 159  static void _count(Request& r, const Str
   
 static void _line(Request& r, const String&, Array *) {  static void _line(Request& r, const String&, Array *) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         Value& value=*new(pool) VInt(pool, 1+static_cast<VTable *>(r.self)->table().get_current());          Value& value=*new(pool) VInt(pool, 1+static_cast<VTable *>(r.self)->table().current());
         r.write_no_lang(value);          r.write_no_lang(value);
 }  }
   
 static void _offset(Request& r, const String&, Array *params) {  static void _offset(Request& r, const String&, Array *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         Table& table=static_cast<VTable *>(r.self)->table();          Table& table=static_cast<VTable *>(r.self)->table();
         if(params->size()) {          if(params->size())
                 if(int size=table.size()) {                  table.shift((int)r.process(*static_cast<Value *>(params->get(0))).as_double());
                         int offset=          else {
                                 (int)r.process(*static_cast<Value *>(params->get(0))).as_double();                  Value& value=*new(pool) VInt(pool, table.current());
                         table.set_current((table.get_current()+offset+size)%size);  
                 }  
         } else {  
                 Value& value=*new(pool) VInt(pool, table.get_current());  
                 r.write_no_lang(value);                  r.write_no_lang(value);
         }          }
 }  }
Line 188  static void _menu(Request& r, const Stri Line 184  static void _menu(Request& r, const Stri
   
         Table& table=static_cast<VTable *>(r.self)->table();          Table& table=static_cast<VTable *>(r.self)->table();
         bool need_delim=false;          bool need_delim=false;
           int saved_current=table.current();
         for(int row=0; row<table.size(); row++) {          for(int row=0; row<table.size(); row++) {
                 table.set_current(row);                  table.set_current(row);
   
Line 200  static void _menu(Request& r, const Stri Line 197  static void _menu(Request& r, const Stri
                 }                  }
                 r.write_pass_lang(processed_body);                  r.write_pass_lang(processed_body);
         }          }
           table.set_current(saved_current);
 }  }
   
 static void _empty(Request& r, const String&, Array *params) {  static void _empty(Request& r, const String&, Array *params) {
Line 322  static void _locate(Request& r, const St Line 320  static void _locate(Request& r, const St
                 static_cast<Value *>(params->get(1))->as_string());                  static_cast<Value *>(params->get(1))->as_string());
 }  }
   
   static void _found(Request& r, const String& method_name, Array *params) {
           if(static_cast<VTable *>(r.self)->last_locate_was_successful) {
                   Value& then_code=*static_cast<Value *>(params->get(0));
                   // forcing ^found{this param type}
                   r.fail_if_junction_(false, then_code, 
                           method_name, "found-parameter must be junction");
                   r.write_pass_lang(r.process(then_code));
           } else if(params->size()==2) {
                   Value& else_code=*static_cast<Value *>(params->get(1));
                   // forcing ^found{this param type}
                   r.fail_if_junction_(false, else_code, 
                           method_name, "not found-parameter must be junction");
                   r.write_pass_lang(r.process(else_code));
           }
   }
   
 // initialize  // initialize
   
 void initialize_table_class(Pool& pool, VStateless_class& vclass) {  void initialize_table_class(Pool& pool, VStateless_class& vclass) {
Line 364  void initialize_table_class(Pool& pool, Line 378  void initialize_table_class(Pool& pool,
   
         // ^table.locate[field;value]          // ^table.locate[field;value]
         vclass.add_native_method("locate", _locate, 2, 2);          vclass.add_native_method("locate", _locate, 2, 2);
           // ^table.found{when-found}
           // ^table.found{when-found}{when-not-found}
           vclass.add_native_method("found", _found, 1, 2);
 }         }       

Removed from v.1.36  
changed lines
  Added in v.1.38


E-mail: