summaryrefslogtreecommitdiff
path: root/settings.h
diff options
context:
space:
mode:
Diffstat (limited to 'settings.h')
-rw-r--r--settings.h61
1 files changed, 37 insertions, 24 deletions
diff --git a/settings.h b/settings.h
index 7dff53dcb..3b588593f 100644
--- a/settings.h
+++ b/settings.h
@@ -3,33 +3,46 @@
#ifndef SETTINGS_H
#define SETTINGS_H
+/* Convention/Type of settings. This will be merged mostly with the SaveLoad
+ * SLE_ enums. So it looks a bit strange. The layout is as follows:
+ * bits 0-7: the type (size) of the variable. Eg int8, uint8, bool, etc. Same as VarTypes
+ * bits 8-15: the generic variable type. Eg string, oneofmany, number, intlist
+ * bits 16-31: the size of a string, an intlist (which is an implicit array). */
+/* XXX - the GenericType will NOT be shifted in the final implementation, just for compatility */
enum SettingDescType {
- SDT_INTX, // must be 0
- SDT_ONEOFMANY,
- SDT_MANYOFMANY,
- SDT_BOOLX,
- SDT_STRING,
- SDT_STRINGBUF,
- SDT_INTLIST,
- SDT_STRINGQUOT, // string with quotation marks around it
- SDT_CHAR,
-
- SDT_INT8 = 0 << 4,
- SDT_UINT8 = 1 << 4,
- SDT_INT16 = 2 << 4,
- SDT_UINT16 = 3 << 4,
- SDT_INT32 = 4 << 4,
- SDT_UINT32 = 5 << 4,
- SDT_CALLBX = 6 << 4,
+ /* 4 bytes allocated a maximum of 16 types for GenericType */
+ SDT_NUMX = 0 << 8, // value must be 0!!, refers to any number-type
+ SDT_BOOLX = 1 << 8, // a boolean number
+ SDT_ONEOFMANY = 2 << 8, // bitmasked number where only ONE bit may be set
+ SDT_MANYOFMANY = 3 << 8, // bitmasked number where MULTIPLE bits may be set
+ SDT_INTLIST = 4 << 8, // list of integers seperated by a comma ','
+ SDT_STRING = 5 << 8, // string which is only a pointer, so needs dynamic allocation
+ SDT_STRINGBUF = 6 << 8, // string with a fixed length, preset buffer
+ SDT_STRINGQUOT = 7 << 8, // string with quotation marks around it (enables spaces in string)
+ SDT_CHAR = 8 << 8, // single character
+ /* 7 more possible primitives */
- SDT_UINT = SDT_UINT32,
- SDT_INT = SDT_INT32,
-
- SDT_NOSAVE = 1 << 8,
-
- SDT_CALLB = SDT_INTX | SDT_CALLBX,
+ /* 4 bytes allocated a maximum of 16 types for NumberType */
+ SDT_INT8 = 0 << 4,
+ SDT_UINT8 = 1 << 4,
+ SDT_INT16 = 2 << 4,
+ SDT_UINT16 = 3 << 4,
+ SDT_INT32 = 4 << 4,
+ SDT_UINT32 = 5 << 4,
+ SDT_INT64 = 6 << 4,
+ SDT_UINT64 = 7 << 4,
+ /* 8 more possible primitives */
+ /* Shortcut values */
SDT_BOOL = SDT_BOOLX | SDT_UINT8,
+ SDT_UINT = SDT_UINT32,
+ SDT_INT = SDT_INT32,
+ SDT_STR = SDT_STRING,
+ SDT_STRB = SDT_STRINGBUF,
+ SDT_STRQ = SDT_STRINGQUOT,
+
+ /* The value is read from the configuration file but not saved */
+ SDT_NOSAVE = 1 << 31,
};
typedef enum {
@@ -42,7 +55,7 @@ typedef struct SettingDesc {
int flags;
const void *def;
void *ptr;
- const void *b;
+ const void *many;
} SettingDesc;
void IConsoleSetPatchSetting(const char *name, const char *value);