memory_block_ptr dynd::make_zeroinit_memory_block(const ndt::type &element_tp, intptr_t initial_capacity_bytes) { // This is a temporary hack until the new bytes and string types are working size_t data_size; switch (element_tp.get_type_id()) { case bytes_type_id: case string_type_id: data_size = 1; break; default: data_size = element_tp.get_default_data_size(); } zeroinit_memory_block *pmb = new zeroinit_memory_block(data_size, element_tp.get_data_alignment(), initial_capacity_bytes); return memory_block_ptr(reinterpret_cast<memory_block_data *>(pmb), false); }
intrusive_ptr<memory_block_data> dynd::make_pod_memory_block(const ndt::type &tp, intptr_t initial_capacity_bytes) { pod_memory_block *pmb = new pod_memory_block(tp.get_default_data_size(), tp.get_data_alignment(), initial_capacity_bytes); return intrusive_ptr<memory_block_data>(reinterpret_cast<memory_block_data *>(pmb), false); }
pod_memory_block(const ndt::type &tp, intptr_t initial_capacity_bytes = 2048) : pod_memory_block(tp.get_default_data_size(), tp.get_data_alignment(), initial_capacity_bytes) {}