00001 /* 00002 00003 ************************************************************************* 00004 00005 ArmageTron -- Just another Tron Lightcycle Game in 3D. 00006 Copyright (C) 2000 Manuel Moos (manuel@moosnet.de) 00007 00008 ************************************************************************** 00009 00010 This program is free software; you can redistribute it and/or 00011 modify it under the terms of the GNU General Public License 00012 as published by the Free Software Foundation; either version 2 00013 of the License, or (at your option) any later version. 00014 00015 This program is distributed in the hope that it will be useful, 00016 but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 GNU General Public License for more details. 00019 00020 You should have received a copy of the GNU General Public License 00021 along with this program; if not, write to the Free Software 00022 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00023 00024 *************************************************************************** 00025 00026 */ 00027 00028 #ifndef TINIFILE_H 00029 #define TINIFILE_H 00030 00031 #include "aa_config.h" 00032 00033 #include <map> 00034 #include <deque> 00035 // Needed for sprintf, below 00036 #include <stdio.h> 00037 00038 #include "tString.h" 00039 00040 // This hairy thing just means we use an associative array to reach each group, 00041 // Followed by an associative array that is the content of each group 00042 // For lines that don't have a key=value pair, we'll generate our own keys and store 00043 // the line as the value 00044 typedef std::map<tString, tString> IniValue; 00045 typedef std::map<tString, IniValue > tIniGroups; 00046 00047 00048 class tIniFile { 00049 public: 00050 tIniFile(); 00051 ~tIniFile(); 00052 tIniFile(const char* filename); 00053 00054 void LoadFile(const char* filename); 00055 00056 bool HasGroup(const char* group); 00057 bool HasKey(const char* group, const char* key); 00058 IniValue GetGroup(const char* group); 00059 00060 tString GetValue(const char* group, const char* key); 00061 std::deque<tString> GetGroups(); 00062 std::deque<tString> GetKeys(const char* group); 00063 00064 // Debugging method 00065 void Dump(); 00066 private: 00067 tIniGroups m_Groups; 00068 }; 00069 00070 #endif