Mercurial > hg > Papers > 2019 > mitsuki-master
view paper/interface.tex @ 9:ddf62b739703
update
author | mir3636 |
---|---|
date | Fri, 25 Jan 2019 03:48:23 +0900 |
parents | 3d42e57b60f9 |
children | 9295b0c90a84 |
line wrap: on
line source
\chapter{Interface} Interface は Gears OS のモジュール化の仕組みである。 Interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。 呼び出される Code Gear の引数となる Data Gear はここで全て定義される。 ソースコード\ref{interface}は Stack の Interface である。 \_\_code で記述されているものは Stack が実装するべき push や pop などの Code Gear、 union Data で記述されているものは、Stack の Code Gear の引数の Data Gear である。 \lstinputlisting[label=interface, caption=StackのInterface]{./src/Stack.cbc} 通常 Code Gear、Data Gear に参照するためには Context を通す必要があるが、 Interface を記述することでデータ構造の API と Data Gear を結びつけることが出来る。 \section{Interface の実装} ソースコード\ref{implement}は Stack の実装の例である。 create の関数は 実装の初期化である。 ソースコード\ref{implement} 6〜12行目で実装の Code Gear に代入しているものは Context が 持つ enum で定義された Code Gear の番号である。 ソースコード \ref{Gears_code} 3行目で stack->pop へと goto しているが、 stack->pop には Code Gear の番号が入っているため実装した Code Gear へと継続する。 このため、ソースコード \ref{Gears_code} では 6行目の popSingleLinkedStack へと継続している。 \lstinputlisting[label=implement, caption=SingleLinkedStackの実装]{./src/stackimpl.cbc}