28 #ifndef INCLUDED_MDDS_MULTI_TYPE_VECTOR_DIR_MACRO_HPP
29 #define INCLUDED_MDDS_MULTI_TYPE_VECTOR_DIR_MACRO_HPP
31 #define MDDS_MTV_DEFINE_ELEMENT_CALLBACKS(_type_, _type_id_, _empty_val_, _block_) \
33 inline mdds::mtv::element_t mdds_mtv_get_element_type(const _type_&) \
38 inline void mdds_mtv_get_empty_value(_type_& val) \
43 inline void mdds_mtv_set_value(mdds::mtv::base_element_block& block, size_t pos, const _type_& val) \
45 _block_::set_value(block, pos, val); \
48 inline void mdds_mtv_get_value(const mdds::mtv::base_element_block& block, size_t pos, _type_& val) \
50 _block_::get_value(block, pos, val); \
53 template<typename _Iter> \
54 void mdds_mtv_set_values( \
55 mdds::mtv::base_element_block& block, size_t pos, const _type_&, const _Iter& it_begin, const _Iter& it_end) \
57 _block_::set_values(block, pos, it_begin, it_end); \
60 inline void mdds_mtv_append_value(mdds::mtv::base_element_block& block, const _type_& val) \
62 _block_::append_value(block, val); \
65 inline void mdds_mtv_prepend_value(mdds::mtv::base_element_block& block, const _type_& val) \
67 _block_::prepend_value(block, val); \
70 template<typename _Iter> \
71 void mdds_mtv_prepend_values( \
72 mdds::mtv::base_element_block& block, const _type_&, const _Iter& it_begin, const _Iter& it_end) \
74 _block_::prepend_values(block, it_begin, it_end); \
77 template<typename _Iter> \
78 void mdds_mtv_append_values( \
79 mdds::mtv::base_element_block& block, const _type_&, const _Iter& it_begin, const _Iter& it_end) \
81 _block_::append_values(block, it_begin, it_end); \
84 template<typename _Iter> \
85 void mdds_mtv_assign_values( \
86 mdds::mtv::base_element_block& dest, const _type_&, const _Iter& it_begin, const _Iter& it_end) \
88 _block_::assign_values(dest, it_begin, it_end); \
91 template<typename _Iter> \
92 void mdds_mtv_insert_values( \
93 mdds::mtv::base_element_block& block, size_t pos, const _type_&, const _Iter& it_begin, const _Iter& it_end) \
95 _block_::insert_values(block, pos, it_begin, it_end); \
98 inline mdds::mtv::base_element_block* mdds_mtv_create_new_block(size_t init_size, const _type_& val) \
100 return _block_::create_block_with_value(init_size, val); \
103 template<typename _Iter> \
104 mdds::mtv::base_element_block* mdds_mtv_create_new_block( \
105 const _type_&, const _Iter& it_begin, const _Iter& it_end) \
107 return _block_::create_block_with_values(it_begin, it_end); \
110 #define MDDS_MTV_DEFINE_ELEMENT_CALLBACKS_PTR(_type_, _type_id_, _empty_val_, _block_) \
112 inline mdds::mtv::element_t mdds_mtv_get_element_type(const _type_*) \
117 inline void mdds_mtv_get_empty_value(_type_*& val) \
122 inline void mdds_mtv_set_value(mdds::mtv::base_element_block& block, size_t pos, _type_* val) \
124 _block_::set_value(block, pos, val); \
127 inline void mdds_mtv_get_value(const mdds::mtv::base_element_block& block, size_t pos, _type_*& val) \
129 _block_::get_value(block, pos, val); \
132 template<typename _Iter> \
133 void mdds_mtv_set_values( \
134 mdds::mtv::base_element_block& block, size_t pos, const _type_*, const _Iter& it_begin, const _Iter& it_end) \
136 _block_::set_values(block, pos, it_begin, it_end); \
139 inline void mdds_mtv_append_value(mdds::mtv::base_element_block& block, _type_* val) \
141 _block_::append_value(block, val); \
144 inline void mdds_mtv_prepend_value(mdds::mtv::base_element_block& block, _type_* val) \
146 _block_::prepend_value(block, val); \
149 template<typename _Iter> \
150 void mdds_mtv_prepend_values( \
151 mdds::mtv::base_element_block& block, const _type_*, const _Iter& it_begin, const _Iter& it_end) \
153 _block_::prepend_values(block, it_begin, it_end); \
156 template<typename _Iter> \
157 void mdds_mtv_append_values( \
158 mdds::mtv::base_element_block& block, const _type_*, const _Iter& it_begin, const _Iter& it_end) \
160 _block_::append_values(block, it_begin, it_end); \
163 template<typename _Iter> \
164 void mdds_mtv_assign_values( \
165 mdds::mtv::base_element_block& dest, const _type_*, const _Iter& it_begin, const _Iter& it_end) \
167 _block_::assign_values(dest, it_begin, it_end); \
170 template<typename _Iter> \
171 void mdds_mtv_insert_values( \
172 mdds::mtv::base_element_block& block, size_t pos, const _type_*, const _Iter& it_begin, const _Iter& it_end) \
174 _block_::insert_values(block, pos, it_begin, it_end); \
177 inline mdds::mtv::base_element_block* mdds_mtv_create_new_block(size_t init_size, _type_* val) \
179 return _block_::create_block_with_value(init_size, val); \
182 template<typename _Iter> \
183 mdds::mtv::base_element_block* mdds_mtv_create_new_block( \
184 const _type_*, const _Iter& it_begin, const _Iter& it_end) \
186 return _block_::create_block_with_values(it_begin, it_end); \