Mercurial > hg > Papers > 2019 > mitsuki-master
view paper/interface.tex @ 6:7d9441dd343e
update
author | mir3636 |
---|---|
date | Mon, 21 Jan 2019 18:34:24 +0900 |
parents | 9100f20b8797 |
children | 3d42e57b60f9 |
line wrap: on
line source
% Todo % interface の前には何か軽い説明が必要 % interface 用の章を作る % なぜ, interface が必要になったのか? % Code と Data が全てフラットに展開すると, 記述が煩雑になるので モジュール化して扱いたい % java の interface のようなものがほしい % どうしてもグローバルな Data Gear にアクセスしたくなっちゃう % ここでいうグローバルな変数は Context % interface は Data Gear % interface を使うことで Gear OS のモジュール化ができるようになった % interface は Meta Data Gear で、引数の Data Gear 群, Code Gear の引数のパターンの集合, Code Gear の引数のパターンは全部 interface に記述されている必要がある。 % interface 内部の Code Gearは 自由に 引数の Data Gear, 実装のData Gear にアクセス出来る。 % inteface の実装の際は Code Gear に代入して書く % C++ で言うとCode Gearは virtual % Impl の説明いれてない % Interface 抜きのプログラミングも可能だが, 通常な言語だとアセンブラで書いてるような感覚(決まった位置にデータを書き出す) % Interface はコールフレームの性質を持っている(入出力に使われている変数はInterface で定義する必要がある) % 図のput の位置を直す % Context and stub の詳細な説明はここに書く % stub の説明は スクリプトによる goto の変換後 \chapter{Interface} Interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。 呼び出される Code Gear の引数となる Data Gear はここで全て定義される。 Code\ref{interface}は stack の Interface である。 Code Gear、Data Gear に参照するために Context を通す必要があるが、 Interface を記述することでデータ構造の API と Data Gear を結びつけることが出来る。 \lstinputlisting[label=interface, caption=StackのInterface]{./src/Stack.cbc} Code\ref{implement}は stack の実装の例である。 createImpl は関数呼び出しで呼び出され、初期化と Code Gear のスロットに対応する Code Gear の番号を入れる。 \lstinputlisting[label=implement, caption=SingleLinkedStackの実装]{./src/stackimpl.cbc}