source: trunk/src/Halite.hpp @ 429

Revision 429, 3.0 KB checked in by Eoin, 12 years ago (diff)

Files and trackers correctly passed to create_torrent.

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