X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.h;h=d6c88b29bbfb64ee1561f51c718695a9fa0d66c1;hb=6945f3749927053ee70b47133b2998557a452f75;hp=d3328728e626245a9d74ed90ef9b802cff246b38;hpb=4fcf5c6436d34bdc44bc534d21d9ec95bf072333;p=rocksndiamonds.git diff --git a/src/libgame/setup.h b/src/libgame/setup.h index d3328728..d6c88b29 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,11 +226,18 @@ int getFileVersionFromCookieString(const char *); boolean checkCookieString(const char *, const char *); char *getFormattedSetupEntry(char *, char *); + void freeSetupFileList(struct SetupFileList *); -char *getTokenValue(struct SetupFileList *, char *); -void setTokenValue(struct SetupFileList *, char *, char *); -struct SetupFileList *loadSetupFileList(char *); -void checkSetupFileListIdentifier(struct SetupFileList *, char *); +struct SetupFileList *newSetupFileList(char *, char *); +char *getListEntry(struct SetupFileList *, char *); +void setListEntry(struct SetupFileList *, char *, char *); + +void freeSetupFileHash(SetupFileHash *); +SetupFileHash *newSetupFileHash(); +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);