Aggiunto costruttore i copia

git-svn-id: svn://10.65.10.50/trunk@2802 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-05-14 10:01:00 +00:00
parent 11ec3729bc
commit b8653b0c6f
2 changed files with 41 additions and 2 deletions

View File

@ -322,3 +322,34 @@ int TAssoc_array::get_keys(TString_array& kl, bool add_values)
restart();
return kl.items();
}
HIDDEN TAssoc_array * _new_assoc_array = NULL;
// @doc INTERNAL
// @mfunc funzione per duplicare il contenuto di un assoc_array
//
HIDDEN void copia_elemento(const TObject & o)
{
const THash_object & h = (const THash_object & ) o;
_new_assoc_array->add(h.key(), h.obj(), TRUE);
}
// @doc INTERNAL
// @mfunc Copia tutto l'array e ne duplica gli elementi
//
TAssoc_array & TAssoc_array::copy(
const TAssoc_array & a) // @parm Array associativo sorgente
{
CHECK(_new_assoc_array == NULL, "Trying to duplicate an assoc array while another copy is in progress");
_new_assoc_array = this;
((TAssoc_array &)a).for_each(copia_elemento);
_new_assoc_array = NULL;
return * this;
}

View File

@ -74,7 +74,9 @@ class TAssoc_array : public TContainer
protected:
// @cmember Cerca l'oggetto con chiave k
THash_object* _lookup(const char* k, bool& isnew, bool insert = FALSE);
THash_object* _lookup(const char* k, bool& isnew, bool insert = FALSE);
// @cmember Copia tutto l'array associativo e ne duplica gli elementi
TAssoc_array & copy(const TAssoc_array & a);
// @access Public Member
public:
@ -134,10 +136,16 @@ public:
// @cmember Mette chiavi e opzionalmente valori (come stringa) nel <c TString_array> passato
int get_keys(TString_array& kl, bool add_values = FALSE);
// @cmember Operatore di assegnamento tra array associativi
TAssoc_array & operator= (const TAssoc_array & a)
{ return copy(a); }
// @cmember Costruttore
TAssoc_array() : _cnt(0), _row(0), _col(0)
{}
// @cmember Costruttore. Copia tutto l'array associativo e ne duplica gli elementi
TAssoc_array(const TAssoc_array & a) : _cnt(0), _row(0), _col(0)
{ copy(a); }
// @cmember Distruttore
virtual ~TAssoc_array()
{ destroy(); }