Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/OgreMain/include/OgreConfigFile.h @ 1

Last change on this file since 1 was 1, checked in by landauf, 17 years ago
File size: 4.5 KB
RevLine 
[1]1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2006 Torus Knot Software Ltd
8Also see acknowledgements in Readme.html
9
10This program is free software; you can redistribute it and/or modify it under
11the terms of the GNU Lesser General Public License as published by the Free Software
12Foundation; either version 2 of the License, or (at your option) any later
13version.
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public License along with
20this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22http://www.gnu.org/copyleft/lesser.txt.
23
24You may alternatively use this source under the terms of a specific version of
25the OGRE Unrestricted License provided you have obtained such a license from
26Torus Knot Software Ltd.
27-----------------------------------------------------------------------------
28*/
29#ifndef __ConfigFile_H__
30#define __ConfigFile_H__
31
32#include "OgrePrerequisites.h"
33
34#include "OgreString.h"
35#include "OgreStringVector.h"
36#include "OgreIteratorWrappers.h"
37#include "OgreDataStream.h"
38
39namespace Ogre {
40
41    /** Class for quickly loading settings from a text file.
42        @remarks
43            This class is designed to quickly parse a simple file containing
44            key/value pairs, mainly for use in configuration settings.
45        @par
46            This is a very simplified approach, no multiple values per key
47            are allowed, no grouping or context is being kept etc.
48        @par
49            By default the key/values pairs are tokenised based on a
50            separator of Tab, the colon (:) or equals (=) character. Each
51            key - value pair must end in a carriage return.
52        @par
53            Settings can be optionally grouped in sections, using a header
54            beforehand of the form [SectionName].
55    */
56    class _OgreExport ConfigFile
57    {
58    public:
59
60        ConfigFile();
61        virtual ~ConfigFile();
62        /// load from a filename (not using resource group locations)
63        void load(const String& filename, const String& separators = "\t:=", bool trimWhitespace = true);
64        /// load from a filename (using resource group locations)
65        void load(const String& filename, const String& resourceGroup, const String& separators = "\t:=", bool trimWhitespace = true);
66        /// load from a data stream
67        void load(const DataStreamPtr& stream, const String& separators = "\t:=", bool trimWhitespace = true);
68                /// load from a filename (not using resource group locations)
69                void loadDirect(const String& filename, const String& separators = "\t:=", bool trimWhitespace = true);
70                /// load from a filename (using resource group locations)
71                void loadFromResourceSystem(const String& filename, const String& resourceGroup, const String& separators = "\t:=", bool trimWhitespace = true);
72
73        /** Gets the first setting from the file with the named key.
74        @param key The name of the setting
75        @param section The name of the section it must be in (if any)
76        */
77        String getSetting(const String& key, const String& section = StringUtil::BLANK) const;
78        /** Gets all settings from the file with the named key. */
79        StringVector getMultiSetting(const String& key, const String& section = StringUtil::BLANK) const;
80
81        typedef std::multimap<String, String> SettingsMultiMap;
82        typedef MapIterator<SettingsMultiMap> SettingsIterator;
83        /** Gets an iterator for stepping through all the keys / values in the file. */
84        typedef std::map<String, SettingsMultiMap*> SettingsBySection;
85        typedef MapIterator<SettingsBySection> SectionIterator;
86        /** Get an iterator over all the available sections in the config file */
87        SectionIterator getSectionIterator(void);
88        /** Get an iterator over all the available settings in a section */
89        SettingsIterator getSettingsIterator(const String& section = StringUtil::BLANK);
90
91
92       
93        /** Clear the settings */
94        void clear(void);
95    protected:
96        SettingsBySection mSettings;
97    };
98
99}
100
101
102#endif
Note: See TracBrowser for help on using the repository browser.