Mercurial > hg > Papers > 2021 > anatofuz-master
diff paper/chapter/04-interface.tex @ 105:20bb97e54d33
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 06 Feb 2021 12:39:12 +0900 |
parents | 46494d9aafb9 |
children | 0512c7f88417 |
line wrap: on
line diff
--- a/paper/chapter/04-interface.tex Sat Feb 06 12:11:33 2021 +0900 +++ b/paper/chapter/04-interface.tex Sat Feb 06 12:39:12 2021 +0900 @@ -224,6 +224,8 @@ \lstinputlisting[label=src:implHeader, caption=Intefaceの実装をする際の宣言]{src/implHeader.h} +\section{内部データ構造に利用するDataGearの使用構文の導入} + \section{Interface APIに対応したCodeGearの名前の自動変換} \label{sec:autoCodeGearName} InterfaceのAPIに対応したCodeGearを実装する際、今までは暗黙にInterface名とImplの型名をつなげた名前で定義していた。 例えばStack InterfaceのAPIであるpopをSingleLinkedStackが実装した場合、CodeGearの名前はpopSingleLinkedStackにしていた。 @@ -383,7 +385,7 @@ あくまで雛形生成スクリプトはプログラマ支援であるため、 いくつかの手動での実装は許容している。 -\section{Interfaceの引数の検知} +\section{Interfaceの引数の数の確認} GearsOSのノーマルレベルでは、 InterfaceのAPIの呼び出しは\texttt{interface->method(arg)}の呼び出し方であった。 \texttt{arg}は引数であり、これはInterfaceで定義したAPIの引数の一致している必要がある。 Interfaceの定義の引数は、Implの実装自身が第一引数でくる制約があった。 @@ -427,8 +429,8 @@ ただし引数で渡す際に、例えばint型の値の加算処理などを行っていると、その処理の結果がint型になっているかどうかをPerlレベルでチェックする必要が出てしまう。 \section{InterfaceのAPIにないものを呼び出した場合の検知} -InterfaceAPI呼び出し時に、そもそも実装していないAPIを呼び出してしまうことがある。 -これもCbCファイルの返還前に処理を行いたい。 +InterfaceAPI呼び出し時に、そもそもInterfaceファイルに定義していないAPIを呼び出してしまうことがある。 +これもCbCファイルの変換前に処理を行いたい。 API呼び出し時の処理は、ソースコード\ref{src:parsedArgs}の処理そのものであるため、この処理の中に未実装のAPIを検知する様にした。 呼び出し元のInterfaceの情報パースした結果、ヘッダファイルにAPIの定義がなかった場合は11行目の\texttt{unless}に処理が落ち、 エラー終了する。