Index: libcfa/src/parseconfig.hfa
===================================================================
--- libcfa/src/parseconfig.hfa	(revision 4cc6c7d8c7a4fa871fba123c2b61cb2ffb1f04b6)
+++ libcfa/src/parseconfig.hfa	(revision e54654e7e732ad1385e6c0a32e2e85ea4aaa22c6)
@@ -5,4 +5,5 @@
 	void * variable;
 	bool (*parse)( const char *, void * );
+	bool (*validate)( void * );
 };
 
@@ -14,4 +15,13 @@
 	this.variable = (void *)&variable;
 	this.parse    = (bool (*)(const char *, void *))(bool (*)(const char *, T &))parse;
+	this.validate = 0p;
+}
+
+forall(T & | { bool parse( const char *, T & ); })
+static inline void ?{}( config_entry & this, const char * key, T & variable, bool (*validate)(T &) ) {
+	this.key      = key;
+	this.variable = (void *)&variable;
+	this.parse    = (bool (*)(const char *, void *))(bool (*)(const char *, T &))parse;
+	this.validate = (bool (*)(void *))(bool (*)(T &))validate;
 }
 
@@ -21,4 +31,13 @@
 	this.variable = (void *)&variable;
 	this.parse    = (bool (*)(const char *, void *))(bool (*)(const char *, T &))parse;
+	this.validate = 0p;
+}
+
+forall(T &)
+static inline void ?{}( config_entry & this, const char * key, T & variable, bool (*parse)(const char *, T &), bool (*validate)(T &) ) {
+	this.key      = key;
+	this.variable = (void *)&variable;
+	this.parse    = (bool (*)(const char *, void *))(bool (*)(const char *, T &))parse;
+	this.validate = (bool (*)(void *))(bool (*)(T &))validate;
 }
 
