MIR Engine
미래 지향 설계에 초점을 맞춘 자체 제작 게임 엔진
로딩중...
검색중...
일치하는것 없음
MIR::ComponentPool< T > 클래스 템플릿 참조

특정 타입 T에 대한 컴포넌트 풀 구현 더 자세히 ...

#include <ComponentPool.hpp>

MIR::ComponentPool< T >에 대한 상속 다이어그램 :
[범례]
MIR::ComponentPool< T >에 대한 협력 다이어그램:
[범례]

Public 멤버 함수

 ComponentPool ()=default
 ComponentPool 기본 생성자
 
template<typename... Args>
std::unique_ptr< Component, std::function< void(Component *)> > Acquire (Args &&... args)
 풀로부터 컴포넌트를 대여(Acquire)하는 메서드
 
- MIR::PoolBase(으)로부터 상속된 Public 멤버 함수
virtual ~PoolBase ()=default
 가상 소멸자
 

정적 Public 속성

static constexpr std::size_t MAX_SIZE = 0xFF
 풀에서 보관할 수 있는 최대 컴포넌트 수
 

상세한 설명

template<typename T>
class MIR::ComponentPool< T >

특정 타입 T에 대한 컴포넌트 풀 구현

ComponentPool은 T 타입의 컴포넌트를 재사용하기 위한 풀. 최대 MAX_SIZE개의 컴포넌트를 스택(pool)에 보관할 수 있으며, Acquire 메서드를 통해 필요 시 새 컴포넌트를 생성하거나, 풀에서 재사용 가능한 컴포넌트를 팝. 사용이 끝난 컴포넌트는 커스텀 해제자(Deleter)를 통해 다시 풀에 반환.

템플릿 파라메터
T풀에서 관리할 컴포넌트 타입

생성자 & 소멸자 문서화

◆ ComponentPool()

template<typename T >
MIR::ComponentPool< T >::ComponentPool ( )
default

ComponentPool 기본 생성자

초기 상태에서는 풀(stack)이 비어있음.

멤버 함수 문서화

◆ Acquire()

template<typename T >
template<typename... Args>
std::unique_ptr< Component, std::function< void(Component *)> > MIR::ComponentPool< T >::Acquire ( Args &&... args)
inline

풀로부터 컴포넌트를 대여(Acquire)하는 메서드

템플릿 파라미터 T 타입의 컴포넌트를 반환합니다. 내부적으로 풀(stack)이 비어있으면 새로 할당하고, 비어있지 않으면 스택 최상단의 재사용 가능한 컴포넌트를 가져와 새로 전달받은 인자(Args...)로 재초기화. 반환 타입은 스마트 포인터(uniqe_ptr)를 이용하며, 해제 시 커스텀 해제자를 통해 컴포넌트가 다시 풀로 반환되거나 풀에 여유공간이 없으면 delete.

템플릿 파라메터
Args컴포넌트 생성자에 전달할 파라미터 타입
매개변수
args컴포넌트 생성자에 전달할 실제 인자
반환값
커스텀 해제자가 설정된 unique_ptr을 반환, 해제 시 풀로 반환(또는 삭제).
99 {
100 T* component;
101
102 if (pool.empty())
103 {
104 // 풀에 여유 컴포넌트가 없으므로 새로운 컴포넌트 할당
105 component = new T(std::forward<Args>(args)...);
106 }
107 else
108 {
109 // 기존 컴포넌트를 재사용
110 component = pool.top();
111 pool.pop();
112
113 // 새 인자로 재초기화
114 *component = T(std::forward<Args>(args)...);
115 }
116
117 // 커스텀 해제자 정의: unique_ptr이 해제될 때 호출됨
118 auto deleter = [this](Component* ptr)
119 {
120 this->Release(static_cast<T*>(ptr));
121 };
122
123 return std::unique_ptr<Component,
124 std::function<void(Component*)>>(component, deleter);
125 }

필드 문서화

◆ MAX_SIZE

template<typename T >
std::size_t MIR::ComponentPool< T >::MAX_SIZE = 0xFF
staticconstexpr

풀에서 보관할 수 있는 최대 컴포넌트 수

이 값은 풀에 재사용 가능한 컴포넌트를 얼마나 많이 쌓아둘 수 있는지 결정. 여기서는 0xFF(255)로 설정.


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: