X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Flibgame%2Fsetup.h;h=479f88c4c482030741b7589aedeebe78696b1967;hb=4bd981e9a75290ad6178c167ce8e02635ca7fa53;hp=e5dc50d88ea7b4c873f64a185d9653730f8efe40;hpb=7b47ce7ba0f673f0de5130daf5726104d0b38902;p=rocksndiamonds.git diff --git a/src/libgame/setup.h b/src/libgame/setup.h index e5dc50d8..479f88c4 100644 --- a/src/libgame/setup.h +++ b/src/libgame/setup.h @@ -15,6 +15,7 @@ #define SETUP_H #include "system.h" +#include "hash.h" /* values for setup file handling */ @@ -62,6 +63,25 @@ struct TokenInfo char *text; }; +/* some definitions for list and hash handling */ +typedef struct SetupFileList SetupFileList; +typedef struct hashtable SetupFileHash; + +#define BEGIN_HASH_ITERATION(hash, itr) \ + if (hash != NULL && hashtable_count(hash) > 0) \ + { \ + struct hashtable_itr *itr = hashtable_iterator(hash); \ + do { \ + +#define HASH_ITERATION_TOKEN(itr) ((char *)hashtable_iterator_key(itr)) +#define HASH_ITERATION_VALUE(itr) ((char *)hashtable_iterator_value(itr)) + +#define END_HASH_ITERATION(hash, itr) \ + } while (hashtable_iterator_advance(itr)); \ + free(itr); \ + } \ + + /* sort priorities of level series (also used as level series classes) */ #define LEVELCLASS_TUTORIAL_START 10 #define LEVELCLASS_TUTORIAL_END 99 @@ -195,6 +215,7 @@ void sortTreeInfo(TreeInfo **, int (*compare_function)(const void *, const void *)); char *getUserDataDir(void); +char *getCommonDataDir(void); char *getSetupDir(void); void createDirectory(char *, char *, int); void InitUserDataDirectory(void); @@ -205,12 +226,19 @@ int getFileVersionFromCookieString(const char *); boolean checkCookieString(const char *, const char *); char *getFormattedSetupEntry(char *, char *); -void freeSetupFileList(struct SetupFileList *); + struct SetupFileList *newSetupFileList(char *, char *); -char *getTokenValue(struct SetupFileList *, char *); -void setTokenValue(struct SetupFileList *, char *, char *); -struct SetupFileList *loadSetupFileList(char *); -void checkSetupFileListIdentifier(struct SetupFileList *, char *); +void freeSetupFileList(struct SetupFileList *); +char *getListEntry(struct SetupFileList *, char *); +void setListEntry(struct SetupFileList *, char *, char *); +SetupFileList *loadSetupFileList(char *); + +SetupFileHash *newSetupFileHash(); +void freeSetupFileHash(SetupFileHash *); +char *getHashEntry(SetupFileHash *, char *); +void setHashEntry(SetupFileHash *, char *, char *); +SetupFileHash *loadSetupFileHash(char *); +void checkSetupFileHashIdentifier(SetupFileHash *, char *); void setSetupInfo(struct TokenInfo *, int, char *); char *getSetupValue(int, void *); char *getSetupLine(struct TokenInfo *, char *, int);