#ifndef _CONFIG_H
#define _CONFIG_H

#include <bfc/string/bfcstring.h>
#include <bfc/pair.h>
#include <bfc/critsec.h>
#include <bfc/string/StringW.h>

class StringPair : public Pair<StringW, StringW> 
{
public:
	StringPair(StringW &_a, const wchar_t *_b) 
	{
		b=_b;
		a.swap(_a);	
	}
};

class ConfigFile 
{
public:
  ConfigFile(const wchar_t *section, const wchar_t *name);
  ~ConfigFile();

  static void initialize();

  void setInt(const wchar_t *name, int val);
  int getInt(const wchar_t *name, int default_val);

  void setString(const wchar_t *name, const wchar_t *str);
  int getString(const wchar_t *name, wchar_t *buf, int buf_len, const wchar_t *default_str);

  int getStringLen(const wchar_t *name);

private:
  StringW sectionname;
	StringW prettyname;
  StringPair *getPair(const wchar_t *name);
  StringPair *makePair(const wchar_t *name, const wchar_t *value);
  CriticalSection cs;
};

#endif