Skip to main content

SRS

1. Subsystem Requirements

1.1 types

목적

  • 엔진 전체에서 사용하는 기본 타입 및 타입 유틸리티 제공

요구사항

  • 기본 정수 타입 alias 제공
  • byte 타입 래퍼 제공
  • 연속 메모리 view 타입 제공
  • enum class 기반 bitmask 연산 지원

제약사항

  • 플랫폼 의존 타입을 포함하지 않아야 한다
  • 외부 라이브러리에 의존하지 않아야 한다

1.2 id_sys

목적

  • 타입 안정성을 보장하는 Strong Identifier 시스템 제공

요구사항

  • 서로 다른 ID 타입 간 암묵적 변환을 허용하지 않아야 한다
  • ID 타입은 Tag 기반으로 구분되어야 한다
  • 내부 정수 타입은 템플릿 파라미터로 지정 가능해야 한다

제약사항

  • ID 타입은 단순 정수 기반이어야 한다
  • 런타임 오버헤드를 최소화해야 한다

1.3 macro

목적

  • 전처리 매크로 및 컴파일러 attribute 래퍼 제공

요구사항

  • assert 매크로 제공
  • 컴파일러 attribute wrapper 제공
  • 전처리 helper 매크로 제공
  • static assertion helper 제공

제약사항

  • 컴파일러 의존 기능은 abstraction을 통해 제공해야 한다

1.4 utility

목적

  • 범용 RAII 기반 유틸리티 제공

요구사항

  • 복사 금지 타입 제공
  • 이동 금지 타입 제공
  • scope 기반 실행 유틸리티 제공
  • variant visitor helper 제공
  • 안전한 타입 변환 helper 제공

제약사항

  • 헤더 기반으로 제공되어야 한다
  • 가능한 constexpr 및 inline 기반으로 구현되어야 한다

2. Non Functional Requirements

2.1 Header-only

  • gbase는 헤더 기반 라이브러리여야 한다

2.2 Platform Independence

  • OS 의존 API를 포함하지 않아야 한다
  • window system에 의존하지 않아야 한다
  • thread 및 network 기능을 포함하지 않아야 한다

2.3 Minimal Dependencies

  • 표준 라이브러리 외 외부 의존성을 허용하지 않는다

2.4 Compile-time Safety

  • 가능한 많은 검증을 컴파일 타임에 수행해야 한다