42class FGE_API ChildObjectsAccessor
46 ChildObjectsAccessor([[maybe_unused]] ChildObjectsAccessor
const& r) {}
47 ChildObjectsAccessor([[maybe_unused]] ChildObjectsAccessor&& r)
noexcept {}
48 ~ChildObjectsAccessor();
50 ChildObjectsAccessor& operator=([[maybe_unused]] ChildObjectsAccessor
const& r) {
return *
this; }
51 ChildObjectsAccessor& operator=([[maybe_unused]] ChildObjectsAccessor&& r)
noexcept {
return *
this; }
54 void clearDetachedObjects();
56 fge::ObjectDataShared addExistingObject(
fge::Object*
object,
57 std::size_t insertionIndex = std::numeric_limits<std::size_t>::max());
58 fge::ObjectDataShared addNewObject(fge::ObjectPtr&& newObject,
59 std::size_t insertionIndex = std::numeric_limits<std::size_t>::max());
61 fge::ObjectDataShared addExistingDetachedObject(
fge::Object*
object, fge::ObjectPlan newPlan)
const;
62 fge::ObjectDataShared addNewDetachedObject(fge::ObjectPtr&& newObject, fge::ObjectPlan newPlan)
const;
64 bool detachObject(std::size_t index, fge::ObjectPlan newPlan);
66 [[nodiscard]] std::size_t getSize()
const;
67 [[nodiscard]]
fge::Object const* get(std::size_t index)
const;
69 [[nodiscard]] fge::ObjectDataShared getSharedPtr(std::size_t index)
const;
71 void remove(std::size_t index);
72 void remove(std::size_t first, std::size_t last);
83 void putInFront(std::size_t index);
84 void putInBack(std::size_t index);
86 [[nodiscard]] std::size_t getActualIteratedIndex()
const;
88 [[nodiscard]] std::size_t getIndex(
fge::Object*
object)
const;
99 fge::ObjectDataShared _objData;
102 void cleanupDetachedObjects()
const;
104 mutable std::vector<fge::ObjectDataWeak> g_detachedObjects;
105 std::vector<DataContext> g_data;
106 mutable std::size_t g_actualIteratedIndex{std::numeric_limits<std::size_t>::max()};
114 template<
class TOwner,
class... TArgs>
115 constexpr DeclareChild(TOwner* owner, TArgs&&... args) :
116 g_object(std::forward<TArgs>(args)...)
118 owner->_children.addExistingObject(&this->g_object);
121 [[nodiscard]]
constexpr TObject* operator->() {
return &this->g_object; }
122 [[nodiscard]]
constexpr TObject
const* operator->()
const {
return &this->g_object; }
124 [[nodiscard]]
constexpr TObject& get() {
return this->g_object; }
125 [[nodiscard]]
constexpr TObject
const& get()
const {
return this->g_object; }
127 template<
class TOwner>
128 inline bool detach(TOwner* owner, fge::ObjectPlan newPlan)
130 return owner->_children.detachObject(owner->_children.getIndex(&this->g_object), newPlan);
Definition C_childObjectsAccessor.hpp:94