source: src/HaliteIni.hpp @ 345

Revision 345, 1.4 KB checked in by Eoin, 12 years ago (diff)

Minor renaming and attempts to decouple GUI from Torrents.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2007.
3// Distributed under the Boost Software License, Version 1.0.
4//    (See accompanying file LICENSE_1_0.txt or copy at
5//          http://www.boost.org/LICENSE_1_0.txt)
6
7#pragma once
8
9#include "global/ini_adapter.hpp"
10#include "halEvent.hpp"
11
12#include <boost/archive/xml_woarchive.hpp>
13#include <boost/archive/xml_wiarchive.hpp>
14
15namespace hal
16{
17
18template <class T>
19class IniBase
20{
21public:
22        IniBase(boost::filesystem::path location, std::string name, hal::ini_file& ini = hal::ini()) :
23                adapter_(location, ini),
24                name_(name)
25        {}
26       
27        void Save()
28        {
29                std::wstringstream xml_data;
30               
31                boost::archive::xml_woarchive oxml(xml_data);
32                T* pT = static_cast<T*>(this); 
33                oxml << boost::serialization::make_nvp(name_.c_str(), *pT);
34               
35                adapter_.save_stream_data(xml_data);
36        }
37       
38        void save() { Save(); }
39       
40        void Load()
41        {
42                std::wstringstream xml_data;           
43                adapter_.load_stream_data(xml_data);
44               
45                try 
46                {
47               
48                boost::archive::xml_wiarchive ixml(xml_data);   
49               
50                T* pT = static_cast<T*>(this); 
51                ixml >> boost::serialization::make_nvp(name_.c_str(), *pT);
52               
53                }
54                catch (const std::exception& e)
55                {                       
56                        hal::event().post(boost::shared_ptr<hal::EventDetail>(
57                                new hal::EventXmlException(hal::from_utf8(e.what()), hal::from_utf8(name_)))); 
58                }
59        }
60       
61        void load() { Load(); }
62       
63private:
64        hal::ini_adapter adapter_;
65        std::string name_;     
66};
67
68}
69
Note: See TracBrowser for help on using the repository browser.