diff --git a/src/DivaGL/object.cpp b/src/DivaGL/object.cpp index 7fcf844..3620768 100644 --- a/src/DivaGL/object.cpp +++ b/src/DivaGL/object.cpp @@ -22,7 +22,7 @@ struct ObjsetInfo { bool obj_loaded; p_file_handler tex_file_handler; bool tex_loaded; - shared_ptr_prj__stack_allocator alloc_handler; + prj::shared_ptr alloc_handler; // prj::stack_allocator obj_set* obj_set; prj::vector> obj_id_data; bool field_50; diff --git a/src/DivaGL/sprite.hpp b/src/DivaGL/sprite.hpp index f15b7df..49b6f6f 100644 --- a/src/DivaGL/sprite.hpp +++ b/src/DivaGL/sprite.hpp @@ -76,7 +76,7 @@ struct SprSet { int32_t load_count; void* file_handler; bool ready; - shared_ptr_prj__stack_allocator alloc_handler; + prj::shared_ptr alloc_handler; // prj::stack_allocator prj::string file; }; diff --git a/src/DivaGL/types.hpp b/src/DivaGL/types.hpp index 296fa97..2c6b201 100644 --- a/src/DivaGL/types.hpp +++ b/src/DivaGL/types.hpp @@ -75,9 +75,40 @@ namespace prj { template using map = std::map, Allocator>>; -} -struct shared_ptr_prj__stack_allocator { - void* ptr; - void* ref; -}; + template + class ref_count { + private: + int32_t uses; + int32_t weaks; + T* ptr; + void(*delete_this_func)(ref_count* ref); + void(*destroy_func)(ref_count* ref, T* ptr); + }; + + template + class shared_ptr; + + template + class ptr_base { + private: + T* ptr; + ref_count* ref; + + template + friend class ptr_base; + }; + + template + class shared_ptr : public ptr_base { + public: + }; + + template + struct sorted_vector { + vector> field_0; + size_t field_18; + vector> field_20; + bool field_38; + }; +}