latest SDK
This commit is contained in:
43
pfc/ptr_list.h
Normal file
43
pfc/ptr_list.h
Normal file
@@ -0,0 +1,43 @@
|
||||
#pragma once
|
||||
|
||||
namespace pfc {
|
||||
|
||||
template<class T, class B = list_t<T*> >
|
||||
class ptr_list_t : public B
|
||||
{
|
||||
public:
|
||||
ptr_list_t() {}
|
||||
ptr_list_t(const ptr_list_t<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<T>);
|
||||
}
|
||||
|
||||
void delete_mask(const bit_array & p_mask) {
|
||||
this->remove_mask_ex(p_mask,pfc::delete_t<T>);
|
||||
}
|
||||
|
||||
T * operator[](t_size n) const {return this->get_item(n);}
|
||||
};
|
||||
|
||||
template<typename T,t_size N>
|
||||
class ptr_list_hybrid_t : public ptr_list_t<T,list_hybrid_t<T*,N> > {
|
||||
public:
|
||||
ptr_list_hybrid_t() {}
|
||||
ptr_list_hybrid_t(const ptr_list_hybrid_t<T,N> & p_source) {*this = p_source;}
|
||||
};
|
||||
|
||||
typedef ptr_list_t<void> ptr_list;
|
||||
|
||||
template<typename item, typename base> class traits_t<ptr_list_t<item, base> > : public traits_t<base> {};
|
||||
}
|
||||
Reference in New Issue
Block a user