Пример #1
0
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);
}
Пример #2
0
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) {}