Mercurial > hg > Papers > 2021 > anatofuz-master
changeset 110:4f34c642e9fb
...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 06 Feb 2021 15:09:52 +0900 |
parents | 198088f668cd |
children | 4642d2f215d2 |
files | paper/chapter/05-perl.tex paper/master_paper.pdf paper/src/genData.h |
diffstat | 3 files changed, 48 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter/05-perl.tex Sat Feb 06 14:37:27 2021 +0900 +++ b/paper/chapter/05-perl.tex Sat Feb 06 15:09:52 2021 +0900 @@ -138,8 +138,8 @@ 連想配列は、最初のキーがInterfaceの名前であり、 Implementがある場合はInterfaceに対応する値のvalueに、implという連想配列が入れ子で入っている。 この中にInterfaceを実装しているImplの型情報が記録されている。 +\lstinputlisting[label=src:queueTree, caption=context.hに出力するDataGearの集合]{src/queueTree.pl} -\lstinputlisting[label=src:queueTree, caption=context.hに出力するDataGearの集合]{src/queueTree.pl} \begin{figure}[htbp] \begin{center} @@ -149,6 +149,14 @@ \label{fig:generate_context_3} \end{figure} + 作製されたcontext.hのunion Dataの定義をソースコード\ref{src:genData}に示す。 +context.hのunion Dataは、アルファベット順でソートされ、 Interface、Implの順で記述される。 +ここにはデバッグ用に変換した定義ファイルのパスがコメントで埋め込まれる。 +また、多重include防止用のマクロも生成される。 + +\lstinputlisting[label=src:genData, caption=生成されたcontext.hのunion Data定義]{src/genData.h} + + \subsection{Interface定義のincludeファイルの解決} DataGearの定義を自動でcontext.hに生成することが可能となった。
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/genData.h Sat Feb 06 15:09:52 2021 +0900 @@ -0,0 +1,39 @@ +union Data { + ///home/anatofuz/src/firefly/hg/Gears/Gears/src/parallel_execution/../parallel_execution/Atomic.h +#ifndef ATOMIC_STRUCT + struct Atomic { + union Data* atomic; +... +#else + struct Node; +#endif + ///home/anatofuz/src/firefly/hg/Gears/Gears/src/parallel_execution/../parallel_execution/examples/DPPMC/Phils.h +#ifndef PHILS_STRUCT + struct Phils { + union Data* phils; + enum Code putdown_lfork; + enum Code putdown_rfork; + enum Code thinking; + enum Code pickup_rfork; + enum Code pickup_lfork; + enum Code eating; + enum Code next; + } Phils; +#define PHILS_STRUCT +#else + struct Phils; +#endif + ///home/anatofuz/src/firefly/hg/Gears/Gears/src/parallel_execution/../parallel_execution/examples/DPPMC/PhilsImpl.h +#ifndef PHILSIMPL_STRUCT + struct PhilsImpl { + int self; + struct AtomicT_int* Leftfork; + struct AtomicT_int* Rightfork; + enum Code next; + } PhilsImpl; +#define PHILSIMPL_STRUCT +#else + struct PhilsImpl; +#endif +... +}