Hikyuu
KQuery_serialization.h
浏览该文件的文档.
1 /*
2  * KQuery.h
3  *
4  * Created on: 2013-5-1
5  * Author: fasiondog
6  */
7 
8 #ifndef SERIALIZATION_KQUERY_H_
9 #define SERIALIZATION_KQUERY_H_
10 
11 #include "../KQuery.h"
12 #include "../config.h"
13 
14 #if HKU_SUPPORT_SERIALIZATION
15 #include <boost/serialization/nvp.hpp>
16 #include <boost/serialization/split_free.hpp>
17 #include <boost/serialization/base_object.hpp>
18 
19 namespace boost {
20 namespace serialization {
21 
22 template<class Archive>
23 void save(Archive & ar, const hku::KQuery & query, unsigned int version) {
24  hku::string queryType, kType, recoverType;
25  queryType = hku::KQuery::getQueryTypeName(query.queryType());
26  kType = hku::KQuery::getKTypeName(query.kType());
27  recoverType = hku::KQuery::getRecoverTypeName(query.recoverType());
28  ar & BOOST_SERIALIZATION_NVP(queryType);
29  ar & BOOST_SERIALIZATION_NVP(kType);
30  ar & BOOST_SERIALIZATION_NVP(recoverType);
31 
32  if (query.queryType() == hku::KQuery::INDEX) {
33  hku::hku_int64 start = query.start();
34  hku::hku_int64 end = query.end();
35  ar & BOOST_SERIALIZATION_NVP(start);
36  ar & BOOST_SERIALIZATION_NVP(end);
37  } else if (query.queryType() == hku::KQuery::DATE) {
38  hku::hku_uint64 start = query.startDatetime().number();
39  hku::hku_uint64 end = query.endDatetime().number();
40  ar & BOOST_SERIALIZATION_NVP(start);
41  ar & BOOST_SERIALIZATION_NVP(end);
42  } else {
43  //非法忽略
44  }
45 }
46 
47 template<class Archive>
48 void load(Archive & ar, hku::KQuery& query, unsigned int version) {
49  hku::string queryType, kType, recoverType;
50  ar & BOOST_SERIALIZATION_NVP(queryType);
51  ar & BOOST_SERIALIZATION_NVP(kType);
52  ar & BOOST_SERIALIZATION_NVP(recoverType);
53 
57 
58  if (enum_query == hku::KQuery::INDEX) {
59  hku::hku_int64 start, end;
60  ar & BOOST_SERIALIZATION_NVP(start);
61  ar & BOOST_SERIALIZATION_NVP(end);
62  query = hku::KQuery(start, end, enmu_ktype, enum_recover);
63  } else if (enum_query == hku::KQuery::DATE) {
64  hku::hku_uint64 start, end;
65  ar & BOOST_SERIALIZATION_NVP(start);
66  ar & BOOST_SERIALIZATION_NVP(end);
67  query = hku::KQueryByDate(hku::Datetime(start), hku::Datetime(end),
68  enmu_ktype, enum_recover);
69  } else {
70  //非法忽略
71  }
72 }
73 
74 }} /* namespace boost::serailization */
75 
76 BOOST_SERIALIZATION_SPLIT_FREE(hku::KQuery)
77 
78 #endif /* HKU_SUPPORT_SERIALIZATION */
79 
80 #endif /* SERIALIZATION_KQUERY_H_ */
unsigned long long number() const
返回如YYYYMMDDhhmmss格式的数字,方便比较操作, Null<Datetime>()对应的 number 为 Null<unsigned long lo...
Definition: Datetime.cpp:71
hku_int64 end() const
按索引方式查询时,返回指定的结束索引,否则返回Null<hku_int64>()
Definition: KQuery.h:121
static string getKTypeName(KType)
获取KType名称,用于显示输出
Definition: KQuery.cpp:97
Definition: Block_serialization.h:17
static QueryType getQueryTypeEnum(const string &)
根据字符串名称获取相应的queryType枚举值
Definition: KQuery.cpp:83
按日期方式查询
Definition: KQuery.h:24
std::string string
Definition: DataType.h:55
按索引方式查询K线数据条件
Definition: KQuery.h:19
KQuery KQueryByDate(const Datetime &start, const Datetime &end, KQuery::KType dataType, KQuery::RecoverType recoverType)
构造按日期方式K线查询,范围[startDatetime, endDatetime)
Definition: KQuery.cpp:37
static string getQueryTypeName(QueryType)
获取queryType名称,用于显示输出
Definition: KQuery.cpp:72
日期类型
Definition: Datetime.h:33
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
Datetime endDatetime() const
按日期方式查询时,返回指定的结束日期,否则返回Null<Datetime>()
Definition: KQuery.cpp:61
long long hku_int64
Definition: DataType.h:45
void save(Archive &ar, const hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:20
static string getRecoverTypeName(RecoverType)
获取recoverType名称,用于显示输出
Definition: KQuery.cpp:185
RecoverType recoverType() const
获取复权类型
Definition: KQuery.h:143
string KType
查询K线类型:日线/周线等
Definition: KQuery.h:51
QueryType
查询方式:索引或日期
Definition: KQuery.h:22
RecoverType
复权类型
Definition: KQuery.h:75
string kType() const
获取K线数据类型
Definition: KQuery.h:140
hku_int64 start() const
按索引方式查询时,返回指定的起始索引,否则返回Null<hku_int64>()
Definition: KQuery.h:114
Datetime startDatetime() const
按日期方式查询时,返回指定的起始日期,否则返回Null<Datetime>()
Definition: KQuery.cpp:50
按索引方式查询
Definition: KQuery.h:23
static KType getKTypeEnum(const string &)
根据字符串名称,获取相应的枚举值
Definition: KQuery.cpp:140
unsigned long long hku_uint64
Definition: DataType.h:46
static RecoverType getRecoverTypeEnum(const string &)
根据字符串名称,获取相应的枚举值
Definition: KQuery.cpp:202
QueryType queryType() const
获取查询条件类型
Definition: KQuery.h:136