--- parser3/src/classes/table.C 2002/04/15 10:35:21 1.149 +++ parser3/src/classes/table.C 2002/05/17 12:19:12 1.153 @@ -4,7 +4,7 @@ Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) - $Id: table.C,v 1.149 2002/04/15 10:35:21 paf Exp $ + $Id: table.C,v 1.153 2002/05/17 12:19:12 paf Exp $ */ #include "classes.h" @@ -15,10 +15,6 @@ #include "pa_sql_connection.h" #include "pa_vbool.h" -// defines - -#define TABLE_CLASS_NAME "table" - // class class MTable : public Methoded { @@ -188,8 +184,9 @@ static void _save(Request& r, const Stri while(i.has_next()) { Array_iter c(*static_cast(i.next())); while(c.has_next()) { - sdata.append(*c.next_string(), //*static_cast(row->quick_get(column)), - String::UL_TABLE); + if(const String *s=c.next_string()) + sdata.append(*s, + String::UL_TABLE); if(c.has_next()) sdata.APPEND_CONST("\t"); } @@ -203,16 +200,14 @@ static void _save(Request& r, const Stri static void _count(Request& r, const String& method_name, MethodParams *) { Pool& pool=r.pool(); - Value& value=*new(pool) VInt(pool, static_cast(r.self)->table().size()); - value.set_name(method_name); - r.write_no_lang(value); + int result=static_cast(r.self)->table().size(); + r.write_no_lang(*new(pool) VInt(pool, result)); } static void _line(Request& r, const String& method_name, MethodParams *) { Pool& pool=r.pool(); - Value& value=*new(pool) VInt(pool, 1+static_cast(r.self)->table().current()); - value.set_name(method_name); - r.write_no_lang(value); + int result=1+static_cast(r.self)->table().current(); + r.write_no_lang(*new(pool) VInt(pool, result)); } static void _offset(Request& r, const String& method_name, MethodParams *params) { @@ -234,11 +229,8 @@ static void _offset(Request& r, const St Value& offset_expr=params->as_junction(params->size()-1, "offset must be expression"); table.offset(absolute, r.process_to_value(offset_expr).as_int()); - } else { - Value& value=*new(pool) VInt(pool, table.current()); - value.set_name(method_name); - r.write_no_lang(value); - } + } else + r.write_no_lang(*new(pool) VInt(pool, table.current())); } static void _menu(Request& r, const String& method_name, MethodParams *params) { @@ -253,11 +245,11 @@ static void _menu(Request& r, const Stri for(int row=0; rowsize()) // need delim & iteration produced string? - r.write_pass_lang(r.process_to_string(*delim_maybe_code)); + r.write_pass_lang(r.process(*delim_maybe_code)); need_delim=true; } r.write_pass_lang(processed_body); @@ -296,8 +288,8 @@ static void _hash(Request& r, const Stri Pool& pool=r.pool(); Table& self_table=static_cast(r.self)->table(); Value& result=*new(pool) VHash(pool); - if(const Array *columns=self_table.columns()) - if(columns->size()>1) { + if(const Array *columns=self_table.columns()) + if(columns->size()>0) { const String& key_field_name=params->as_no_junction(0, "key field name must not be code").as_string(); int key_field=self_table.column_name2index(key_field_name, true); @@ -327,7 +319,6 @@ static void _hash(Request& r, const Stri Row_info row_info={&self_table, key_field, &value_fields, result.get_hash(0)}; self_table.for_each(table_row_to_hash, &row_info); } - result.set_name(method_name); r.write_no_lang(result); } @@ -435,12 +426,10 @@ static bool _locate_name_value(Request& } static void _locate(Request& r, const String& method_name, MethodParams *params) { Pool& pool=r.pool(); - Value& result=*new(pool) VBool(pool, - params->get(0).get_junction()? + bool result=params->get(0).get_junction()? _locate_expression(r, method_name, params) : - _locate_name_value(r, method_name, params)); - result.set_name(method_name); - r.write_no_lang(result); + _locate_name_value(r, method_name, params); + r.write_no_lang(*new(pool) VBool(pool, result)); } static void _flip(Request& r, const String& method_name, MethodParams *params) { @@ -635,9 +624,7 @@ static void _columns(Request& r, const S } } - VTable& result=*new(pool) VTable(pool, &result_table); - result.set_name(method_name); - r.write_no_lang(result); + r.write_no_lang(*new(pool) VTable(pool, &result_table)); } static void _select(Request& r, const String& method_name, MethodParams *params) { @@ -656,9 +643,7 @@ static void _select(Request& r, const St for(int row=0; row