source: branch_service/src/Halite.hpp @ 678

Revision 678, 2.8 KB checked in by Eoin, 11 years ago (diff)
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
22namespace hal
23{       
24        namespace fs = boost::filesystem;
25        namespace pt = boost::posix_time;
26        namespace xp = boost::xpressive;
27        namespace sl = boost::serialization;
28
29        using std::pair;
30        using std::make_pair;
31       
32        using boost::tuple;
33
34        typedef boost::int64_t size_type;
35}
36
37#define foreach BOOST_FOREACH
38
39#include "global/wtl_app.hpp"
40#include "global/string_conv.hpp"
41
42#include "halIni.hpp"
43#include "halEvent.hpp"
44#include "halTorrent.hpp"
45
46template<class T>
47class RedrawLock
48{
49public:
50        RedrawLock(T& window) :
51                window_(window)
52        {
53                window_.SetRedraw(false);
54        }
55       
56        ~RedrawLock()
57        {
58                unlock();
59        }
60       
61        void unlock()
62        {
63                window_.SetRedraw(true);
64                window_.InvalidateRect(NULL, true);
65        }
66       
67private:
68        T& window_;
69};
70       
71class Halite :
72        public hal::IniBase<Halite>,
73        private boost::noncopyable
74{
75public:
76        Halite();
77       
78        friend class boost::serialization::access;
79        template<class Archive>
80        void serialize(Archive& ar, const unsigned int version)
81        {       
82                using boost::serialization::make_nvp;
83
84                switch (version)
85                {
86                case 4:
87                ar      & make_nvp("one_inst", oneInst)
88                        & make_nvp("show_message", showMessage_)
89                        & make_nvp("log_debug", logDebug_)
90                        & make_nvp("log_list_length", logListLen_)
91                        & make_nvp("log_to_file", logToFile_)
92                        & make_nvp("lang_dll", dll_);
93                break;
94
95                case 3:
96                case 2:
97                ar      & make_nvp("dll_", dll_);
98                case 1:
99                ar      & make_nvp("logListLen_", logListLen_);
100                case 0:
101                ar      & make_nvp("oneInst", oneInst)
102                        & make_nvp("logDebug_", logDebug_)
103                        & make_nvp("showMessage", showMessage_)
104                        & make_nvp("logToFile_", logToFile_);
105                }
106        }       
107       
108        bool logToFile() { return logToFile_; }
109        bool logDebug() { return logDebug_; }
110        const std::wstring& dll() { return dll_; }
111        const int logListLen() { return logListLen_; }
112        bool showMessage() { return showMessage_; }
113       
114        friend class GeneralOptions;
115        friend class GlobalOptions;
116        friend class PortOptions;
117        friend class SplashDialog;
118        friend class AdvDebugDialog;
119        friend int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
120       
121private:
122        std::wstring dll_;
123        bool oneInst;
124        bool logDebug_;
125        bool showMessage_;
126        bool logToFile_;
127        size_t logListLen_;
128};
129
130Halite& halite();
131
132BOOST_CLASS_VERSION(Halite, 4)
Note: See TracBrowser for help on using the repository browser.