- [[Interfaceの定義については確認しました>../about]]
- 続いては定義したInterfaceに具体的な実装を書いていきます
# 構文
- 構文は明確には定まっている訳ではなく[[anatofuz>/user/anatofuz]]が勝手に考えているものです
- 2019/12/25までの論文ではInterfaceの定義の記述のみしか存在していない為です
|
|
- 構文はInterfaceの構文と似ています
# 解説
# 1行目(実装名の定義)
- 先頭に「実装の構造体の名前」「実装するInterfaceの名前」を書きます
typedef struct ImplName<Type, Isa> impl <InterfaceName>
typedef struct
の直後の実装名を書きますimpl
の後の<>
の中にInterface名をいれます- 現時点では実装できるInterfaceは1つだけになっています
<Type, Isa>
については後ほど解説します
# DataGear部分
- Interfaceと同じ様にImpl内で使う引数を列挙します
- Interfaceで定義したAPIの引数ではありません
# CodeGear部分
__code name()
で記述しますType
が「自分自身の型」であり Isaが「Interfaceの型」のエイリアスです- これらのCodeGearはInterfaceが提供するものではないので、一種のprivate methodです
- Interfaceの使用側からは意識しないCodeGearになります
- Interfaceで登録された
next
に継続する必要があります