changeset 87:5051bfd6b35f

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 05 Feb 2021 12:48:47 +0900
parents eff53884ce6c
children 04a6b05666c1
files paper/chapter/04-interface.tex paper/master_paper.pdf
diffstat 2 files changed, 17 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter/04-interface.tex	Fri Feb 05 12:33:08 2021 +0900
+++ b/paper/chapter/04-interface.tex	Fri Feb 05 12:48:47 2021 +0900
@@ -171,11 +171,28 @@
 codeNameと同様に、CodeGearの名前がキーとなっている。
 対応する値は、 出力する変数の名前と、その型の組のリストになっている。
 
+この詳細なパースの結果は、以下に例を示す用途で使われる。
+\begin{itemize}
+  \item implementのCodeGearの名前の保管
+  \item InterfaceのCodeGearの定義と実装の対応の確認
+  \item OutputDataGearがあるAPI呼び出しであるかの確認
+  \item API呼び出し時の引数のチェック
+\end{itemize}
+
 \lstinputlisting[label=src:parsedStackDetail, caption=Stack Interfaceの詳細なパース]{src/StackParseDetail.pl}
 
 
 
 \subsection{Interfaceパーサーの呼び出し}
+定義したパーサーは都度呼ぶこともできるが、ヘッダファイルのパスを入力で与える必要がある。
+generate\_stub.plは入力としてヘッダファイルは与えられないので、スクリプト中に探索する必要がある。
+毎回探索するのは呼び出しにくい。
+generate\_stub.plでは、Interfaceの名前とパースした結果を対応させる連想配列を最初に作製する。
+ソースコード\ref{src:createHeaderName2Info}のサブルーチンが連想配列の作製を行い、これは初回ロード時に実行される。
+このサブルーチンでは、ヘッダファイルを起動時に全探査し、 すべてパースを行う。
+4行目でGears::UtilのAPI呼び出しをしているが、 このAPIはGearsOSで使うヘッダファイルを、指定されたパスから再帰的に探索するものである。
+
+なお同名のヘッダファイルが見つかった場合は、 変換をしているCbCファイルと同じディレクトリにあるヘッダファイルが優先される。(ソースコード 13行目)
 \lstinputlisting[label=src:createHeaderName2Info, caption=ヘッダファイルの名前とInterfaceのパース結果の対応リストの作製]{src/createHeaderName2Info.pl}
 
 
Binary file paper/master_paper.pdf has changed