array.h Aggiunto parametro force alla insert

array.cpp Corretta gestione della insert ed aggiunto parametro force


git-svn-id: svn://10.65.10.50/trunk@4365 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1997-05-21 14:39:09 +00:00
parent 72e63eb974
commit 80cb66cd4e
2 changed files with 14 additions and 11 deletions

View File

@ -347,7 +347,8 @@ int TArray::add(
// @rdesc La funzione ritorna la posizione nella quale e' stato inserito l'oggetto. // @rdesc La funzione ritorna la posizione nella quale e' stato inserito l'oggetto.
int TArray::insert( int TArray::insert(
TObject *object, // @parm Oggetto da inserire nell'array TObject *object, // @parm Oggetto da inserire nell'array
int index) // @parm Posizione in cui inserire l'oggetto int index, // @parm Posizione in cui inserire l'oggetto (puo' essere -1)
bool force) // @parm Forza l'inserimento anche se la posizione e' vuota
// @parm TObject | &object | Oggetto da inserire nell'array. L'oggetto viene duplicato // @parm TObject | &object | Oggetto da inserire nell'array. L'oggetto viene duplicato
// @syntax insert(TObject* object, int index); // @syntax insert(TObject* object, int index);
@ -362,11 +363,13 @@ int TArray::insert(
// //
// @xref <mf TArray::add> // @xref <mf TArray::add>
{ {
if (objptr(index)) const int s = size();
if ((index >= 0 && index < s) && (force || objptr(index)))
{ {
if (items() == size()) add(NULL); if (_data[s - 1]) // Se l'ultimo non e' vuoto ...
for (int i = size()-1; i >= index; i--) add(NULL, s); // ... aggiungi un elemento in fondo
_data[i] = _data[i-1]; for (int i = size()-1; i > index; i--) // size va aggiornato perche potrebbe essere cambiato
_data[i] = _data[i - 1];
_data[index] = NULL; _data[index] = NULL;
} }
return add(object, index); return add(object, index);
@ -379,10 +382,10 @@ int TArray::add(const TObject& object, int index)
return add(objptr, index); return add(objptr, index);
} }
int TArray::insert(const TObject& object, int index) int TArray::insert(const TObject& object, int index, bool force)
{ {
TObject* objptr = object.dup(); TObject* objptr = object.dup();
return insert(objptr, index); return insert(objptr, index, force);
} }
// @doc EXTERNAL // @doc EXTERNAL
@ -419,7 +422,7 @@ TObject* TArray::remove(
TObject* TArray::remove_item(bool pack ) TObject* TArray::remove_item(bool pack )
{ {
return remove(_scanindex,pack); return remove(_scanindex,pack);
} }
void TArray::swap(int i1, int i2) void TArray::swap(int i1, int i2)

View File

@ -173,12 +173,12 @@ public:
// @cmember Aggiunge un oggetto ad un array. // @cmember Aggiunge un oggetto ad un array.
virtual int add(TObject* obj, int index = -1) ; virtual int add(TObject* obj, int index = -1) ;
// @cmember Inserisce un elemento dell'array nella posizione index // @cmember Inserisce un elemento dell'array nella posizione index
virtual int insert(TObject* obj, int index = 0); virtual int insert(TObject* obj, int index = 0, bool force = FALSE);
// @cmember Aggiunge un oggetto all'array. L'oggetto viene duplicato // @cmember Aggiunge un oggetto all'array. L'oggetto viene duplicato
int add(const TObject& object, int index = -1) ; int add(const TObject& object, int index = -1) ;
// @cmember Inserisce un oggetto alla posizione index // @cmember Inserisce un oggetto alla posizione index
int insert(const TObject& object, int index = 0); int insert(const TObject& object, int index = 0, bool force = FALSE);
// @cmember Elimina l'elemento nella posizione index dell'array // @cmember Elimina l'elemento nella posizione index dell'array
TObject* remove(int index, bool pack = FALSE); TObject* remove(int index, bool pack = FALSE);
// @cmember Elimina l'elemento nella posizione index dell'array // @cmember Elimina l'elemento nella posizione index dell'array