Class allows reading data from INI files. More...
#include <loaders/ini_file.h>
Public Member Functions | |
INIFile (void) | |
INIFile (const char *thePath) | |
INIFile (const std::string &thePath) | |
void | LoadINIFile (const char *thePath) |
void | LoadINIFile (const std::string &thePath) |
void | SetPath (const char *thePath) |
void | SetPath (const std::string &thePath) |
const char * | GetPath (void) const |
const char * | GetString (const char *Section, const char *Key, char *Value, const char *Default=NULL) const |
void | SetString (const char *Section, const char *Key, const char *Value) |
void | SaveINIFile (const char *thePath=NULL) |
void | SaveINIFile (std::string &thePath) |
virtual | ~INIFile () |
Private Attributes | |
std::string | Path |
std::vector< std::string > | FileData |
bool | NeedSaveFile |
Class allows reading data from INI files.
Definition at line 50 of file ini_file.h.
nitro::INIFile::INIFile | ( | void | ) |
Default constructor.
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 11 of file ini_file.cpp.
References nitro::exception::code(), NeedSaveFile, Path, and nitro::exception::what().
{ try { Path = ""; NeedSaveFile = false; } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::INIFile( void )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::INIFile( void )::An error occured" ) , 1 ) ); } }
nitro::INIFile::INIFile | ( | const char * | thePath | ) |
Constructor.
thePath | - Path to the loading file. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 28 of file ini_file.cpp.
References nitro::exception::code(), LoadINIFile(), NeedSaveFile, and nitro::exception::what().
{ try { NeedSaveFile = false; LoadINIFile( thePath ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::INIFile( const char * thePath )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::INIFile( const char * thePath )::An error occured" ) , 1 ) ); } }
nitro::INIFile::INIFile | ( | const std::string & | thePath | ) |
Constructor.
thePath | - Path to the loading file. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 45 of file ini_file.cpp.
References nitro::exception::code(), LoadINIFile(), NeedSaveFile, and nitro::exception::what().
{ try { NeedSaveFile = false; LoadINIFile( thePath ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::INIFile( const std::string & thePath )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::INIFile( const std::string & thePath )::An error occured" ) , 1 ) ); } }
nitro::INIFile::~INIFile | ( | ) | [virtual] |
Destructor.
Definition at line 295 of file ini_file.cpp.
{ try { } catch( nitro::exception e ) { } catch( ... ) { } }
const char * nitro::INIFile::GetPath | ( | void | ) | const |
Function returns path to the file.
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 136 of file ini_file.cpp.
References Path.
{ return( Path.c_str() ); }
const char * nitro::INIFile::GetString | ( | const char * | Section, | |
const char * | Key, | |||
char * | Value, | |||
const char * | Default = NULL | |||
) | const |
Function returns data from the loaded file.
Section | - Section. | |
Key | - Key. | |
Value | - Data from the file. | |
Default | - Default value if the key was not found. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 141 of file ini_file.cpp.
References nitro::exception::code(), nitro::Parsers::ExplodeString(), FileData, and nitro::exception::what().
{ try { bool SectionStarted( false ); for( std::size_t i( 0 ) ; i < FileData.size() ; i++ ) { if( FileData[ i ] == std::string( "[" ) + Section + "]" ) { SectionStarted = true; continue; } if( SectionStarted && FileData[ i ][ 0 ] == '[' ) { break; } if( SectionStarted ) { std::vector< std::string > Segments; nitro::Parsers::ExplodeString( FileData[ i ] , Segments , '=' ); if( SectionStarted && Segments[ 0 ] == Key ) { strcpy( Value , Segments[ 1 ].c_str() ); return( Value ); } } } strcpy( Value , Default ); return( Value ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::GetString( const char * Section , const char * Key , const char * Value , const char * Default /* = NULL */ )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::GetString( const char * Section , const char * Key , const char * Value , const char * Default /* = NULL */ )::An error occured" ) , 1 ) ); } return( NULL ); }
void nitro::INIFile::LoadINIFile | ( | const char * | thePath | ) |
Function loads INI files.
thePath | - Path to the loading file. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 62 of file ini_file.cpp.
References nitro::BinaryData::AppendData(), nitro::exception::code(), nitro::Parsers::ExplodeString(), FileData, nitro::BinaryData::GetBuffer(), nitro::File::LoadBinDataFromFile(), Path, nitro::BinaryData::ReplaceBuffer(), and nitro::exception::what().
Referenced by INIFile(), and LoadINIFile().
{ try { FileData.erase( FileData.begin() , FileData.end() ); Path = thePath; nitro::BinaryData Data; nitro::File::LoadBinDataFromFile( Data , thePath ); Data.AppendData( "\0" , 1 ); nitro::BinaryData::ReplaceBuffer( Data , "\r\n" , 2 , "\n" , 1 ); nitro::Parsers::ExplodeString( Data.GetBuffer() , FileData , '\n' ); if( FileData.size() == 1 ) { FileData.clear(); } } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::LoadINIFile( const char * thePath )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::LoadINIFile( const char * thePath )::An error occured" ) , 1 ) ); } }
void nitro::INIFile::LoadINIFile | ( | const std::string & | thePath | ) |
Function loads INI files.
thePath | - Path to the loading file. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 88 of file ini_file.cpp.
References nitro::exception::code(), LoadINIFile(), and nitro::exception::what().
{ try { LoadINIFile( thePath.c_str() ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::LoadINIFile( const char * thePath )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::LoadINIFile( const char * thePath )::An error occured" ) , 1 ) ); } }
void nitro::INIFile::SaveINIFile | ( | const char * | thePath = NULL |
) |
Function saves file.
thePath | - Path to the saving file. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 244 of file ini_file.cpp.
References nitro::BinaryData::AppendData(), nitro::exception::code(), FileData, Path, nitro::File::SaveBinDataToFile(), and nitro::exception::what().
Referenced by SaveINIFile().
{ try { nitro::BinaryData Data; for( std::size_t i( 0 ) ; i < FileData.size() ; i++ ) { Data.AppendData( FileData[ i ] ); if( i + 1 != FileData.size() ) { Data.AppendData( "\r\n" ); } } if( NULL == thePath || std::string( "" ) == thePath ) { nitro::File::SaveBinDataToFile( Data , Path ); } else { nitro::File::SaveBinDataToFile( Data , thePath ); } } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::SaveINIFile( std::string & thePath )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::SaveINIFile( std::string & thePath )::An error occured" ) , 1 ) ); } }
void nitro::INIFile::SaveINIFile | ( | std::string & | thePath | ) |
Function saves file.
thePath | - Path to the saving file. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 279 of file ini_file.cpp.
References nitro::exception::code(), SaveINIFile(), and nitro::exception::what().
{ try { SaveINIFile( thePath.c_str() ); } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::SaveINIFile( std::string & thePath )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::SaveINIFile( std::string & thePath )::An error occured" ) , 1 ) ); } }
void nitro::INIFile::SetPath | ( | const char * | thePath | ) |
Function sets new path to the file.
thePath | - Path to the loading file. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 104 of file ini_file.cpp.
References nitro::exception::code(), Path, and nitro::exception::what().
{ try { Path = thePath; } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::SetPath( const char * thePath )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::SetPath( const char * thePath )::An error occured" ) , 1 ) ); } }
void nitro::INIFile::SetPath | ( | const std::string & | thePath | ) |
Function sets new path to the file.
thePath | - Path to the loading file. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 120 of file ini_file.cpp.
References nitro::exception::code(), Path, and nitro::exception::what().
{ try { Path = thePath; } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::SetPath( const std::string & thePath )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::SetPath( const std::string & thePath )::An error occured" ) , 1 ) ); } }
void nitro::INIFile::SetString | ( | const char * | Section, | |
const char * | Key, | |||
const char * | Value | |||
) |
Function saves value.
Section | - Section. | |
Key | - Key. | |
Value | - Value. |
nitro::exception | Throws an exception of that type with the error description. |
Definition at line 188 of file ini_file.cpp.
References nitro::exception::code(), nitro::Parsers::ExplodeString(), FileData, NeedSaveFile, and nitro::exception::what().
{ try { bool SectionStarted( false ); std::vector< std::string >::iterator iter( FileData.begin() ); for( ; iter != FileData.end() ; ++iter ) { if( *iter == std::string( "[" ) + Section + "]" ) { SectionStarted = true; continue; } if( SectionStarted && ( *iter )[ 0 ] == '[' ) { break; } if( SectionStarted ) { std::vector< std::string > Segments; nitro::Parsers::ExplodeString( *iter , Segments , '=' ); if( SectionStarted && Segments[ 0 ] == Key ) { *iter = std::string( Key ) + "=" + Value; NeedSaveFile = true; return; } } } if( SectionStarted ) { FileData.insert( iter , std::string( Key ) + "=" + Value ); } else { FileData.push_back( std::string( "[" ) + Section + "]" ); FileData.push_back( std::string( Key ) + "=" + Value ); } NeedSaveFile = true; } catch( nitro::exception e ) { throw( nitro::exception( std::string( "INIFile::SetString( const char * Section , const char * Key, const char * Value )::" ) + e.what() , e.code() ) ); } catch( ... ) { throw( nitro::exception( std::string( "INIFile::SetString( const char * Section , const char * Key, const char * Value )::An error occured" ) , 1 ) ); } }
std::vector< std::string > nitro::INIFile::FileData [private] |
INI file data.
Definition at line 350 of file ini_file.h.
Referenced by GetString(), LoadINIFile(), SaveINIFile(), and SetString().
bool nitro::INIFile::NeedSaveFile [private] |
Should file be saved.
Definition at line 362 of file ini_file.h.
Referenced by INIFile(), and SetString().
std::string nitro::INIFile::Path [private] |
Path to the file.
Definition at line 338 of file ini_file.h.
Referenced by GetPath(), INIFile(), LoadINIFile(), SaveINIFile(), and SetPath().