--- parser3/src/classes/hash.C 2009/07/07 06:27:05 1.100 +++ parser3/src/classes/hash.C 2009/08/08 13:30:20 1.103 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_HASH_C="$Date: 2009/07/07 06:27:05 $"; +static const char * const IDENT_HASH_C="$Date: 2009/08/08 13:30:20 $"; #include "classes.h" #include "pa_vmethod_frame.h" @@ -22,7 +22,7 @@ static const char * const IDENT_HASH_C=" class MHash: public Methoded { public: // VStateless_class - Value* create_new_value(Pool&, HashStringValue*) { return new VHash(); } + Value* create_new_value(Pool&) { return new VHash(); } public: MHash(); @@ -34,10 +34,6 @@ public: // Methoded DECLARE_CLASS_VAR(hash, new MHash, 0); -// externs - -extern String cycle_data_name; - // methods #ifndef DOXYGEN @@ -205,7 +201,7 @@ static void _create_or_add(Request& r, M return; src->for_each(copy_all_overwrite_to, self_hash); - if(VHash* vhash_src=static_cast(vsrc.as(VHASH_TYPE, false))) + if(VHash* vhash_src=static_cast(vsrc.as(VHASH_TYPE))) { if(Value* vdefault=vhash_src->get_default()) { @@ -390,7 +386,7 @@ static void _keys(Request& r, MethodPara else keys_column_name=new String("key"); - Table::columns_type columns(new ArrayString); + Table::columns_type columns(new ArrayString(1)); *columns+=keys_column_name; Table* table=new Table(columns); @@ -432,10 +428,10 @@ static bool one_foreach_cycle( Value& var_context=*info->var_context; if(info->key_var_name){ VString* vkey=new VString(*new String(akey, String::L_TAINTED)); - var_context.put_element(var_context, *info->key_var_name, vkey, false); + var_context.put_element(*info->key_var_name, vkey, false); } if(info->value_var_name) - var_context.put_element(var_context, *info->value_var_name, avalue, false); + var_context.put_element(*info->value_var_name, avalue, false); if(info->delim_maybe_code){ // delimiter set StringOrValue sv_processed=info->r->process(*info->body_code); @@ -457,8 +453,7 @@ static bool one_foreach_cycle( } } static void _foreach(Request& r, MethodParams& params) { - Temp_hash_value - cycle_data_setter(r.classes_conf, cycle_data_name, /*any not null flag*/&r); + InCycle temp(r); const String& key_var_name=params.as_string(0, "key-var name must be string"); const String& value_var_name=params.as_string(1, "value-var name must be string");