Diff for /parser3/src/include/pa_table.h between versions 1.15 and 1.37

version 1.15, 2001/03/19 17:42:13 version 1.37, 2001/11/22 15:47:12
Line 2 Line 2
         Parser: table class decl.          Parser: table class decl.
   
         Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
           Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
         Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)  
   
         $Id$          $Id$
 */  */
Line 11 Line 10
 #ifndef PA_TABLE_H  #ifndef PA_TABLE_H
 #define PA_TABLE_H  #define PA_TABLE_H
   
   #include "pa_config_includes.h"
 #include "pa_types.h"  #include "pa_types.h"
 #include "pa_array.h"  #include "pa_array.h"
 #include "pa_hash.h"  #include "pa_hash.h"
 #include "pa_string.h"  #include "pa_string.h"
 #include "pa_request.h"  
   
 /// parser \b table class backend  /** 
 /**          VTable backend.
         holds   
           holds:
         - column names[if any]          - column names[if any]
         - data rows          - data rows
         - current row pointer          - current row pointer
   
         uses String for column names and data items          uses String for column names and data items
   
         hence most of tables are "named", no need to uptimize nameless onces          hence most of tables are "named", no need to uptimize nameless onces.
           rows and strings stored are read-only. once stored they can be removed,
           but not altered. that's handy for quick copying & co. see table:join
 */  */
 class Table : public Array {  class Table : public Array {
 public:  public:
   
         Table(Pool& apool,          Table(Pool& apool,
                 const String& asource,                  const String *aorigin,
                 Array *acolumns,                  const Array *acolumns,
                 int initial_rows=CR_INITIAL_ROWS_DEFAULT);                  int initial_rows=CR_INITIAL_ROWS_DEFAULT);
   
         /// the string source of table's data          /// where this table came from, may be NULL
         //const String& source() { return fsource; }          const String *origin_string() { return forigin_string; }
   
         /// column names          /// column names
         const Array *columns() { return fcolumns; }          const Array *columns() { return fcolumns; }
   
         /// moves \a current pointer          /// moves @a current pointer
         void set_current(int acurrent) { fcurrent=acurrent; }          void set_current(int acurrent) { fcurrent=acurrent; }
         /// \return current pointer          /// @return current pointer
         int get_current() { return fcurrent; }          int current() { return fcurrent; }
           void offset(bool absolute, int offset);
   
           /** @return column index from @a column_name. '<0' if no such column
                   if no such colum conditionally 'bark'
           */
           int column_name2index(const String& column, bool bark) const;
   
           /// @return item from @a column
           const String *item(int column) const;
   
           /// @return item from @a column. '0' if no such column
           const String *item(const String& column) const {
                   int index=column_name2index(column, false);
                   return index>=0?item(index):0;
           }
   
         /// \return item from \a column_name          /// saves to text file
         const String *item(const String& column_name);          void save(bool nameless_save, const String& file_spec);
   
 private:          bool locate(int column, const String& value);
           bool locate(const String& column, const String& value);
   
         // the base origin of table's data          const Array& at(int index) const {
         const String& fsource;                  // force @c const result
                   return *const_cast<const Array *>(static_cast<Array *>(get(index)));
           }
   
   private:
           
           // where this table came from, may be NULL
           const String *forigin_string;
   
         // column name->number lookup table          // column name->number lookup table
         Hash name2number;          Hash name2number;
Line 62  private: Line 87  private:
         int fcurrent;          int fcurrent;
   
         // columns          // columns
         Array *fcolumns;          const Array *fcolumns;
   
         bool valid(int index) { return index>=0 && index<size();        }          bool valid(int index) const { return index>=0 && index<size(); }
   
         const Array& at(int index);  
   
         const String *item(int column_index) {  
                 return valid(fcurrent)?at(fcurrent).get_string(column_index):0;  
         }  
 };  };
   
 #endif  #endif

Removed from v.1.15  
changed lines
  Added in v.1.37


E-mail: