Files

22 lines
1.6 KiB
Markdown

# 공개 C++ interface
이 영역은 외부 consumer와 solver 내부 계층이 공유하는 선언·값·실패·수명 계약을 소유한다.
구현 파일의 세부 구조나 vendor handle은 공개 API에 포함하지 않는다.
- Header는 단독 include로 사용할 수 있어야 한다. Repository 경로 기반 include guard와
직접 필요한 include를 사용하고 src의 private header를 역으로 include하지 않는다.
- MKL·TBB·HDF5·Win32 타입은 공개하지 않는다. Concrete adapter class 선언이 있더라도
resource는 private implementation에 격리한다.
- Source identity, entity index와 equation index를 구분한다. 반환한 record의 단위·좌표·
location과 non-owning 인자의 수명을 production Doxygen에 기록한다.
- Status/Result로 표현하는 expected failure와 exception 경계를 보존한다. Future용
optional state·virtual method를 공통 base에 추가하지 않는다.
- Interface 변경은 consumer compile, 소유권·수명, invalid combination과 현재 결과의
보존을 검증한다. 선언만 추가하고 parser나 CLI 지원까지 완료됐다고 보고하지 않는다.
- AnalysisProcedure는 파일을 열지 않고 typed completed outcome을 반환한다. Factory에 빌려준
Domain·solver·parallel·log adapter는 실행 동안 이동하지 않는다. Element capability adapter가
빌린 immutable kernel도 adapter보다 오래 살고 같은 주소를 유지해야 한다.
- Prepared 결과 dispatch의 writer 부재는 output failure다. 잘못된 family로 변환하거나
로그 close 이전에 최종 HDF5를 공개하지 않는다.