#pragma once namespace pfc { template > class ptr_list_t : public B { public: ptr_list_t() {} ptr_list_t(const ptr_list_t & p_source) {*this = p_source;} void free_by_idx(t_size n) {free_mask(bit_array_one(n));} void free_all() {this->remove_all_ex(free);} void free_mask(const bit_array & p_mask) {this->remove_mask_ex(p_mask,free);} void delete_item(T* ptr) {delete_by_idx(find_item(ptr));} void delete_by_idx(t_size p_index) { delete_mask(bit_array_one(p_index)); } void delete_all() { this->remove_all_ex(pfc::delete_t); } void delete_mask(const bit_array & p_mask) { this->remove_mask_ex(p_mask,pfc::delete_t); } T * operator[](t_size n) const {return this->get_item(n);} }; template class ptr_list_hybrid_t : public ptr_list_t > { public: ptr_list_hybrid_t() {} ptr_list_hybrid_t(const ptr_list_hybrid_t & p_source) {*this = p_source;} }; typedef ptr_list_t ptr_list; template class traits_t > : public traits_t {}; }