source: trunk/src/Halite.hpp @ 541

Revision 541, 3.3 KB checked in by Eoin, 12 years ago (diff)

Updating halConfig serialization.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2008.
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
9using std::string;
10using std::wstring;
11
12using boost::lexical_cast;
13using boost::array;
14using boost::bind;
15using boost::thread;
16using boost::shared_ptr;
17using boost::scoped_ptr;
18using boost::filesystem::path;
19using boost::filesystem::wpath;
20using boost::noncopyable;
21
22template<class Archive>
23void serialize(Archive& ar, WTL::CRect& rect, const unsigned int version)
24{
25        ar & BOOST_SERIALIZATION_NVP(rect.top);
26        ar & BOOST_SERIALIZATION_NVP(rect.bottom);
27        ar & BOOST_SERIALIZATION_NVP(rect.left);
28        ar & BOOST_SERIALIZATION_NVP(rect.right);
29}
30
31namespace hal
32{       
33        namespace fs = boost::filesystem;
34        namespace pt = boost::posix_time;
35        namespace xp = boost::xpressive;
36        namespace sl = boost::serialization;
37
38        using std::pair;
39        using std::make_pair;
40       
41        using boost::tuple;
42
43        typedef boost::int64_t size_type;
44}
45
46#define foreach BOOST_FOREACH
47
48#include "global/wtl_app.hpp"
49#include "global/string_conv.hpp"
50
51#include "halIni.hpp"
52#include "halEvent.hpp"
53#include "halTorrent.hpp"
54
55template<class T>
56class RedrawLock
57{
58public:
59        RedrawLock(T& window) :
60                window_(window)
61        {
62                window_.SetRedraw(false);
63        }
64       
65        ~RedrawLock()
66        {
67                unlock();
68        }
69       
70        void unlock()
71        {
72                window_.SetRedraw(true);
73                window_.InvalidateRect(NULL, true);
74        }
75       
76private:
77        T& window_;
78};
79       
80class Halite :
81        public hal::IniBase<Halite>,
82        private boost::noncopyable
83{
84public:
85        Halite() :
86                hal::IniBase<Halite>("globals/halite", "Halite"),
87                oneInst(false),
88#ifdef TORRENT_LOGGING
89                logDebug_(true),
90#else
91                logDebug_(false),
92#endif
93                showMessage_(true),
94                logToFile_(true),
95                logListLen_(128),
96                dll_(L"")
97        {
98                hal::event_log.init();
99                load_from_ini();
100        }
101       
102        friend class boost::serialization::access;
103        template<class Archive>
104        void serialize(Archive& ar, const unsigned int version)
105        {       
106                using boost::serialization::make_nvp;
107
108                switch (version)
109                {
110                case 4:
111                ar      & make_nvp("one_inst", oneInst)
112                        & make_nvp("show_message", showMessage_)
113                        & make_nvp("log_debug", logDebug_)
114                        & make_nvp("log_list_length", logListLen_)
115                        & make_nvp("log_to_file", logToFile_)
116                        & make_nvp("lang_dll", dll_);
117                break;
118
119                case 3:
120                case 2:
121                ar      & make_nvp("dll_", dll_);
122                case 1:
123                ar      & make_nvp("logListLen_", logListLen_);
124                case 0:
125                ar      & make_nvp("oneInst", oneInst)
126                        & make_nvp("logDebug_", logDebug_)
127                        & make_nvp("showMessage", showMessage_)
128                        & make_nvp("logToFile_", logToFile_);
129                }
130        }       
131       
132        bool logToFile() { return logToFile_; }
133        bool logDebug() { return logDebug_; }
134        const std::wstring& dll() { return dll_; }
135        const int logListLen() { return logListLen_; }
136        bool showMessage() { return showMessage_; }
137       
138        friend class GeneralOptions;
139        friend class GlobalOptions;
140        friend class PortOptions;
141        friend class SplashDialog;
142        friend class AdvDebugDialog;
143        friend int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
144       
145private:
146        std::wstring dll_;
147        bool oneInst;
148        bool logDebug_;
149        bool showMessage_;
150        bool logToFile_;
151        size_t logListLen_;
152};
153
154Halite& halite();
155
156BOOST_CLASS_VERSION(Halite, 4)
Note: See TracBrowser for help on using the repository browser.