Třída: TT_ListWithPointer
Funkce
Back to TT_ListWithPointer
virtual void Do(void *par,void *pointer,int number)
virtual void FreeMem(void *pointer)
TSS_ListWithPointer(int CountItems,int VAddItems,bool VArround = false)
bool IsNull(void)
int Count(void)
int GetAdd(void)
void SetAdd(int A)
int ForItems(void)
bool Add(void* I)
void Clear(void)
bool ClearSet(void)
bool Delete(int start,int count)
bool Insert(void* I,int poz)
bool Exchange(int one,int sec)
bool Set(int c)
void *GetPointer(int i)
void ForEveryFunction(void *par,void (*every) (void *,void *,int))
void ForEvery(void *par)
void EmptyAndFree(void)
bool SetPoint(int i)
bool SetFirst(void)
bool SetLast(void)
int GetPoint(void)
void *Get(void)
void *GetNext(void)
void *GetPreview(void)
void SetNoMove(void)
bool InsertOn(void* I)
operator[]
virtual void Do(void *par,void *pointer,int number)
Tato fce je protected a je určená k předefinování.
V "TSS_List" je prázdná a nedělá nic.
Fce se používá ve fci "ForEvery(void *par)".
Fce je Do() je volána pro každý element v zásobníku.
par - libovolný ukazatel předávaný fci ForEvery
pointer - ukazatael na polozku, ale typu void *
number - poradove cislo polozky v listu (číslováno od 0)
Top
virtual void FreeMem(void *pointer)
Tato fce je protected a je určená k předefinování.
V "TSS_List" je prázdná a nedělá nic.
Fce se používá ve fci "void EmptyAndFree(void)".
Fce FreeMem() je volána pro každý element v zásobníku.
Je určena k uvolnění paměti pro položku.
např.
void MyTSS_List::FreeMem(void *pointer)
{
delete ((MyTyp *) pointer);
}
Top
TSS_ListWithPointer(int CountItems,int VAddItems,bool VArround = false)
Konstruktor.
CountItems - pro kolik položek se má list připravit.
VAddItems - po kolika se má přidávat při zaplnění listu.
DOPORUČENÍ:
List připravuj vždy pro dostatečný počet položek protože neustalými
realokacemi dochází k "rozdrobení paměti".
např. vím že běžně pracuji s 10000 položkami a nemělo by jich být více
než 20000, tak zavolej TSS_List(10000,10000).
Alokovaná paměť na jeden ukazatel je 4 byte - tak si to spočítej.
Pokud by těchto položek v listu najednou bylo 200000, tak by spotřeba
paměti byla třeba i 20x větší než kdyby bylo zavolán konstruktor
s parametry 100000,100000.(jedna realokace)
"VArround" nastavi promněnou "Arround" tzn. uzavření položek do kruhu.
(Čti promněnou "Arround").
Top
bool IsNull(void)
Vrací true pokud je nedostatek paměti.
VOLEJ VŽDY PO KONSTRUKTORU.
Top
int Count(void)
Vraci pocet polozek.
Top
int GetAdd(void)
Vrací pro kolik položek se bude přidávat pamět při dosažení maxima.
Top
void SetAdd(int A)
Nastaví pro kolik položek se bude přidávat pamět při dosažení maxima.
Top
int ForItems(void)
Vrací pro kolik položek je momentálně list nastaven.
Top
bool Add(void* I)
Přidá ukazatel do listu.
Vrací true v případě ůspěchu.
Vrací false v případě neůspěchu (nedostatek paměti).
Top
void Clear(void)
Vyprázdní list. Paměť jednotlivých položek neuvolňuje !!!
Top
bool ClearSet(void)
Vyprázdní list. Paměť jednotlivých položek neuvolňuje !!!
A nastavi momentální pro "AddItems" položek.
"AddItems" nastavuješ buď konstruktorem nebo fci "SetAdd()".
Vrací true v případě ůspěchu.
Vrací false v případě neůspěchu (nedostatek paměti).
Top
bool Delete(int start,int count)
Smaze pocet ukazatalu "count" od pozice(včetně) "start".
Paměť jednotlivých položek neuvolňuje !!
"count" - může být větší než je ve skutečnosti položek, hodnota bude oříznuta
Vrací true v případě ůspěchu.
Vrací false v případě neůspěchu (start < 0 nebo start > pocet polozek).
Top
bool Insert(void* I,int poz)
Vloží ukazatel "I" na pozici "poz".
Vrací true v případě ůspěchu.
Vrací false v případě neůspěchu (nedostatek paměti).
Top
bool Exchange(int one,int sec)
Prohodí ukazatele.
Vrací true v případě ůspěchu.
Vrací false v případě neůspěchu (one nebo sec je mimo rozsah).
Top
bool Set(int c)
Nastaví na "c" položek.
Případné ztracené položky nemají uvolněnou paměť.
Vrací true v případě ůspěchu.
Vrací false v případě neůspěchu (nedostatek paměti).
Top
void *GetPointer(int i)
Vrací ukazatel na prvek "i".
Pokud je "i" mimo rozsah vrací "NULL" (0)
Top
void ForEveryFunction(void *par,void (*every) (void *,void *,int))
Provede s každym prvkem funkci typu:
void (*every) (void *,void *,int))
"par" je libovolny ukazatel předávaný dál do funkce "every" jako první parametr
paramatry fce "every":
1.ibovolny ukazatel
2.ukazatel polozky
3.poradove cislo polozky
Top
void ForEvery(void *par)
Provede s každým prvekem fci Do().
viz. fce Do().
Top
void EmptyAndFree(void)
Provede s každým prvekem fci MemFree().
viz. fce MemFree().
A zavolá fci "Clear()".
Slouží pro uvolnění paměti položek.
!!! V destruktoru není volána - zavolej si sám !!!
Top
bool SetPoint(int i)
Nastaví ukazovátko na položku.
Mimo rozsah vrací false.
Vraci false i pokud list neobsahuje žádné prvky.
Top
bool SetFirst(void)
Nastaví ukazovátko na první položku.
Vraci false pokud list neobsahuje žádné prvky.
Top
bool SetLast(void)
Nastaví ukazovátko na poslední položku.
Vraci false pokud list neobsahuje žádné prvky.
Top
int GetPoint(void)
Vrací číslo položky, na kterou je nastaveno ukazovátko.
Pokud neobsahuje prvky vrací 0.
Pozor 0 vrací i na první položce.
Top
void *Get(void)
Vrátí prvek z pozice ukazovátka.
Pokud neobsahuje prvky vrací 0 (NULL).
Top
void *GetNext(void)
Přesune ukazovátko na následující položku a vrátí ji.
Možno použít i jen jako přesouvání ukazovátka.
Pokud neobsahuje prvky vraci 0.
Pokud byly odmazány položky ukazovátko se posune na konec.
Pokud je "Arround = true", tak při poslední položce se ukazovátko
přesune na první položku.
Při "Arround = false" při poslední položce vrací poslední položku.
Top
void *GetPreview(void)
Přesune ukazovátko na předchozí položku a vrátí ji.
Možno použít i jen jako přesouvání ukazovátka.
Pokud neobsahuje prvky vraci 0.
Pokud byly odmazány položky ukazovátko se posune na konec.
Pokud je "Arround = true", tak při první položce se ukazovátko
přesune na poslední položku.
Při "Arround = false" při první položce vrací prvni položku.
Top
void SetNoMove(void)
Při dalším volání "GetNext()" nebo "GetPrewiev()" NEpřesune
ukazovátko.
Při dálším volání "GetNext()" nebo "GetPrewiev()" bude
ukazovátko již standardně přesouváno.
Top
bool InsertOn(void* I)
Vloží položku na pozici ukazovátka.
Vrací false při neuspěchu a true v připadě úspěchu.
Top
operator[]
Vrací ukazatel s pozice, stekně jak fce "GetPointer()".
Příklad
MyItems I, *p_I;
TSS_List *List = new TSS(100,50);
if(List->IsNull)
{
//error not enought memory
}
if(!List->Add(&I)
{
//error not enought memory
}
p_I = (MyItems *) (*List)[0];
//program
//free List
delete List; //Memory of I is not freed
Top
Back to TT_ListWithPointer
Back to Index
Domovská stránka autora (udělej kuk !!!)