Skip to main content

SDS

1. Design Structure

gbase는 Grap 엔진에서 사용하는 최하위 Foundation 라이브러리이다.
엔진의 모든 상위 모듈은 gbase에 의존할 수 있지만, gbase는 어떤 상위 모듈에도 의존하지 않는다.


2. Module Structure

gbase는 다음 서브시스템으로 구성된다.

2.1 types

역할

  • 기본 타입 정의
  • 타입 유틸리티 제공

구성 요소

  • integer type alias
  • byte 타입
  • span view
  • enum flag helper

2.2 id_sys

역할

  • 타입 안전 ID 시스템 제공

구성 요소

  • StrongId
  • IdTag
  • ID 타입 정의

2.3 macro

역할

  • 공통 매크로 및 컴파일러 attribute 제공

구성 요소

  • assert macro
  • compiler attributes
  • preprocessor helper
  • static assert wrapper

2.4 utility

역할

  • 범용 RAII 및 helper 유틸리티 제공

구성 요소

  • noncopyable
  • nonmovable
  • scope utilities
  • overloaded visitor helper
  • narrow_cast
  • defer

3. Module Dependency

gbase 내부 모듈은 다음 의존 구조를 따른다.

types


macro


id_sys


utility

설계 규칙

  • types는 최하위 레이어이다
  • macrotypes에 의존할 수 있다
  • id_systypes에 의존할 수 있다
  • utilitytypesmacro에 의존할 수 있다
  • 순환 의존성은 허용되지 않는다

4. Namespace Design

모든 API는 다음 네임스페이스에 정의된다.

namespace gbase

5. Header Organization

gbase는 header-only 라이브러리로 구성된다.

모든 기능은 다음 경로를 통해 접근할 수 있다.

#include <gbase/...>

또한 다음 umbrella header를 제공한다.

#include <gbase/gbase.hpp>

6. Directory Layout

gbase의 기본 디렉토리 구조는 다음과 같다.

gbase/
├─ gbase.hpp
├─ id_sys/
├─ types/
├─ macro/
└─ utility/

각 디렉토리는 독립적인 서브시스템을 구성한다.


7. Design Constraints

gbase는 다음 설계 제약을 따른다.

  • 플랫폼 또는 OS API에 의존하지 않는다
  • 외부 라이브러리를 사용하지 않는다
  • header-only 구조를 유지한다
  • 런타임 오버헤드를 최소화한다
  • 가능한 경우 constexpr 기반 구현을 사용한다