/** ****************************************************************************** @file /common/rm/rmxml.h @brief RM pristupujici k XML souborum @author Vta @version 1.0 ******************************************************************************/ #ifndef _RMxml_ #define _RMxml_ #include "common/rm/rm.h" #include "common/rm/rmxmlstruct.h" #include "common/rm/rmconfi.h" namespace rm { // ! ! v cele aplikaci musi existovat prave jedna instance tridy TRM_xml ! ! /// RM pristupujici k jednoduchym xml souborum class TRM_xml:public TRM { public: /** @name Ziskani dat */ //@{ /** Ziska do *data odkaz na strukturu s id. Data se nekopiruji */ void get(void ** data,int id); /** Ziska vsechna data. Do ukazatele, na ktery ukazuje data se priradi ukazatel na pole, ktere je v RMxmli. */ void getAll(DA ** data); /** Vyplni pole ids tak, ze 1 je na i-te pozici, pokud existuji data s indexem i */ void getIds(DA * ids); /** Ziska vsechna data. Do ukazatele, na ktery ukazuje data se priradi ukazatel na pole, ktere je v RMxmli. */ void getAll(DA * data); //@} /** @name Nacitani/uvolnovani dat */ //@{ /** Odstrani nactenou strukturu z pameti */ void freeData(int id); /** Nacte data */ void loadXML(int id); //@} /** @name Pridavani, mazani a modifikace */ //@{ /** Prida dalsi data @param data vlastni data @param structid typ dat \ref STRUCT_TCL, \ref STRUCT_TERRAIN @param id pozice na kterou se data maji pridat, nebo -1, pokud na tom nezalezi @param startid pokud je id rovno -1, tento parametr urcuje, odkud se zacne hledat volny index @param file jmeno souboru, kde budou data ulozana @return Pozice, kam se data pridala */ int add(void* data,int structid,int id,int startid,char * file); /** Modifikuje jiz zapsana data s indexem id */ void modify(void* data,int id); // modifikuje jiz zapsany(nacteny) skript /** Odstrani data s indexem id */ void del(int id); // smaze skript (trvale ze seznamu) //@} /** @name Ziskani informaci o datech */ //@{ /** Vraci pocet vsech zaznamu v indexovem souboru */ int getCount(); /** Vraci pocet doposud nactenych dat */ int getLoaded(); //@} /** Konstruktor s interafacem pro konfiguracni soubory */ TRM_xml(TRM_conf_i * rmc); /** Destruktor */ ~TRM_xml(); private: /** Nacte model */ void loadData(int id); /** Vraci nejvetsi pouzity index. Tj. vetsi cislo z indexu v poli data a z indexu pouzitem v indexovem souboru others.xml */ int getMaxId(); /** Ziska celou cestu k souboru dat s danym id */ void getFileOf(int id,char * path,int pathsize); /** Interface pro konfiguracni soubory */ TRM_conf_i * rmconfi; /** Vlastni data */ DA * data; }; } // namespace #endif // define _RMxml_ /*****************************************************************************/