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:
parent
72e63eb974
commit
80cb66cd4e
@ -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)
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user