summaryrefslogtreecommitdiff
path: root/include/configreader.h
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-11-15 21:51:11 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-11-15 21:51:11 +0000
commit28bd852c8508414de24a1d29ea91121ef0b50504 (patch)
tree2f9b42d9fe0d8c1daaa569f129f7b035b9c5b29d /include/configreader.h
parent893242cff9a2efc3d7d6553a0b96c83c1033b638 (diff)
Comments, woo and yay
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5751 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/configreader.h')
-rw-r--r--include/configreader.h40
1 files changed, 36 insertions, 4 deletions
diff --git a/include/configreader.h b/include/configreader.h
index 069e6321d..e7047b569 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -35,6 +35,12 @@ class InspIRCd;
*/
enum ConfigDataType { DT_NOTHING, DT_INTEGER, DT_CHARPTR, DT_BOOLEAN };
+/** Holds a config value, either string, integer or boolean.
+ * Callback functions receive one or more of these, either on
+ * their own as a reference, or in a reference to a deque of them.
+ * The callback function can then alter the values of the ValueItem
+ * classes to validate the settings.
+ */
class ValueItem
{
std::string v;
@@ -91,6 +97,9 @@ class ValueItem
}
};
+/** The base class of the container 'ValueContainer'
+ * used internally by the core to hold core values.
+ */
class ValueContainerBase
{
public:
@@ -103,6 +112,14 @@ class ValueContainerBase
}
};
+/** ValueContainer is used to contain pointers to different
+ * core values such as the server name, maximum number of
+ * clients etc.
+ * It is specialized to hold a data type, then pointed at
+ * a value in the ServerConfig class. When the value has been
+ * read and validated, the Set method is called to write the
+ * value safely in a type-safe manner.
+ */
template<typename T> class ValueContainer : public ValueContainerBase
{
T val;
@@ -125,11 +142,27 @@ template<typename T> class ValueContainer : public ValueContainerBase
}
};
+/** A specialization of ValueContainer to hold a pointer to a bool
+ */
typedef ValueContainer<bool*> ValueContainerBool;
+
+/** A specialization of ValueContainer to hold a pointer to
+ * an unsigned int
+ */
typedef ValueContainer<unsigned int*> ValueContainerUInt;
+
+/** A specialization of ValueContainer to hold a pointer to
+ * a char array.
+ */
typedef ValueContainer<char*> ValueContainerChar;
+
+/** A specialization of ValueContainer to hold a pointer to
+ * an int
+ */
typedef ValueContainer<int*> ValueContainerInt;
+/** A set of ValueItems used by multi-value validator functions
+ */
typedef std::deque<ValueItem> ValueList;
/** A callback for validating a single value
@@ -142,7 +175,6 @@ typedef bool (*MultiValidator)(ServerConfig* conf, const char*, char**, ValueLis
*/
typedef bool (*MultiNotify)(ServerConfig* conf, const char*);
-
/** Holds a core configuration item and its callbacks
*/
struct InitialConfig
@@ -159,9 +191,9 @@ struct InitialConfig
*/
struct MultiConfig
{
- const char* tag;
- char* items[12];
- int datatype[12];
+ const char* tag;
+ char* items[12];
+ int datatype[12];
MultiNotify init_function;
MultiValidator validation_function;
MultiNotify finish_function;