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.
int TArray::insert(
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
// @syntax insert(TObject* object, int index);
@ -362,11 +363,13 @@ int TArray::insert(
//
// @xref <mf TArray::add>
{
if (objptr(index))
{
if (items() == size()) add(NULL);
for (int i = size()-1; i >= index; i--)
_data[i] = _data[i-1];
const int s = size();
if ((index >= 0 && index < s) && (force || objptr(index)))
{
if (_data[s - 1]) // Se l'ultimo non e' vuoto ...
add(NULL, s); // ... aggiungi un elemento in fondo
for (int i = size()-1; i > index; i--) // size va aggiornato perche potrebbe essere cambiato
_data[i] = _data[i - 1];
_data[index] = NULL;
}
return add(object, index);
@ -379,10 +382,10 @@ int TArray::add(const TObject& object, int 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();
return insert(objptr, index);
return insert(objptr, index, force);
}
// @doc EXTERNAL
@ -419,7 +422,7 @@ TObject* TArray::remove(
TObject* TArray::remove_item(bool pack )
{
return remove(_scanindex,pack);
return remove(_scanindex,pack);
}
void TArray::swap(int i1, int i2)

View File

@ -173,12 +173,12 @@ public:
// @cmember Aggiunge un oggetto ad un array.
virtual int add(TObject* obj, int index = -1) ;
// @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
int add(const TObject& object, int index = -1) ;
// @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
TObject* remove(int index, bool pack = FALSE);
// @cmember Elimina l'elemento nella posizione index dell'array