Mercurial > hg > Papers > 2021 > anatofuz-master
comparison paper/chapter/04-interface.tex @ 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 |
comparison
equal
deleted
inserted
replaced
86:eff53884ce6c | 87:5051bfd6b35f |
---|---|
169 | 169 |
170 OutputDataGearがあるCodeGearの一覧が、 hasOutputArgsに格納される。(ソースコード68行目) | 170 OutputDataGearがあるCodeGearの一覧が、 hasOutputArgsに格納される。(ソースコード68行目) |
171 codeNameと同様に、CodeGearの名前がキーとなっている。 | 171 codeNameと同様に、CodeGearの名前がキーとなっている。 |
172 対応する値は、 出力する変数の名前と、その型の組のリストになっている。 | 172 対応する値は、 出力する変数の名前と、その型の組のリストになっている。 |
173 | 173 |
174 この詳細なパースの結果は、以下に例を示す用途で使われる。 | |
175 \begin{itemize} | |
176 \item implementのCodeGearの名前の保管 | |
177 \item InterfaceのCodeGearの定義と実装の対応の確認 | |
178 \item OutputDataGearがあるAPI呼び出しであるかの確認 | |
179 \item API呼び出し時の引数のチェック | |
180 \end{itemize} | |
181 | |
174 \lstinputlisting[label=src:parsedStackDetail, caption=Stack Interfaceの詳細なパース]{src/StackParseDetail.pl} | 182 \lstinputlisting[label=src:parsedStackDetail, caption=Stack Interfaceの詳細なパース]{src/StackParseDetail.pl} |
175 | 183 |
176 | 184 |
177 | 185 |
178 \subsection{Interfaceパーサーの呼び出し} | 186 \subsection{Interfaceパーサーの呼び出し} |
187 定義したパーサーは都度呼ぶこともできるが、ヘッダファイルのパスを入力で与える必要がある。 | |
188 generate\_stub.plは入力としてヘッダファイルは与えられないので、スクリプト中に探索する必要がある。 | |
189 毎回探索するのは呼び出しにくい。 | |
190 generate\_stub.plでは、Interfaceの名前とパースした結果を対応させる連想配列を最初に作製する。 | |
191 ソースコード\ref{src:createHeaderName2Info}のサブルーチンが連想配列の作製を行い、これは初回ロード時に実行される。 | |
192 このサブルーチンでは、ヘッダファイルを起動時に全探査し、 すべてパースを行う。 | |
193 4行目でGears::UtilのAPI呼び出しをしているが、 このAPIはGearsOSで使うヘッダファイルを、指定されたパスから再帰的に探索するものである。 | |
194 | |
195 なお同名のヘッダファイルが見つかった場合は、 変換をしているCbCファイルと同じディレクトリにあるヘッダファイルが優先される。(ソースコード 13行目) | |
179 \lstinputlisting[label=src:createHeaderName2Info, caption=ヘッダファイルの名前とInterfaceのパース結果の対応リストの作製]{src/createHeaderName2Info.pl} | 196 \lstinputlisting[label=src:createHeaderName2Info, caption=ヘッダファイルの名前とInterfaceのパース結果の対応リストの作製]{src/createHeaderName2Info.pl} |
180 | 197 |
181 | 198 |
182 \section{Interfaceの実装のCbCファイルへの構文の導入} | 199 \section{Interfaceの実装のCbCファイルへの構文の導入} |
183 今までのGearsOSではマクロに似た\texttt{\#interface}構文で使用するInterfce名を指定した。 | 200 今までのGearsOSではマクロに似た\texttt{\#interface}構文で使用するInterfce名を指定した。 |