| Disk ARchive 2.5.10 Full featured and portable backup and archiving tool

- Main Page
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | List of all members
libdar::on_pool Class Reference
Private

`#include <on_pool.hpp>`

Inherited by libdar::archive, libdar::archive_options_create, libdar::archive_options_diff, libdar::archive_options_extract, libdar::archive_options_isolate, libdar::archive_options_listing, libdar::archive_options_merge, libdar::archive_options_read, libdar::archive_options_test, libdar::cat_entree, libdar::cat_etoile, libdar::catalogue, libdar::crc, libdar::crit_action, libdar::criterium, libdar::data_tree, libdar::database, libdar::datetime, libdar::deci, libdar::defile, libdar::ea_attributs, libdar::elastic, libdar::entrepot, libdar::etage, libdar::filesystem_hard_link_read`[virtual]`, libdar::filesystem_hard_link_write`[virtual]`, libdar::filesystem_specific_attribute, libdar::filesystem_specific_attribute_list, libdar::generic_file, libdar::generic_file_overlay_for_gpgme, libdar::header, libdar::header_version, libdar::infinint, libdar::label, libdar::limitint< B >, libdar::list_entry, libdar::mask, libdar::messaging_decode, libdar::messaging_encode, libdar::path, libdar::pile_descriptor, libdar::secu_string, libdar::semaphore, libdar::slave_thread, libdar::slave_zapette, libdar::slice_layout, libdar::smart_node< T >, libdar::smart_pointer< T >, libdar::storage, libdar::storage::iterator, libdar::tlv_list, libdar::user_interaction, libdar::wrapperlib, libdar::smart_node< pile_descriptor >, and libdar::smart_pointer< pile_descriptor >.

## Public Member Functions
void * | operator new (size_t n_byte)
void * | operator new (size_t n_byte, const std::nothrow_t &nothrow_value)
void * | operator new[] (size_t n_byte)
void * | operator new[] (size_t n_byte, const std::nothrow_t &nothrow_value)
void * | operator new (size_t n_byte, memory_pool *p)
void * | operator new[] (size_t n_byte, memory_pool *p)
void | operator delete (void *ptr, memory_pool *p)
| this operator is called by the compiler if an exception is throw from the constructor of the allocated object
void | operator delete[] (void *ptr, memory_pool *p)
| this operator is called by the compiler if an exception is throw from the constructor of the allocated objects
void | operator delete (void *ptr)
| this is the usual delete operator, modified to handle allocated objects allocated on a memory pool or not
void | operator delete[] (void *ptr)
| this is the usual delete[] operator, modified to handle allocated objects allocated on a memory pool or not

## Protected Member Functions
memory_pool * | get_pool () const
template<class T >
void | meta_new (T *&ptr, size_t num)
template<class T >
void | meta_delete (T *ptr)

## Detailed Description

class on_pool is the ancestors of all class that are able to be allocated on a memory pool

Note
  : new and new[] operators using memory pool never throw an exception upon allocation failure but rather return nullptr pointer. This is the way it was working before g++03 and g++11

Definition at line 52 of file on_pool.hpp.

## Member Function Documentation

memory_pool* libdar::on_pool::get_pool | ( |  | ) | const
| inline protected

get the pool used to allocate "this"

Returns
  the address of the memory pool that has been used to allocate the object

Note
  if the object has not been allocated using a memory pool nullptr is returned
  if the object has not been dynamically allocated, that's to say is a local variable or a temporary object, get_pool() must not be called as it will return unpredictable result and could most probably crash the application if the returned data is used

Definition at line 144 of file on_pool.hpp.

Referenced by libdar::cat_eod::clone(), libdar::cat_ignored::clone(), libdar::cat_ignored_dir::clone(), libdar::cat_detruit::clone(), libdar::mask_list::clone(), libdar::cat_blockdev::clone(), libdar::cat_lien::clone(), libdar::cat_chardev::clone(), libdar::cat_tube::clone(), libdar::cat_prise::clone(), libdar::cat_mirage::clone(), libdar::bool_mask::clone(), libdar::cat_file::clone(), libdar::crit_constant_action::clone(), libdar::simple_mask::clone(), libdar::cat_directory::clone(), libdar::regular_mask::clone(), libdar::testing::clone(), libdar::not_mask::clone(), libdar::crit_chain::clone(), libdar::crit_in_place_is_inode::clone(), libdar::et_mask::clone(), libdar::crit_in_place_is_dir::clone(), libdar::crit_in_place_is_file::clone(), libdar::crit_in_place_is_hardlinked_inode::clone(), libdar::crit_in_place_is_new_hardlinked_inode::clone(), libdar::crit_in_place_data_more_recent::clone(), libdar::ou_mask::clone(), libdar::crit_in_place_data_more_recent_or_equal_to::clone(), libdar::crit_in_place_data_bigger::clone(), libdar::simple_path_mask::clone(), libdar::crit_in_place_data_saved::clone(), libdar::crit_in_place_data_dirty::clone(), libdar::same_path_mask::clone(), libdar::crit_in_place_data_sparse::clone(), libdar::crit_in_place_EA_present::clone(), libdar::exclude_dir_mask::clone(), libdar::crit_in_place_EA_more_recent::clone(), libdar::crit_in_place_EA_more_recent_or_equal_to::clone(), libdar::crit_in_place_more_EA::clone(), libdar::crit_in_place_EA_bigger::clone(), libdar::crit_in_place_EA_saved::clone(), libdar::crit_same_type::clone(), libdar::crit_not::clone(), libdar::crit_and::clone(), libdar::user_interaction_blind::clone(), and libdar::smart_pointer< pile_descriptor >::smart_pointer().

void* libdar::on_pool::operator new | ( | size_t | n_byte | ) |
| inline

the usual new operator is wrapped to allow proper delete operation later on (throws std::bad_alloc upon allocation failure)

Note
  memory allocation done this way does not use the default C++ new[] operator, which may be slower than using memory pool

Definition at line 84 of file on_pool.hpp.

void* libdar::on_pool::operator new | ( | size_t | n_byte,
|  | const std::nothrow_t & | nothrow_value
| ) |  |
| inline

the usual new operator is wrapped to allow proper delete operation later on (does not throw exception upon allocation failure)

Note
  memory allocation done this way does not use the default C++ new[] operator, which may be slower than using memory pool

Definition at line 90 of file on_pool.hpp.

void* libdar::on_pool::operator new | ( | size_t | n_byte,
|  | memory_pool * | p
| ) |  |
| inline

this operator allocates a single object on a memory pool

Note
  usage is: type *ptr = new (pool_obj) type(initial,values)
  such object has to be delete normally no need to call the destructor manually

Definition at line 108 of file on_pool.hpp.

void* libdar::on_pool::operator new[] | ( | size_t | n_byte | ) |
| inline

the usual new[] operator is wrapped to allow proper delete[] operation later on (throws std::bad_alloc upon allocation failure)

Note
  memory allocation done this way does not use the default C++ new[] operator, which may be slower than using memory pool

Definition at line 96 of file on_pool.hpp.

void* libdar::on_pool::operator new[] | ( | size_t | n_byte,
|  | const std::nothrow_t & | nothrow_value
| ) |  |
| inline

the usual new[] operator is wrapped to allow proper delete[] operation later on (does not throw exception upon allocation failure)

Note
  memory allocation done this way does not use the default C++ new[] operator, which may be slower than using memory pool

Definition at line 102 of file on_pool.hpp.

void* libdar::on_pool::operator new[] | ( | size_t | n_byte,
|  | memory_pool * | p
| ) |  |
| inline

this operator allocates an array of objects on a memory pool

Note
  usage is: type *ptr = new (pool_obj) type(initial,values)
  such object has to be delete normally no need to call the destructor manually

Definition at line 115 of file on_pool.hpp.

The documentation for this class was generated from the following file:

- on_pool.hpp