changeset 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
files paper/chapter/04-interface.tex paper/chapter/05-perl.tex paper/drawio/geneConst1.drawio paper/drawio/geneConst1.pdf paper/master_paper.pdf
diffstat 5 files changed, 25 insertions(+), 10 deletions(-) [+]
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}に処理が落ち、 エラー終了する。
--- a/paper/chapter/05-perl.tex	Sat Feb 06 12:11:33 2021 +0900
+++ b/paper/chapter/05-perl.tex	Sat Feb 06 12:39:12 2021 +0900
@@ -108,12 +108,23 @@
 
 Contextの初期化ルーチンを作製するgenerate\_context.plは、その特性上すべてのCbCファイルをロードしていた。
 したがってcontext.hを作製する場合はこのスクリプトで行うと現状のCMakeに手をつけずに変更ができる。
+context.hを作製するため、generate\_context.plの処理は図\ref{fig:generate_context_2}の処理を実行することになる。
+
+\begin{figure}[h]
+  \begin{center}
+   \includegraphics[width=100mm]{drawio/generate_context.pdf}
+  \end{center}
+  \caption{generate\_context.plを使ったcontext.hとファイル生成}
+  \label{fig:generate_context_2}
+ \end{figure}
+
 
 \subsection{context.hの生成処理}
 generate\_context.plでcontext.hを作製したい。
 この為には、プロジェクトで使用しているDataGearを特定する必要がある。
 generate\_context.plの時点でCbCファイルはメタ情報を含む表現に変換されている。
 Interfaceの使用と、実装を示す\texttt{\#interface}や\texttt{\#impl}構文はこの時点では落とされている為、別の情報から使用しているDataGrarを取得する必要がある。
+取得からcontext.hの作製までの流れを図\ref{fig:generate_context_3}に示す。
 
 DataGearはGearsOSのメタレベルでは構造体で表現されていた。
 また、DataGearは各CodeGearの引数の形で受け渡されている。
@@ -124,15 +135,16 @@
 ヘッダファイルがあった場合、 Gears::InterfaceのAPIを利用して、 InterfaceもしくはImplのファイルとして利用可能であるかを確認する。
 Interface、Implファイルでなかった場合は、ただの構造体であるのでcontext.hに含む情報からは除外する。
 
+\begin{figure}[htbp]
+  \begin{center}
+   \includegraphics[width=130mm]{drawio/geneConst1.pdf}
+  \end{center}
+  \caption{DataGearの収集とcontext.h生成の処理イメージ}
+  \label{fig:generate_context_3}
+ \end{figure}
 
 
-\begin{figure}[h]
-  \begin{center}
-   \includegraphics[width=100mm]{drawio/generate_context.pdf}
-  \end{center}
-  \caption{generate\_context.plを使ったcontext.hとファイル生成}
-  \label{fig:generate_context_2}
- \end{figure}
+
 
 \subsection{context.hのテンプレートファイル}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/drawio/geneConst1.drawio	Sat Feb 06 12:39:12 2021 +0900
@@ -0,0 +1,1 @@
+<mxfile host="Electron" modified="2021-02-06T03:35:47.182Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.88 Electron/11.1.1 Safari/537.36" etag="kj_7Gp0a_tQr2vqDYzPt" version="14.1.8" type="device"><diagram id="GUjd4v6yzUQa2QOk8NSy" name="ページ1">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</diagram></mxfile>
\ No newline at end of file
Binary file paper/drawio/geneConst1.pdf has changed
Binary file paper/master_paper.pdf has changed