Mercurial > hg > Papers > 2021 > anatofuz-master
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}