Ghost Architecture
1. Layer Position
ghost는 Grap 엔진에서 플랫폼 추상화 계층(Platform Abstraction Layer) 을 제공하는 라이브러리이다.
이 모듈은 운영체제 API와 직접 통신하여 다음 기능을 제공한다.
- Window 생성 및 관리
- OS 이벤트 수집
- CPU Writable Surface 제공
- 플랫폼 시간 측정
ghost는 엔진 개념을 정의하지 않는다.
이벤트 의미 해석, 키 매핑, 엔진 이벤트 생성은
상위 계층인 ginter에서 수행된다.
시스템 레이어 구조
Application
▲
│
ginter
(Event Interpretation)
▲
│
ghost
(Platform Layer)
▲
│
Operating System
(Win32)
레이어 역할
| Layer | Responsibility |
|---|---|
| Application | 애플리케이션 로직 |
| ginter | NativeEvent → 엔진 이벤트 변환 |
| ghost | 플랫폼 시스템 인터페이스 |
| OS | 운영체제 API |
2. Internal Modules
ghost는 다음 서브시스템으로 구성된다.
ghost
├─ common
├─ id
├─ window
├─ time
├─ native_event
└─ platform
각 모듈은 플랫폼 기능을 분리된 형태로 제공한다.
common
- 공통 설정 제공
- Result 타입 정의
- 공용 설정 인터페이스 제공
id
- Window 식별자 타입 정의
- Handle 기반 객체 식별 구조 제공
window
- Window 생성 및 파괴
- Window 상태 조회
- 이벤트 접근 인터페이스
- CPU Writable Surface 접근
- 화면 출력 기능
time
- 플랫폼 시간 측정 기능 제공
- monotonic clock 인터페 이스 제공
native_event
- 플랫폼 이벤트 데이터 구조 정의
- OS 이벤트 저장 구조 제공
- NativeEventQueue 이벤트 큐 제공
platform
- 운영체제 API 구현 계층
- Window 시스템 구현
- 이벤트 변환 구현
- CPU Surface 구현
- Clock 구현
현재 구현된 플랫폼
platform/win32
3. Dependency Structure
ghost 내부 모듈은 다음 의존 구조를 따른다.
common
▲
│
id
▲
│
window
▲
│
native_event
▲
│
platform
time
└─ (platform 구현)
의존 규칙
common은 최하위 모듈id는common에 의존 가능window는id및common에 의존 가능native_event는common에 의존 가능platform은 모든 모듈 구현에 의존 가능- 순환 의존성 금지
4. Header Architecture
Ghost는 Public Header 구조를 제공한다.
모든 Public API는 <ghost/...> 경로로 접근한다.