Hikyuu
Block.h
浏览该文件的文档.
1 /*
2  * Block.h
3  *
4  * Created on: 2015年2月8日
5  * Author: fasiondog
6  */
7 
8 #ifndef BLOCK_H_
9 #define BLOCK_H_
10 
11 #include "StockMapIterator.h"
12 
13 namespace hku {
14 
19 class HKU_API Block {
20 public:
21  Block();
22  Block(const string& category, const string& name);
23  Block(const Block&);
24  Block& operator=(const Block&);
25  virtual ~Block();
26 
28  const_iterator begin() const {
29  const_iterator iter;
30  if (m_data)
31  iter = StockMapIterator(m_data->m_stockDict.begin());
32  return iter;
33  }
34 
35  const_iterator end() const {
36  const_iterator iter;
37  if (m_data)
38  iter = StockMapIterator(m_data->m_stockDict.end());
39  return iter;
40  }
41 
42  bool operator==(const Block& blk) {
43  return m_data == blk.m_data;
44  }
45 
46  bool operator!=(const Block& blk) {
47  return m_data != blk.m_data;
48  }
49 
51  string category() const {
52  return m_data ? m_data->m_category : "";
53  }
54 
56  string name() const {
57  return m_data ? m_data->m_name : "";
58  }
59 
61  void category(const string& category) {
62  if (!m_data)
63  m_data = shared_ptr<Data>(new Data);
64  m_data->m_category = category;
65  }
66 
68  void name(const string& name) {
69  if (!m_data)
70  m_data = shared_ptr<Data>(new Data);
71  m_data->m_name = name;
72  }
73 
75  bool have(const string& market_code) const;
76 
78  bool have(const Stock& stock) const;
79 
81  Stock get(const string& market_code) const;
82 
84  Stock operator[](const string& market_code) const {
85  return get(market_code);
86  }
87 
89  bool add(const Stock& stock);
90 
92  bool add(const string& market_code);
93 
95  bool remove(const string& market_code);
96 
98  bool remove(const Stock& stock);
99 
101  size_t size() const {
102  return m_data ? m_data->m_stockDict.size() : 0;
103  }
104 
106  bool empty() const {
107  return size() ? false : true;
108  }
109 
111  void clear() {
112  if (m_data) m_data->m_stockDict.clear();
113  }
114 
115 private:
116  struct HKU_API Data {
117  string m_category;
118  string m_name;
119  StockMapIterator::stock_map_t m_stockDict;
120  };
121  shared_ptr<Data> m_data;
122 };
123 
124 
126 typedef vector<Block> BlockList;
127 
128 HKU_API std::ostream& operator <<(std::ostream &os, const Block&);
129 
130 } /* namespace hku */
131 
132 #endif /* BLOCK_H_ */
const_iterator end() const
Definition: Block.h:35
vector< Block > BlockList
Definition: Block.h:126
bool empty() const
是否为空
Definition: Block.h:106
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
Stock operator[](const string &market_code) const
获取指定的证券
Definition: Block.h:84
bool operator==(const Block &blk)
Definition: Block.h:42
Definition: StockMapIterator.h:16
bool operator!=(const Block &blk)
Definition: Block.h:46
string name() const
获取板块名称
Definition: Block.h:56
#define HKU_API
Definition: DataType.h:12
const_iterator begin() const
Definition: Block.h:28
unordered_map< string, Stock > stock_map_t
Definition: StockMapIterator.h:18
HKU_API std::ostream & operator<<(std::ostream &os, const Block &blk)
Definition: Block.cpp:13
string category() const
获取板块类别
Definition: Block.h:51
size_t size() const
包含的证券数量
Definition: Block.h:101
void category(const string &category)
设置板块类别
Definition: Block.h:61
StockMapIterator const_iterator
Definition: Block.h:27
void clear()
清除包含的所有证券
Definition: Block.h:111
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
板块类,可视为证券的容器
Definition: Block.h:19
void name(const string &name)
设置名称
Definition: Block.h:68