1 /**************************************************************************
2 ** (c) Copyright 2002, Andromeda Technology & Automation
3 ***************************************************************************
4 ** MODULE INFORMATION *
5 ***********************
6 ** FILE NAME : configuration.h
7 ** SYSTEM NAME : AXE - Andromeda X-windows Encapsulation
8 ** VERSION NUMBER : $Revision: 1.4 $
10 ** DESCRIPTION : Definition of configuration class
12 ** EXPORTED OBJECTS : class configuration
14 ** MODULES USED : String
15 ***************************************************************************
16 ** ADMINISTRATIVE INFORMATION *
17 ********************************
18 ** ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
19 ** CREATION DATE : Nov 02, 2002
22 **************************************************************************/
24 /*****************************
25 $Log: configuration.h,v $
26 Revision 1.4 2007-05-04 14:01:22 arjen
27 Added new arguments to configuration::find_parameter() to allow for a list of
28 sections and a list of parameters in sections.
29 The new arguments are section index and parameter index (default = 0).
31 Revision 1.3 2002/11/02 14:35:15 arjen
33 BugFix: segfault when finding a parameters that is not in the user-sepcific
36 Revision 1.2 2002/09/02 06:18:20 arjen
37 Fixed some date and time conversion functions
39 Revision 1.1 2002/07/25 08:01:26 arjen
40 First checkin, AXE release 0.2
42 *****************************/
44 /* static const char *RCSID = "$Id: configuration.h,v 1.4 2007-05-04 14:01:22 arjen Exp $"; */
46 #ifndef CONFIGURATION_H
47 #define CONFIGURATION_H
49 #include <libxml/parser.h> // usually in /usr/include/libxml2, see xml2-config
54 ///////////////////////////////////////////////////////////////////////////
55 // NAME : configuration
62 // DESCRIPTION : Handle configurational parameters for the application.
63 // Many applications need some permanently stored configurational
64 // data. The information is usually stored in two places: A system-
65 // wide configuration file and a configuration file per user.
66 // The content of the configuration file is in XML format.
67 // The configuration base class takes care of finding the configuration
68 // files, e.g. in /etc/app.conf or in /usr/local/etc/app.conf, along
69 // with the configuration file in the user's home directory.
70 // The config files are parsed with the gnome XML parser and a
71 // framework is provided to find configurational items.
75 // LAST MODIFIED : Apr 13, 2007
76 ///////////////////////////////////////////////////////////////////////////
82 xmlDocPtr system; // The system-wide config tree
83 xmlDocPtr user; // User-specific config tree
84 String app_name; // Name of the application and XML root element
86 xmlNodePtr xmlFindTag(xmlNodePtr, const String, int n = 0);
97 // Find the config files and parse the XML
99 bool read(const String name);
101 // Return the value of a config parameter
103 String find_parameter(const String section, const String parameter, int sec_n = 0, int param_n = 0);
107 #endif // CONFIGURATION_H