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 !!!)