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.
|
||||
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)
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user