--- parser3/src/main/pa_table.C 2001/03/26 10:36:56 1.19 +++ parser3/src/main/pa_table.C 2001/03/28 08:01:42 1.21 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: pa_table.C,v 1.19 2001/03/26 10:36:56 paf Exp $ + $Id: pa_table.C,v 1.21 2001/03/28 08:01:42 paf Exp $ */ #include @@ -31,69 +31,39 @@ Table::Table(Pool& apool, } } -const Array &Table::at(int index) { - return *const_cast(static_cast(get(index))); -} - -const String *Table::item(const String& column_name) { - int column_index; +int Table::column_name2index(const String& column_name) const { + int result; if(fcolumns) { // named - int found_index=name2number.get_int(column_name); - if(found_index) - column_index=found_index-1; + int column_index=name2number.get_int(column_name); + if(column_index) + result=column_index-1; else THROW(0, 0, &column_name, "column not found"); } else { // nameless - column_index=atoi(column_name.cstr()); - if(!valid(fcurrent)) - return 0; // it's OK we don't have row, just return nothing - const Array& row=at(fcurrent); - if(column_index<0 || column_index>=row.size()) // read past proper index? - return 0; // it's OK we don't have column, just return nothing + result=atoi(column_name.cstr()); } - - return item(column_index); + return result; } -void Table::save(bool nameless_save, const String& file_spec) { - String sdata(pool()); - if(!nameless_save) { // not nameless=named output - // write out names line - if(fcolumns) { // named table - for(int column=0; columnsize(); column++) { - if(column) - sdata.APPEND_CONST("\t"); - sdata.append(*static_cast(fcolumns->quick_get(column)), - String::UL_TABLE); - } - } else { // nameless table - int lsize=size()?static_cast(get(0))->size():0; - if(lsize) - for(int column=0; column=0 && column_index(quick_get(index)); - for(int column=0; columnsize(); column++) { - if(column) - sdata.APPEND_CONST("\t"); - sdata.append(*static_cast(row->quick_get(column)), - String::UL_TABLE); - } - sdata.APPEND_CONST("\n"); + return 0; // it's OK we don't have row|column, just return nothing +} + +bool Table::locate(const String& column, const String& value) const { + int key_index=column_name2index(column); + for(int fcurrent=0; fcurrent