GL CHOCO ENGINE
Loading...
Searching...
No Matches
platform_interface.h File Reference

プラットフォームシステムのInterface構造体を提供する More...

Include dependency graph for platform_interface.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  platform_vtable
 プラットフォーム処理共通化のための仮想関数テーブル(実装はsrc/platform/以下のソースファイルに格納) More...
 

Typedefs

typedef struct platform_backend platform_backend_t
 
typedef void(* pfn_platform_backend_preinit) (size_t *memory_requirement_, size_t *alignment_requirement_)
 内部状態管理構造体のメモリ要件、メモリアライメント要件を取得する
 
typedef platform_result_t(* pfn_platform_backend_init) (platform_backend_t *platform_backend_)
 内部状態管理構造体インスタンスメンバの初期化を行う
 
typedef void(* pfn_platform_backend_destroy) (platform_backend_t *platform_backend_)
 内部状態管理構造体インスタンスが保有するリソースを破棄する
 
typedef platform_result_t(* pfn_platform_backend_window_create) (platform_backend_t *platform_backend_, const char *window_label_, int window_width_, int window_height_, int *framebuffer_width_, int *framebuffer_height_)
 ウィンドウを生成する
 
typedef platform_result_t(* pfn_platform_backend_pump_messages) (platform_backend_t *platform_backend_, void(*window_event_callback) (const window_event_t *event_), void(*keyboard_event_callback) (const keyboard_event_t *event_), void(*mouse_event_callback) (const mouse_event_t *event_))
 ウィンドウ、キーボード、マウスイベントを吸い上げ、各イベントをコールバック内で処理する
 
typedef platform_result_t(* pfn_platform_backend_swap_buffers) (platform_backend_t *platform_backend_)
 描画サーフェイスのフロント/バックバッファをスワップする
 
typedef struct platform_vtable platform_vtable_t
 プラットフォーム処理共通化のための仮想関数テーブル(実装はsrc/platform/以下のソースファイルに格納)
 

Detailed Description

プラットフォームシステムのInterface構造体を提供する

Author
chocolate-pie24

ウィンドウ制御、マウス、キーボード処理を全プラットフォーム(x11, win32, glfw...)で共通化するために、 Strategyパターンを使用する。このレイヤーではStrategyパターンのinterfaceに相当する構造体インスタンスを提供する

Version
0.1
Date
2025-10-14
License
MIT License. See LICENSE file in the project root for full license text.

Typedef Documentation

◆ pfn_platform_backend_destroy

typedef void(* pfn_platform_backend_destroy) (platform_backend_t *platform_backend_)

内部状態管理構造体インスタンスが保有するリソースを破棄する

Note
  • platform_backend_自身のメモリは呼び出し側で解放する
  • platform_backend_ == NULLの場合は何もしない
Parameters
[in,out]platform_backend_破棄対象構造体インスタンス

◆ pfn_platform_backend_init

typedef platform_result_t(* pfn_platform_backend_init) (platform_backend_t *platform_backend_)

内部状態管理構造体インスタンスメンバの初期化を行う

Note
  • platform_backend_自身のメモリは呼び出し側で確保する
Parameters
[in,out]platform_backend_初期化対象構造体インスタンス
Return values
PLATFORM_INVALID_ARGUMENTplatform_backend_ == NULL
PLATFORM_SUCCESS初期化に成功し、正常終了
その他各プラットフォーム実装依存

◆ pfn_platform_backend_preinit

typedef void(* pfn_platform_backend_preinit) (size_t *memory_requirement_, size_t *alignment_requirement_)

内部状態管理構造体のメモリ要件、メモリアライメント要件を取得する

Note
  • memory_requirement_ == NULL または alignment_requirement_ == NULLの場合は何もしない
Parameters
[out]memory_requirement_platform_backend_tのメモリ要件
[out]alignment_requirement_platform_backend_tのアライメント要件

◆ pfn_platform_backend_pump_messages

typedef platform_result_t(* pfn_platform_backend_pump_messages) (platform_backend_t *platform_backend_, void(*window_event_callback)(const window_event_t *event_), void(*keyboard_event_callback)(const keyboard_event_t *event_), void(*mouse_event_callback)(const mouse_event_t *event_))

ウィンドウ、キーボード、マウスイベントを吸い上げ、各イベントをコールバック内で処理する

Note
  • ウィンドウクローズイベントについては、イベントキューが満杯時に破棄される可能性を考慮し、戻り値で返す
Parameters
[in,out]platform_backend_処理対象プラットフォーム内部状態管理オブジェクト
[in]window_event_callbackウィンドウイベント発生時用コールバック関数
[in]keyboard_event_callbackキーボードイベント発生時用コールバック関数
[in]mouse_event_callbackマウスイベント発生時用コールバック関数
Return values
PLATFORM_INVALID_ARGUMENT以下のいずれか
  • platform_backend_ == NULL または プラットフォーム内部状態管理オブジェクトが未初期化
  • window_event_callback == NULL
  • keyboard_event_callback == NULL
  • mouse_event_callback == NULL
PLATFORM_SUCCESSイベントの吸い上げおよびイベントコールバックの処理に成功し、正常終了
PLATFORM_WINDOW_CLOSEウィンドウクローズイベントが発生
その他プラットフォーム実装依存

◆ pfn_platform_backend_swap_buffers

typedef platform_result_t(* pfn_platform_backend_swap_buffers) (platform_backend_t *platform_backend_)

描画サーフェイスのフロント/バックバッファをスワップする

Parameters
[in,out]platform_backend_処理対象プラットフォーム内部状態管理オブジェクト
Return values
PLATFORM_INVALID_ARGUMENTplatform_backend_がNULL
その他プラットフォーム実装依存

◆ pfn_platform_backend_window_create

typedef platform_result_t(* pfn_platform_backend_window_create) (platform_backend_t *platform_backend_, const char *window_label_, int window_width_, int window_height_, int *framebuffer_width_, int *framebuffer_height_)

ウィンドウを生成する

Note
  • window_label_の文字列は内部でdeep copyされるため、window_label_自身のメモリは呼び出し側で破棄すること
Parameters
[in,out]platform_backend_内部状態管理構造体インスタンス
[in]window_label_ウィンドウ名称文字列
[in]window_width_初期状態のウィンドウ幅
[in]window_height_初期状態のウィンドウ高さ
[out]framebuffer_width_フレームバッファサイズ(幅)格納先ポインタ
[out]framebuffer_height_フレームバッファサイズ(高さ)格納先ポインタ
Return values
PLATFORM_INVALID_ARGUMENT以下のいずれか
  • platform_backend_ == NULL
  • window_label_ == NULL
  • window_width_ == 0
  • window_height_ == 0
  • framebuffer_width_ == NULL
  • framebuffer_height_ == NULL
PLATFORM_NO_MEMORYメモリ確保失敗
PLATFORM_SUCCESSウィンドウの生成に成功し、正常終了
その他プラットフォーム実装依存

◆ platform_backend_t

< プラットフォーム内部状態管理構造体前方宣言(実体は各ソースファイルで定義)