Mercurial > hg > Papers > 2019 > mitsuki-master
changeset 20:1c7e6703724a
update
author | mir3636 |
---|---|
date | Wed, 30 Jan 2019 20:11:35 +0900 |
parents | 68ea0500773f |
children | 2f235b4308d2 |
files | paper/interface.tex paper/master_paper.pdf |
diffstat | 2 files changed, 12 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/interface.tex Wed Jan 30 19:36:41 2019 +0900 +++ b/paper/interface.tex Wed Jan 30 20:11:35 2019 +0900 @@ -15,7 +15,6 @@ Code Gear が継続する際にはこの領域に引数の Data Gear を格納する。 この領域に確保された Data Gear へのアクセスは Interface の情報から行われる。 - ソースコード\ref{pushStack} は、pushSingleLinkedStack のソースコードである。 ノーマルレベルの Code Gear では Stack の push の操作は、 push するデータと次の継続先の Code Gear という引数の集合のように見える。 @@ -47,10 +46,17 @@ } \end{lstlisting} +\section{Interface の定義} + ソースコード\ref{interface}は Stack の Interface である。 -\_\_code で記述されているものは Stack が実装するべき push や pop などの Code Gear、 -union Data で記述されているものは、Stack の Code Gear で用いる全ての Data Gear である。 -Interface で引数として用いる Data Gear は全てここで表されている。 +typedef struct Stack で Interface を定義する。 +Impl には実装の型が入る。 +ソースコード\ref{interface}、2〜4行目のunion Data で定義されてるものは、 +Interface の API で用いる全ての Data Gear である。 +Interface の全ての API で用いる全ての Data Gear は Interface で定義される。 +ソースコード\ref{interface}、5〜13行目の \_\_code で記述されているものは、 +Interface の API である。 +ここでは Stack のAPI である push や pop などの Code Gear となっている。 \lstinputlisting[label=interface, caption=StackのInterface]{./src/Stack.cbc} @@ -62,9 +68,9 @@ \section{Interface の実装} ソースコード\ref{implement}は Stack の実装の例である。 create の関数は 実装の初期化である。 -ソースコード\ref{implement} 6〜12行目で実装の Code Gear に代入しているものは Context が +ソースコード\ref{implement}、6〜12行目で実装の Code Gear に代入しているものは Context が 持つ enum で定義された Code Gear の番号である。 -ソースコード \ref{Gears_code} 3行目で stack\verb|->|pop へと goto しているが、 +ソースコード \ref{Gears_code}、3行目で stack\verb|->|pop へと goto しているが、 stack\verb|->|pop には Code Gear の番号が入っているため実装した Code Gear へと継続する。 このため、ソースコード \ref{Gears_code} では 6行目の popSingleLinkedStack へと継続している。