47 case _Block1::block_type:
48 return _Block1::create_block(init_size);
49 case _Block2::block_type:
50 return _Block2::create_block(init_size);
54 return element_block_func::create_new_block(type, init_size);
59 switch (get_block_type(block))
61 case _Block1::block_type:
62 return _Block1::clone_block(block);
63 case _Block2::block_type:
64 return _Block2::clone_block(block);
68 return element_block_func::clone_block(block);
76 switch (get_block_type(*p))
78 case _Block1::block_type:
79 _Block1::delete_block(p);
81 case _Block2::block_type:
82 _Block2::delete_block(p);
85 element_block_func::delete_block(p);
91 switch (get_block_type(block))
93 case _Block1::block_type:
94 _Block1::resize_block(block, new_size);
96 case _Block2::block_type:
97 _Block2::resize_block(block, new_size);
100 element_block_func::resize_block(block, new_size);
106 switch (get_block_type(block))
108 case _Block1::block_type:
109 _Block1::print_block(block);
111 case _Block2::block_type:
112 _Block2::print_block(block);
115 element_block_func::print_block(block);
121 switch (get_block_type(block))
123 case _Block1::block_type:
124 _Block1::erase_block(block, pos);
126 case _Block2::block_type:
127 _Block2::erase_block(block, pos);
130 element_block_func::erase(block, pos);
136 switch (get_block_type(block))
138 case _Block1::block_type:
139 _Block1::erase_block(block, pos, size);
141 case _Block2::block_type:
142 _Block2::erase_block(block, pos, size);
145 element_block_func_base::erase(block, pos, size);
151 switch (get_block_type(dest))
153 case _Block1::block_type:
154 _Block1::append_values_from_block(dest, src);
156 case _Block2::block_type:
157 _Block2::append_values_from_block(dest, src);
160 element_block_func_base::append_values_from_block(dest, src);
164 static void append_values_from_block(
167 switch (get_block_type(dest))
169 case _Block1::block_type:
170 _Block1::append_values_from_block(dest, src, begin_pos, len);
172 case _Block2::block_type:
173 _Block2::append_values_from_block(dest, src, begin_pos, len);
176 element_block_func_base::append_values_from_block(dest, src, begin_pos, len);
180 static void assign_values_from_block(
183 switch (get_block_type(dest))
185 case _Block1::block_type:
186 _Block1::assign_values_from_block(dest, src, begin_pos, len);
188 case _Block2::block_type:
189 _Block2::assign_values_from_block(dest, src, begin_pos, len);
192 element_block_func_base::assign_values_from_block(dest, src, begin_pos, len);
196 static void prepend_values_from_block(
199 switch (get_block_type(dest))
201 case _Block1::block_type:
202 _Block1::prepend_values_from_block(dest, src, begin_pos, len);
204 case _Block2::block_type:
205 _Block2::prepend_values_from_block(dest, src, begin_pos, len);
208 element_block_func_base::prepend_values_from_block(dest, src, begin_pos, len);
214 switch (get_block_type(blk1))
216 case _Block1::block_type:
217 _Block1::swap_values(blk1, blk2, pos1, pos2, len);
219 case _Block2::block_type:
220 _Block2::swap_values(blk1, blk2, pos1, pos2, len);
223 element_block_func_base::swap_values(blk1, blk2, pos1, pos2, len);
229 if (get_block_type(left) == _Block1::block_type)
231 if (get_block_type(right) != _Block1::block_type)
234 return _Block1::get(left) == _Block1::get(right);
236 else if (mtv::get_block_type(right) == _Block1::block_type)
239 if (get_block_type(left) == _Block2::block_type)
241 if (get_block_type(right) != _Block2::block_type)
244 return _Block2::get(left) == _Block2::get(right);
246 else if (mtv::get_block_type(right) == _Block2::block_type)
249 return element_block_func::equal_block(left, right);
254 switch (get_block_type(block))
256 case _Block1::block_type:
257 _Block1::overwrite_values(block, pos, len);
259 case _Block2::block_type:
260 _Block2::overwrite_values(block, pos, len);
269 switch (get_block_type(block))
271 case _Block1::block_type:
272 _Block1::shrink_to_fit(block);
274 case _Block2::block_type:
275 _Block2::shrink_to_fit(block);
278 element_block_func::shrink_to_fit(block);
284 switch (get_block_type(block))
286 case _Block1::block_type:
287 return _Block1::size(block);
288 case _Block2::block_type:
289 return _Block2::size(block);
291 return element_block_func::size(block);