Index: libcfa/src/parseconfig.cfa
===================================================================
--- libcfa/src/parseconfig.cfa	(revision 4df8fef5f8d3cd84ad5649094d027d5129c6c399)
+++ libcfa/src/parseconfig.cfa	(revision 5e0e488c66363e04e515e87f06604a0a775faa84)
@@ -1,4 +1,33 @@
 #include <fstream.hfa>
+#include <heap.hfa>
 #include "parseconfig.hfa"
+
+struct KVPairs {
+	int size, max_size;
+	* [ char *, char * ] data;
+};
+void ?{}( VLA & vla ) with ( vla ) {	// default constructor
+	size = 0; max_size = 0; data = 0p;
+}
+void ?{}( VLA & vla, int size, char fill = ['\0', '\0'] ) { // initialization
+	vla.[ size, max_size, data ] = [ size, max_size, alloc( size, fill ) ];
+}
+void ?{}( VLA & vla, VLA val ) with( val ) { // copy, deep
+	vla.[ size, max_size, data ] = [ size, max_size, alloc( size, data ) ];
+}
+void ^?{}( VLA & vla ) with ( vla ) {	// destructor
+	free( data );
+	size = 0; max_size = 0; data = 0p;
+}
+
+void add_kv_pair( KVPairs kv_pairs, char * k, char * v ) with( kv_pairs ) {
+	if ( size == max_size ) {
+		max_size = max_size * 2;
+		data = resize( data, max_size );
+	}
+
+	data[size] = [ k, v ];
+	++size;
+}
 
 bool comments( ifstream & in, char * name ) {
@@ -14,4 +43,6 @@
 // Process the configuration file to set the simulation parameters.
 void parse_config( const char * config_file, config_entry entries[], size_t num_entries ) {
+	KVPairs kv_pairs{ num_entries };
+
 	ifstream in;
 	try {
