Sleeping Wombat GUI
0.100
swGUI
|
Szablon klasy do przechowywania assetów. More...
#include <ResourceContainer.h>
Public Member Functions | |
ResourceContainer () | |
~ResourceContainer () | |
Destruktor zwalnia wszystkie elementy w mapie (także pamięć po nich) More... | |
int | Remove (const std::wstring &name) |
Usuwa element o podanej nazwie, jeżeli nie ma do niego odwołań. More... | |
int | Remove (unsigned int id) |
Usuwa element o podanym indeksie, jeżeli nie ma do niego odwołań. More... | |
int | RemoveUnused () |
Kasuje wszystkie elementy w kontenerze, które nie są używane przez żaden obiekt. Kasowanie jest w pełni bezpieczne. More... | |
void | UnsafeAdd (const std::wstring &name, TYPE *resource) |
Dodaje element do kontanera + nadaje mu unikalny identyfikator. More... | |
TYPE * | get (unsigned int id) |
Zwraca element na podstawie identyfikatora. More... | |
unsigned int | GetNextId () |
Zwraca identyfikator, który zostanie przydzielony kolejnemu elementowi. More... | |
TYPE * | get (const std::wstring &name) |
Zwraca element na podstawie jego nazwy. More... | |
template<typename DescType > | |
TYPE * | Find (const DescType &desc) |
Finds resource matching given descriptor. More... | |
std::vector< ResourcePtr< TYPE > > | List () |
Listuje wszystkie assety danego typu. More... | |
Protected Member Functions | |
int | ForceRemove (const std::wstring &name) |
Wymusza skasowanie podanego elementu, nawet jeżeli jest używany. More... | |
int | ForceRemove (unsigned int id) |
Wymusza skasowanie podanego elementu. More... | |
void | ForceRemoveAll () |
Kasuje wszystkie elementy niezależnie od tego czy były używane, a następnie czyści mapę. More... | |
void | ReleaseMemory (TYPE *) |
Zwalnia obiekt podany w parametrze. More... | |
Protected Attributes | |
std::map< std::wstring, TYPE * > | container |
Kontener zawierający assety powiazane z ich nazwą More... | |
Private Attributes | |
unsigned int | count |
Indentyfikator jaki zostanie przydzielony kolejnemy elementowi. More... | |
Friends | |
class | AssetsManager |
class | ResourceManager |
Szablon klasy do przechowywania assetów.
Dodać IDki obok ścieżek.
Kontrner powinien obsługiwać ścieżki, jako obiekty typu Path zamiast wstringów.
Wszystkie assety są identyfikowane po nazwie, która najczęściej jest nazwą pliku, z którego asset pochodzi. Mapa zapewnia logarytmiczny czas dostępu po nazwie. Istnieje też możliwość odwołania się po identyfikatorze, wtedy czas dostępu jest liniowy (chyba że iterowanie po kolejnych elementacj mapy nie odbywa się liniowo.
ResourceContainer< TYPE >::ResourceContainer | ( | ) |
ResourceContainer< TYPE >::~ResourceContainer | ( | ) |
Destruktor zwalnia wszystkie elementy w mapie (także pamięć po nich)
|
inline |
Finds resource matching given descriptor.
Resource must implement GetDescriptor function. Descriptor must implement operator==.
Function finds resource in linear time. Use only for small containers.
|
protected |
Wymusza skasowanie podanego elementu, nawet jeżeli jest używany.
[in] | name | Nazwa elementu do usunięcia. |
|
protected |
Wymusza skasowanie podanego elementu.
[in] | id | Identyfkator elementu do usunięcia |
|
protected |
Kasuje wszystkie elementy niezależnie od tego czy były używane, a następnie czyści mapę.
TYPE * ResourceContainer< TYPE >::get | ( | unsigned int | id | ) |
Zwraca element na podstawie identyfikatora.
Wyszukiwanie po identyfikatorze jest liniowe, a po nazwie logarytmiczne. Jednakże porównania stringów mogą się okazać bardziej kosztowne.
[in] | id | Identyfikator elementu. |
|
inline |
Zwraca element na podstawie jego nazwy.
[in] | name | Nazwa elementu, który chcemy dostać |
|
inline |
Zwraca identyfikator, który zostanie przydzielony kolejnemu elementowi.
|
inline |
Listuje wszystkie assety danego typu.
|
protected |
Zwalnia obiekt podany w parametrze.
Kasowanie pamięci nie jest możliwe przy pomocy operatora delete, ponieważ destruktory w tych klasach są prywatne. Dlatego trzeba zrobić to za pośrednictwem obiektu, który ma uprawnienia do tego.
[in] | object | Objekt do skasowania. |
int ResourceContainer< TYPE >::Remove | ( | const std::wstring & | name | ) |
Usuwa element o podanej nazwie, jeżeli nie ma do niego odwołań.
[in] | name | nazwa elementu do usunięcia. |
int ResourceContainer< TYPE >::Remove | ( | unsigned int | id | ) |
Usuwa element o podanym indeksie, jeżeli nie ma do niego odwołań.
[in] | id | Identyfikator elementu |
int ResourceContainer< TYPE >::RemoveUnused | ( | ) |
Kasuje wszystkie elementy w kontenerze, które nie są używane przez żaden obiekt. Kasowanie jest w pełni bezpieczne.
void ResourceContainer< TYPE >::UnsafeAdd | ( | const std::wstring & | name, |
TYPE * | resource | ||
) |
Dodaje element do kontanera + nadaje mu unikalny identyfikator.
Jeżeli element już istniał, to zostanie nadpisany nowym, dlatego należy zawsze przed użyciem sprawdzić czy pod taką nazwą, coś już się nie znajduje.
[in] | name | Nazwa elementu, pod jaką zostanie dodany. |
[in] | resource | Element dodania. |
|
friend |
|
friend |
|
protected |
Kontener zawierający assety powiazane z ich nazwą
|
private |
Indentyfikator jaki zostanie przydzielony kolejnemy elementowi.