Index: ext/libicpf/src/cfg.h =================================================================== diff -u -N --- ext/libicpf/src/cfg.h (revision 0d9a4d94a98872815d5840d1bcc4d394d455307c) +++ ext/libicpf/src/cfg.h (revision 0) @@ -1,159 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2004-2006 by J�zef Starosczyk * - * ixen@copyhandler.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Library General Public License as * - * published by the Free Software Foundation; either version 2 of the * - * License, or (at your option) any later version. * - * * - * This program 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 General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef __CFG_H__ -#define __CFG_H__ - -/** \file cfg.h - * \brief A placeholder for config class. - */ -#include "mutex.h" -#include "libicpf.h" -#include "gen_types.h" -#include "config_base.h" -#include "config_property.h" - -BEGIN_ICPF_NAMESPACE - -/** \brief Property group handling class - * - * Class is being used to manipulate the property groups (in connection with config::begin_group() and - * config::end_group(). - */ -class LIBICPF_API property_tracker -{ -public: -/** \name Construction/destruction/operators */ -/**@{*/ - property_tracker(); ///< Standard constructor - property_tracker(const property_tracker& rSrc); ///< Copy constructor - ~property_tracker(); ///< Standard destructor - - property_tracker& operator=(const property_tracker& rSrc); ///< Assignment operator -/**@}*/ - -/** \name Operations */ -/**@{*/ - void add(uint_t uiProp); ///< Adds a new property id to the list - bool is_set(uint_t uiProp); ///< Checks if a property id is set inside this list - size_t count() const; ///< Returns a count of properties in a list - - /// Retrieves the list of ID's - size_t get_ids(uint_t* puiProps, size_t stMaxCount); - /// Retrieves the list of ID's using an enumeration function - void enum_ids(bool(*pfn)(uint_t uiProp, ptr_t pParam), ptr_t pParam); -/**@}*/ - -protected: - ptr_t m_hProperties; ///< Internal member. Pointer to a storage structure with an int_t. -}; - -/** \brief Configuration management class. - * - * Class allows user to read and write configuration file in standard unix - * format (comments, empty lines and key=value strings). Class is fully thread-safe. - * Access to the properties is done by registering one and then getting or setting - * a value using the property identifier. - */ -class LIBICPF_API config -{ -public: -/** \name Construction/destruction */ -/**@{*/ - config(config_base* pCfgBase); ///< Standard constructor - ~config(); ///< Standard destructor -/**@}*/ - -/** \name Reading and writing to the external medium */ -/**@{*/ - void read(const tchar_t *pszPath); ///< Reads the properties from the source file - void write(const tchar_t* pszPath); ///< Saves the properties to the file -/**@}*/ - -/** \name Class lock/unlock functions */ -/**@{*/ - /// Locks the config class for one thread - void lock() { m_lock.lock(); }; - /// Unlocks the class - void unlock() { m_lock.unlock(); }; -/**@}*/ - - // property type management -/** Property types */ -/**@{*/ - uint_t get_type(uint_t uiProp); ///< Retrieves the property type - size_t get_value_count(uint_t uiProp); ///< Retrieves the count of values for array-based property types - void remove_array_value(uint_t uiProp, size_t stIndex); ///< Removes a value at a specified index in array-based property type - void clear_array_values(uint_t uiProp); ///< Removes all values in array-based property - size_t count(); ///< Retrieves the count of properties contained in this config -/**@}*/ - - // registering the properties -/** \name Properties registration functions */ -/**@{*/ - /// Registers signed number-type property - uint_t register_signed_num(const tchar_t* pszName, ll_t llDef, ll_t llLo, ll_t llHi, uint_t uiFlags=property::flag_none); - /// Registers unsigned number-type property - uint_t register_unsigned_num(const tchar_t* pszName, ull_t ullDef, ull_t ullLo, ull_t ullHi, uint_t uiFlags=property::flag_none); - /// Registers bool-type property - uint_t register_bool(const tchar_t* pszName, bool bDef, uint_t uiFlags=property::flag_none); - /// Registers string-type property - uint_t register_string(const tchar_t* pszName, const tchar_t* pszDef, uint_t uiFlags=property::flag_none); -/**@}*/ - - // getting property data -/** \name Getting and setting values */ -/**@{*/ - /// Gets the value of string-type property - const tchar_t* get_value(uint_t uiProp, tchar_t* pszBuffer, size_t stMaxSize, size_t stIndex=0); - /// Gets the value of longlong_t-type property - ll_t get_signed_num(uint_t uiProp, size_t stIndex=0); - /// Gets the value of ulonglong_t-type property - ull_t get_unsigned_num(uint_t uiProp, size_t stIndex=0); - /// Gets the value of bool-type property - bool get_bool(uint_t uiProp, size_t stIndex=0); - /// Gets the value of string-type property - const tchar_t* get_string(uint_t uiProp, size_t stIndex=0); - - // setting property data - /// Sets the value from the string - void set_value(uint_t uiProp, const tchar_t* pszVal, property::actions a=property::action_replace, size_t tIndex=0, property_tracker* pTracker=NULL); - /// Sets the value of longlong_t-type property - void set_signed_num(uint_t uiProp, ll_t llVal, property::actions a=property::action_replace, size_t tIndex=0, property_tracker* pTracker=NULL); - /// Sets the value of ulonglong_t-type property - void set_unsigned_num(uint_t uiProp, ull_t ullVal, property::actions a=property::action_replace, size_t tIndex=0, property_tracker* pTracker=NULL); - /// Sets the value of bool-type property - void set_bool(uint_t uiProp, bool bVal, property::actions a=property::action_replace, size_t tIndex=0, property_tracker* pTracker=NULL); - /// Sets the value of string-type property - void set_string(uint_t uiProp, const tchar_t* pszVal, property::actions a=property::action_replace, size_t tIndex=0, property_tracker* pTracker=NULL); -/**@}*/ - -protected: - void load_registered(); ///< Loads the registered property values from the underlying config base - void store_registered(); ///< Stores the registered property values to the underlying config base - -protected: - mutex m_lock; ///< Lock for the multi-threaded access to the properties - ptr_t m_hProps; ///< Handle to the registered property storage - config_base* m_pCfgBase; ///< Underlying base for this class -}; - -END_ICPF_NAMESPACE - -#endif