Hikyuu
MarketInfo_serialization.h
浏览该文件的文档.
1 /*
2  * MarketInfo.h
3  *
4  * Created on: 2013-5-1
5  * Author: fasiondog
6  */
7 
8 #ifndef MARKETINFO_SERIALIZATION_H_
9 #define MARKETINFO_SERIALIZATION_H_
10 
11 #include "../config.h"
12 #include "../MarketInfo.h"
13 #include "../utilities/util.h"
14 
15 #if HKU_SUPPORT_SERIALIZATION
16 #include <boost/serialization/nvp.hpp>
17 #include <boost/serialization/split_free.hpp>
18 #include <boost/serialization/vector.hpp>
19 
20 namespace boost {
21 namespace serialization {
22 
23 //防止boost::serialization某些情况不能在独立的命名空间中
24 #if defined(BOOST_WINDOWS) && (PY_VERSION_HEX < 0x03000000)
25  #ifndef HKU_GB_TO_UTF8
26  #define HKU_GB_TO_UTF8(s) hku::GBToUTF8(s)
27  #endif
28 
29  #ifndef HKU_UTF8_TO_GB
30  #define HKU_UTF8_TO_GB(s) hku::UTF8ToGB(s)
31  #endif
32 #else
33  #ifndef HKU_GB_TO_UTF8
34  #define HKU_GB_TO_UTF8(s) (s)
35  #endif
36 
37  #ifndef HKU_UTF8_TO_GB
38  #define HKU_UTF8_TO_GB(s) (s)
39  #endif
40 #endif
41 
42 template<class Archive>
43 void save(Archive & ar, const hku::MarketInfo& record, unsigned int version) {
44  hku::string market = record.market();
45  hku::string name = HKU_GB_TO_UTF8(record.name());
46  hku::string description = HKU_GB_TO_UTF8(record.description());
47  hku::string code = record.code();
48  hku::hku_uint64 lastDate = record.lastDate().number();
49  ar & BOOST_SERIALIZATION_NVP(market);
50  ar & BOOST_SERIALIZATION_NVP(name);
51  ar & BOOST_SERIALIZATION_NVP(description);
52  ar & BOOST_SERIALIZATION_NVP(code);
53  ar & BOOST_SERIALIZATION_NVP(lastDate);
54 }
55 
56 template<class Archive>
57 void load(Archive & ar, hku::MarketInfo& record, unsigned int version) {
58  hku::string market, name, description, code;
59  hku::hku_uint64 lastDate;
60  ar & BOOST_SERIALIZATION_NVP(market);
61  ar & BOOST_SERIALIZATION_NVP(name);
62  ar & BOOST_SERIALIZATION_NVP(description);
63  ar & BOOST_SERIALIZATION_NVP(code);
64  ar & BOOST_SERIALIZATION_NVP(lastDate);
65  record = hku::MarketInfo(market, HKU_UTF8_TO_GB(name),
66  HKU_UTF8_TO_GB(description),
67  code, hku::Datetime(lastDate));
68 }
69 }} /* namespace boost::serailization */
70 
71 BOOST_SERIALIZATION_SPLIT_FREE(hku::MarketInfo)
72 
73 #endif /* HKU_SUPPORT_SERIALIZATION */
74 
75 
76 #endif /* MARKETINFO_SERIALIZATION_H_ */
#define HKU_UTF8_TO_GB(s)
Definition: MarketInfo_serialization.h:38
unsigned long long number() const
返回如YYYYMMDDhhmmss格式的数字,方便比较操作, Null<Datetime>()对应的 number 为 Null<unsigned long lo...
Definition: Datetime.cpp:71
const string & description() const
获取市场描述
Definition: MarketInfo.h:42
Definition: Block_serialization.h:17
std::string string
Definition: DataType.h:55
const string & name() const
获取市场名称
Definition: MarketInfo.h:39
日期类型
Definition: Datetime.h:33
Datetime lastDate() const
获取市场数据的最后更新日期
Definition: MarketInfo.h:48
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
const string & code() const
获取该市场对应的指数代码
Definition: MarketInfo.h:45
市场信息记录
Definition: MarketInfo.h:19
void save(Archive &ar, const hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:20
#define HKU_GB_TO_UTF8(s)
Definition: MarketInfo_serialization.h:34
const string & market() const
获取市场简称
Definition: MarketInfo.h:36
unsigned long long hku_uint64
Definition: DataType.h:46