# HG changeset patch # User mir3636 # Date 1548846695 -32400 # Node ID 1c7e6703724a7b82ba08343dbab398502dfb97c8 # Parent 68ea0500773fc3149c651c97310d89aaedd5754c update diff -r 68ea0500773f -r 1c7e6703724a paper/interface.tex --- 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 へと継続している。 diff -r 68ea0500773f -r 1c7e6703724a paper/master_paper.pdf Binary file paper/master_paper.pdf has changed