Hikyuu
Stock_serialization.h
浏览该文件的文档.
1 /*
2  * Stock_Serialization.h
3  *
4  * Created on: 2013-4-29
5  * Author: fasiondog
6  */
7 
8 #ifndef STOCK_SERIALIZATION_H_
9 #define STOCK_SERIALIZATION_H_
10 
11 #include "../config.h"
12 #include "../StockManager.h"
13 #include "../utilities/util.h"
14 
15 //===========================================================================
16 // 以下为Stock的序列化,目前仅实现了在StockManager中管理的Stock的序列化
17 // 注意,该段代码在namespace hku之外
18 // TODO 实现非StockManager管理的Stock的序列化
19 //===========================================================================
20 #if HKU_SUPPORT_SERIALIZATION
21 #include <boost/serialization/nvp.hpp>
22 #include <boost/serialization/split_free.hpp>
23 #include <boost/serialization/vector.hpp>
24 
25 namespace boost {
26 namespace serialization {
27 template<class Archive>
28 
29 //防止boost::serialization某些情况不能在独立的命名空间中
30 #if defined(BOOST_WINDOWS) && (PY_VERSION_HEX < 0x03000000)
31  #ifndef HKU_GB_TO_UTF8
32  #define HKU_GB_TO_UTF8(s) hku::GBToUTF8(s)
33  #endif
34 
35  #ifndef HKU_UTF8_TO_GB
36  #define HKU_UTF8_TO_GB(s) hku::UTF8ToGB(s)
37  #endif
38 #else
39  #ifndef HKU_GB_TO_UTF8
40  #define HKU_GB_TO_UTF8(s) (s)
41  #endif
42 
43  #ifndef HKU_UTF8_TO_GB
44  #define HKU_UTF8_TO_GB(s) (s)
45  #endif
46 #endif
47 
48 void save(Archive & ar, const hku::Stock & stock, unsigned int version) {
49  hku::string market_code = stock.market_code();
50  hku::string name = HKU_GB_TO_UTF8(stock.name());
51  ar & BOOST_SERIALIZATION_NVP(market_code);
52  ar & BOOST_SERIALIZATION_NVP(name);
53 }
54 
55 template<class Archive>
56 void load(Archive & ar, hku::Stock& stock, unsigned int version) {
57  hku::string market_code, name;
58  ar & BOOST_SERIALIZATION_NVP(market_code);
59  ar & BOOST_SERIALIZATION_NVP(name);
61  stock = sm.getStock(market_code);
62 }
63 }} /* namespace boost::serailization */
64 
65 BOOST_SERIALIZATION_SPLIT_FREE(hku::Stock)
66 
67 #endif /* HKU_SUPPORT_SERIALIZATION */
68 
69 
70 #endif /* STOCK_SERIALIZATION_H_ */
Definition: Block_serialization.h:17
std::string string
Definition: DataType.h:55
static StockManager & instance()
获取StockManager单例实例
Definition: StockManager.cpp:34
const string & market_code() const
市场简称+证券代码,如: sh000001
Definition: Stock.cpp:215
const string & name() const
获取证券名称
Definition: Stock.cpp:219
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
void save(Archive &ar, const hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:20
#define HKU_GB_TO_UTF8(s)
Definition: Stock_serialization.h:40
Stock getStock(const string &) const
根据"市场简称证券代码"获取对应的证券实例
Definition: StockManager.cpp:293
证券信息统一管理类
Definition: StockManager.h:30