aboutsummaryrefslogtreecommitdiffstats
path: root/libconfig.h
diff options
context:
space:
mode:
authorJonathan McCrohan <jmccrohan@gmail.com>2011-12-01 22:56:23 +0000
committerJonathan McCrohan <jmccrohan@gmail.com>2011-12-01 22:56:23 +0000
commit429e46051dba814e7d6c74368eb1bba550222cbe (patch)
treeed1dd43cd23c69f156aae2165006a16a66262cef /libconfig.h
parent58bf1382be0cbcf3f9649286fd2719b789a1595f (diff)
downloadlibconfig-429e46051dba814e7d6c74368eb1bba550222cbe.tar.gz
Imported Upstream version 1.4.8upstream/1.4.8
Diffstat (limited to '')
-rw-r--r--lib/libconfig.h (renamed from libconfig.h)87
-rw-r--r--lib/libconfig.hh (renamed from libconfig.hh)2
-rw-r--r--libconfig.h++424
3 files changed, 72 insertions, 441 deletions
diff --git a/libconfig.h b/lib/libconfig.h
index cf6c67a..cc079db 100644
--- a/libconfig.h
+++ b/lib/libconfig.h
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A library for processing structured configuration files
- Copyright (C) 2005-2009 Mark A Lindner
+ Copyright (C) 2005-2010 Mark A Lindner
This file is part of libconfig.
@@ -39,6 +39,10 @@ extern "C" {
#define LIBCONFIG_API
#endif /* WIN32 */
+#define LIBCONFIG_VER_MAJOR 1
+#define LIBCONFIG_VER_MINOR 4
+#define LIBCONFIG_VER_REVISION 8
+
#include <stdio.h>
#define CONFIG_TYPE_NONE 0
@@ -61,7 +65,7 @@ extern "C" {
typedef union config_value_t
{
- long ival;
+ int ival;
long long llval;
double fval;
char *sval;
@@ -78,12 +82,19 @@ typedef struct config_setting_t
struct config_t *config;
void *hook;
unsigned int line;
+ const char *file;
} config_setting_t;
+typedef enum
+{
+ CONFIG_ERR_NONE = 0,
+ CONFIG_ERR_FILE_IO = 1,
+ CONFIG_ERR_PARSE = 2
+} config_error_t;
+
typedef struct config_list_t
{
unsigned int length;
- unsigned int capacity;
config_setting_t **elements;
} config_list_t;
@@ -91,17 +102,29 @@ typedef struct config_t
{
config_setting_t *root;
void (*destructor)(void *);
- int flags;
+ unsigned short flags;
+ unsigned short tab_width;
+ short default_format;
+ const char *include_dir;
const char *error_text;
+ const char *error_file;
int error_line;
+ config_error_t error_type;
+ const char **filenames;
+ unsigned int num_filenames;
} config_t;
extern LIBCONFIG_API int config_read(config_t *config, FILE *stream);
extern LIBCONFIG_API void config_write(const config_t *config, FILE *stream);
+extern LIBCONFIG_API void config_set_default_format(config_t *config,
+ short format);
+
extern LIBCONFIG_API void config_set_auto_convert(config_t *config, int flag);
extern LIBCONFIG_API int config_get_auto_convert(const config_t *config);
+extern LIBCONFIG_API int config_read_string(config_t *config, const char *str);
+
extern LIBCONFIG_API int config_read_file(config_t *config,
const char *filename);
extern LIBCONFIG_API int config_write_file(config_t *config,
@@ -109,11 +132,13 @@ extern LIBCONFIG_API int config_write_file(config_t *config,
extern LIBCONFIG_API void config_set_destructor(config_t *config,
void (*destructor)(void *));
+extern LIBCONFIG_API void config_set_include_dir(config_t *config,
+ const char *include_dir);
extern LIBCONFIG_API void config_init(config_t *config);
extern LIBCONFIG_API void config_destroy(config_t *config);
-extern LIBCONFIG_API long config_setting_get_int(
+extern LIBCONFIG_API int config_setting_get_int(
const config_setting_t *setting);
extern LIBCONFIG_API long long config_setting_get_int64(
const config_setting_t *setting);
@@ -125,7 +150,7 @@ extern LIBCONFIG_API const char *config_setting_get_string(
const config_setting_t *setting);
extern LIBCONFIG_API int config_setting_lookup_int(
- const config_setting_t *setting, const char *name, long *value);
+ const config_setting_t *setting, const char *name, int *value);
extern LIBCONFIG_API int config_setting_lookup_int64(
const config_setting_t *setting, const char *name, long long *value);
extern LIBCONFIG_API int config_setting_lookup_float(
@@ -136,7 +161,7 @@ extern LIBCONFIG_API int config_setting_lookup_string(
const config_setting_t *setting, const char *name, const char **value);
extern LIBCONFIG_API int config_setting_set_int(config_setting_t *setting,
- long value);
+ int value);
extern LIBCONFIG_API int config_setting_set_int64(config_setting_t *setting,
long long value);
extern LIBCONFIG_API int config_setting_set_float(config_setting_t *setting,
@@ -148,9 +173,10 @@ extern LIBCONFIG_API int config_setting_set_string(config_setting_t *setting,
extern LIBCONFIG_API int config_setting_set_format(config_setting_t *setting,
short format);
-extern LIBCONFIG_API short config_setting_get_format(config_setting_t *setting);
+extern LIBCONFIG_API short config_setting_get_format(
+ const config_setting_t *setting);
-extern LIBCONFIG_API long config_setting_get_int_elem(
+extern LIBCONFIG_API int config_setting_get_int_elem(
const config_setting_t *setting, int idx);
extern LIBCONFIG_API long long config_setting_get_int64_elem(
const config_setting_t *setting, int idx);
@@ -162,7 +188,7 @@ extern LIBCONFIG_API const char *config_setting_get_string_elem(
const config_setting_t *setting, int idx);
extern LIBCONFIG_API config_setting_t *config_setting_set_int_elem(
- config_setting_t *setting, int idx, long value);
+ config_setting_t *setting, int idx, int value);
extern LIBCONFIG_API config_setting_t *config_setting_set_int64_elem(
config_setting_t *setting, int idx, long long value);
extern LIBCONFIG_API config_setting_t *config_setting_set_float_elem(
@@ -172,6 +198,9 @@ extern LIBCONFIG_API config_setting_t *config_setting_set_bool_elem(
extern LIBCONFIG_API config_setting_t *config_setting_set_string_elem(
config_setting_t *setting, int idx, const char *value);
+#define /* const char * */ config_get_include_dir(/* const config_t * */ C) \
+ ((C)->include_dir)
+
#define /* int */ config_setting_type(/* const config_setting_t * */ S) \
((S)->type)
@@ -186,12 +215,12 @@ extern LIBCONFIG_API config_setting_t *config_setting_set_string_elem(
/* const config_setting_t * */ S) \
(((S)->type == CONFIG_TYPE_GROUP) || ((S)->type == CONFIG_TYPE_LIST) \
|| ((S)->type == CONFIG_TYPE_ARRAY))
-
+
#define /* int */ config_setting_is_number(/* const config_setting_t * */ S) \
(((S)->type == CONFIG_TYPE_INT) \
|| ((S)->type == CONFIG_TYPE_INT64) \
|| ((S)->type == CONFIG_TYPE_FLOAT))
-
+
#define /* int */ config_setting_is_scalar(/* const config_setting_t * */ S) \
(((S)->type == CONFIG_TYPE_BOOL) || ((S)->type == CONFIG_TYPE_STRING) \
|| config_setting_is_number(S))
@@ -231,9 +260,11 @@ extern LIBCONFIG_API void config_setting_set_hook(config_setting_t *setting,
extern LIBCONFIG_API config_setting_t *config_lookup(const config_t *config,
const char *path);
+extern LIBCONFIG_API config_setting_t *config_lookup_from(
+ config_setting_t *setting, const char *path);
extern LIBCONFIG_API int config_lookup_int(const config_t *config,
- const char *path, long *value);
+ const char *path, int *value);
extern LIBCONFIG_API int config_lookup_int64(const config_t *config,
const char *path,
long long *value);
@@ -249,16 +280,40 @@ extern LIBCONFIG_API int config_lookup_string(const config_t *config,
/* const config_t * */ C) \
((C)->root)
-#define /* unsigned short */ config_setting_source_line( \
- /* const config_t */ C) \
- ((C)->line)
+#define /* void */ config_set_default_format(/* config_t * */ C, \
+ /* short */ F) \
+ (C)->default_format = (F)
+
+#define /* short */ config_get_default_format(/* config_t * */ C) \
+ ((C)->default_format)
+
+#define /* void */ config_set_tab_width(/* config_t * */ C, \
+ /* unsigned short */ W) \
+ (C)->tab_width = ((W) & 0x0F)
+
+#define /* unsigned char */ config_get_tab_width(/* const config_t * */ C) \
+ ((C)->tab_width)
+
+#define /* unsigned short */ config_setting_source_line( \
+ /* const config_setting_t * */ S) \
+ ((S)->line)
+
+#define /* const char */ config_setting_source_file( \
+ /* const config_setting_t * */ S) \
+ ((S)->file)
#define /* const char * */ config_error_text(/* const config_t * */ C) \
((C)->error_text)
+#define /* const char * */ config_error_file(/* const config_t * */ C) \
+ ((C)->error_file)
+
#define /* int */ config_error_line(/* const config_t * */ C) \
((C)->error_line)
+#define /* config_error_t */ config_error_type(/* const config_t * */ C) \
+ ((C)->error_type)
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/libconfig.hh b/lib/libconfig.hh
index 8b3b2d5..6883a31 100644
--- a/libconfig.hh
+++ b/lib/libconfig.hh
@@ -1,6 +1,6 @@
/* ----------------------------------------------------------------------------
libconfig - A structured configuration file parsing library
- Copyright (C) 2005-2008 Mark A Lindner
+ Copyright (C) 2005-2010 Mark A Lindner
This file is part of libconfig.
diff --git a/libconfig.h++ b/libconfig.h++
deleted file mode 100644
index 0a3b4b2..0000000
--- a/libconfig.h++
+++ /dev/null
@@ -1,424 +0,0 @@
-/* ----------------------------------------------------------------------------
- libconfig - A library for processing structured configuration files
- Copyright (C) 2005-2009 Mark A Lindner
-
- This file is part of libconfig.
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- as published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, see
- <http://www.gnu.org/licenses/>.
- ----------------------------------------------------------------------------
-*/
-
-#ifndef __libconfig_hpp
-#define __libconfig_hpp
-
-#include <stdio.h>
-#include <string>
-#include <map>
-
-namespace libconfig
-{
-
-#include <libconfig.h>
-
- class LIBCONFIG_API ConfigException : public std::exception { };
-
- class Setting; // fwd decl
-
- class LIBCONFIG_API SettingException : public ConfigException
- {
- friend class Config;
-
- public:
-
- SettingException(const SettingException &other);
- SettingException& operator=(const SettingException &other);
-
- virtual ~SettingException() throw();
-
- const char *getPath() const;
-
- virtual const char *what() const throw();
-
- protected:
-
- SettingException(const Setting &setting);
- SettingException(const Setting &setting, int idx);
- SettingException(const Setting &setting, const char *name);
- SettingException(const char *path);
-
- private:
-
- char *_path;
- };
-
- class LIBCONFIG_API SettingTypeException : public SettingException
- {
- friend class Config;
- friend class Setting;
-
- const char *what() const throw();
-
- private:
-
- SettingTypeException(const Setting &setting);
- SettingTypeException(const Setting &setting, int idx);
- SettingTypeException(const Setting &setting, const char *name);
- };
-
- class LIBCONFIG_API SettingNotFoundException : public SettingException
- {
- friend class Config;
- friend class Setting;
-
- const char *what() const throw();
-
- private:
-
- SettingNotFoundException(const Setting &setting, int idx);
- SettingNotFoundException(const Setting &setting, const char *name);
- SettingNotFoundException(const char *path);
- };
-
- class LIBCONFIG_API SettingNameException : public SettingException
- {
- friend class Config;
- friend class Setting;
-
- const char *what() const throw();
-
- private:
-
- SettingNameException(const Setting &setting, const char *name);
- };
-
- class LIBCONFIG_API FileIOException : public ConfigException
- {
- const char *what() const throw();
- };
-
- class LIBCONFIG_API ParseException : public ConfigException
- {
- friend class Config;
-
- public:
-
- virtual ~ParseException() throw();
-
- inline int getLine() throw()
- { return(_line); }
-
- inline const char *getError() throw()
- { return(_error); }
-
- const char *what() const throw();
-
- private:
-
- ParseException(int line, const char *error);
-
- int _line;
- const char *_error;
- };
-
- class LIBCONFIG_API Setting
- {
- friend class Config;
-
- public:
-
- enum Type
- {
- TypeNone = 0,
- // scalar types
- TypeInt,
- TypeInt64,
- TypeFloat,
- TypeString,
- TypeBoolean,
- // aggregate types
- TypeGroup,
- TypeArray,
- TypeList
- };
-
- enum Format
- {
- FormatDefault = 0,
- FormatHex = 1
- };
-
- private:
-
- config_setting_t *_setting;
- Type _type;
- Format _format;
-
- Setting(config_setting_t *setting);
-
- void assertType(Type type) const
- throw(SettingTypeException);
- static Setting & wrapSetting(config_setting_t *setting);
-
- Setting(const Setting& other); // not supported
- Setting& operator=(const Setting& other); // not supported
-
- public:
-
- virtual ~Setting() throw();
-
- inline Type getType() const throw() { return(_type); }
-
- inline Format getFormat() const throw() { return(_format); }
- void setFormat(Format format) throw();
-
- operator bool() const throw(SettingTypeException);
- operator long() const throw(SettingTypeException);
- operator unsigned long() const throw(SettingTypeException);
- operator int() const throw(SettingTypeException);
- operator unsigned int() const throw(SettingTypeException);
- operator long long() const throw(SettingTypeException);
- operator unsigned long long() const throw(SettingTypeException);
- operator double() const throw(SettingTypeException);
- operator float() const throw(SettingTypeException);
- operator const char *() const throw(SettingTypeException);
- operator std::string() const throw(SettingTypeException);
-
- Setting & operator=(bool value) throw(SettingTypeException);
- Setting & operator=(long value) throw(SettingTypeException);
- Setting & operator=(int value) throw(SettingTypeException);
- Setting & operator=(const long long &value) throw(SettingTypeException);
- Setting & operator=(const double &value) throw(SettingTypeException);
- Setting & operator=(float value) throw(SettingTypeException);
- Setting & operator=(const char *value) throw(SettingTypeException);
- Setting & operator=(const std::string &value) throw(SettingTypeException);
-
- Setting & operator[](const char * key) const
- throw(SettingTypeException, SettingNotFoundException);
-
- inline Setting & operator[](const std::string & key) const
- throw(SettingTypeException, SettingNotFoundException)
- { return(operator[](key.c_str())); }
-
- Setting & operator[](int index) const
- throw(SettingTypeException, SettingNotFoundException);
-
- bool lookupValue(const char *name, bool &value) const throw();
- bool lookupValue(const char *name, long &value) const throw();
- bool lookupValue(const char *name, unsigned long &value) const throw();
- bool lookupValue(const char *name, int &value) const throw();
- bool lookupValue(const char *name, unsigned int &value) const throw();
- bool lookupValue(const char *name, long long &value) const throw();
- bool lookupValue(const char *name, unsigned long long &value)
- const throw();
- bool lookupValue(const char *name, double &value) const throw();
- bool lookupValue(const char *name, float &value) const throw();
- bool lookupValue(const char *name, const char *&value) const throw();
- bool lookupValue(const char *name, std::string &value) const throw();
-
- inline bool lookupValue(const std::string &name, bool &value)
- const throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, long &value)
- const throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, unsigned long &value)
- const throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, int &value) const throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, unsigned int &value)
- const throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, long long &value)
- const throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name,
- unsigned long long &value) const throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, double &value) const
- throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, float &value) const
- throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, const char *&value) const
- throw()
- { return(lookupValue(name.c_str(), value)); }
-
- inline bool lookupValue(const std::string &name, std::string &value) const
- throw()
- { return(lookupValue(name.c_str(), value)); }
-
- void remove(const char *name)
- throw(SettingTypeException, SettingNotFoundException);
-
- inline void remove(const std::string & name)
- throw(SettingTypeException, SettingNotFoundException)
- { remove(name.c_str()); }
-
- void remove(unsigned int idx)
- throw(SettingTypeException, SettingNotFoundException);
-
- inline Setting & add(const std::string & name, Type type)
- throw(SettingNameException, SettingTypeException)
- { return(add(name.c_str(), type)); }
-
- Setting & add(const char *name, Type type)
- throw(SettingNameException, SettingTypeException);
-
- Setting & add(Type type) throw(SettingTypeException);
-
- inline bool exists(const std::string & name) const throw()
- { return(exists(name.c_str())); }
-
- bool exists(const char *name) const throw();
-
- int getLength() const throw();
- const char *getName() const throw();
- std::string getPath() const;
- int getIndex() const throw();
-
- const Setting & getParent() const throw(SettingNotFoundException);
- Setting & getParent() throw(SettingNotFoundException);
-
- bool isRoot() const throw();
-
- inline bool isGroup() const throw()
- { return(_type == TypeGroup); }
-
- inline bool isArray() const throw()
- { return(_type == TypeArray); }
-
- inline bool isList() const throw()
- { return(_type == TypeList); }
-
- inline bool isAggregate() const throw()
- { return(_type >= TypeGroup); }
-
- inline bool isScalar() const throw()
- { return((_type > TypeNone) && (_type < TypeGroup)); }
-
- inline bool isNumber() const throw()
- { return((_type == TypeInt) || (_type == TypeInt64)
- || (_type == TypeFloat)); }
-
- inline unsigned int getSourceLine() const throw()
- { return(config_setting_source_line(_setting)); }
- };
-
- class LIBCONFIG_API Config
- {
- private:
-
- config_t _config;
-
- static void ConfigDestructor(void *arg);
- Config(const Config& other); // not supported
- Config& operator=(const Config& other); // not supported
-
- public:
-
- Config();
- virtual ~Config();
-
- void setAutoConvert(bool flag);
- bool getAutoConvert() const;
-
- void read(FILE *stream) throw(ParseException);
- void write(FILE *stream) const;
-
- void readFile(const char *filename) throw(FileIOException, ParseException);
- void writeFile(const char *filename) throw(FileIOException);
-
- inline Setting & lookup(const std::string &path) const
- throw(SettingNotFoundException)
- { return(lookup(path.c_str())); }
-
- Setting & lookup(const char *path) const throw(SettingNotFoundException);
-
- inline bool exists(const std::string & path) const throw()
- { return(exists(path.c_str())); }
-
- bool exists(const char *path) const throw();
-
- bool lookupValue(const char *path, bool &value) const throw();
- bool lookupValue(const char *path, long &value) const throw();
- bool lookupValue(const char *path, unsigned long &value) const throw();
- bool lookupValue(const char *path, int &value) const throw();
- bool lookupValue(const char *path, unsigned int &value) const throw();
- bool lookupValue(const char *path, long long &value) const throw();
- bool lookupValue(const char *path, unsigned long long &value)
- const throw();
- bool lookupValue(const char *path, double &value) const throw();
- bool lookupValue(const char *path, float &value) const throw();
- bool lookupValue(const char *path, const char *&value) const throw();
- bool lookupValue(const char *path, std::string &value) const throw();
-
- inline bool lookupValue(const std::string &path, bool &value) const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, long &value) const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, unsigned long &value)
- const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, int &value) const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, unsigned int &value)
- const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, long long &value)
- const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path,
- unsigned long long &value) const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, double &value)
- const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, float &value)
- const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, const char *&value)
- const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- inline bool lookupValue(const std::string &path, std::string &value)
- const throw()
- { return(lookupValue(path.c_str(), value)); }
-
- Setting & getRoot() const;
- };
-
-} // namespace libconfig
-
-#endif // __libconfig_hpp