changeset 30:33222880db79

update
author mir3636
date Sun, 21 Jan 2018 00:05:37 +0900
parents 6df75cb95ddd
children 7e2ceefcef54
files Slide/fig/generate_context3.pdf Slide/prosym.html Slide/prosym.md
diffstat 3 files changed, 69 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
Binary file Slide/fig/generate_context3.pdf has changed
--- a/Slide/prosym.html	Sat Jan 20 23:52:11 2018 +0900
+++ b/Slide/prosym.html	Sun Jan 21 00:05:37 2018 +0900
@@ -86,7 +86,7 @@
 <!-- === begin markdown block ===
 
       generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16]
-                on 2018-01-20 22:57:55 +0900 with Markdown engine kramdown (1.13.2)
+                on 2018-01-21 00:05:29 +0900 with Markdown engine kramdown (1.13.2)
                   using options {}
   -->
 
@@ -216,10 +216,26 @@
 <ul>
   <li>Gears OS は以下の要素で構成される。
     <ul>
-      <li>Context</li>
-      <li>TaskQueue</li>
-      <li>TaskManager</li>
-      <li>Worker</li>
+      <li>Context
+        <ul>
+          <li>使用されるCode/Data Gear のリストを持っておりTaskでもある。</li>
+        </ul>
+      </li>
+      <li>TaskQueue
+        <ul>
+          <li>Task のリストを扱う</li>
+        </ul>
+      </li>
+      <li>TaskManager
+        <ul>
+          <li>Task の依存関係の解決、作成や停止を行います。</li>
+        </ul>
+      </li>
+      <li>Worker
+        <ul>
+          <li>Task の実行を行う</li>
+        </ul>
+      </li>
     </ul>
   </li>
 </ul>
@@ -346,8 +362,16 @@
     stack-&gt;clear = C_clearSingleLinkedStack;
     return stack;
 }
+</code></pre>
 
-__code pushSingleLinkedStack(struct SingleLinkedStack* stack, union Data* data, __code next(...)) {
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="interface--2">Interface の実装例</h1>
+
+<pre lang="impl"><code>__code pushSingleLinkedStack(struct SingleLinkedStack* stack, 
+                                union Data* data, __code next(...)) {
     Element* element = new Element();
     element-&gt;next = stack-&gt;top;
     element-&gt;data = data;
@@ -376,13 +400,20 @@
   <li>そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。</li>
 </ul>
 
-<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 lang="stub" id="stub-code-gear-">stub Code Gear の例</h1>
+<pre><code>__code clearSingleLinkedStack(struct Context *context,
+                    struct SingleLinkedStack* stack,enum Code next) {
     stack-&gt;top = NULL;
     goto meta(context, next);
 }
 
 __code clearSingleLinkedStack_stub(struct Context* context) {
-        SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+        SingleLinkedStack* stack = 
+                (SingleLinkedStack*)GearImpl(context, Stack, stack);
         enum Code next = Gearef(context, Stack)-&gt;next;
         goto clearSingleLinkedStack(context, stack, next);
 }
@@ -406,7 +437,7 @@
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="stub-code-gear-">stub Code Gear の生成</h1>
+<h1 id="stub-code-gear--1">stub Code Gear の生成</h1>
 <ul>
   <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li>
   <li>stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。</li>
@@ -415,13 +446,21 @@
   <li>cbc ファイルの Code Gear から、生成した stub Code Gear を加えたファイルを生成する。</li>
 </ul>
 
-<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+
+</div>
+<div class='slide '>
+<!-- _S9SLIDE_ -->
+<h1 id="stub-code-gear-1">生成された stub Code Gear</h1>
+
+<pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,
+                    struct SingleLinkedStack* stack,enum Code next) {
     stack-&gt;top = NULL;
     goto meta(context, next);
 }
 
 __code clearSingleLinkedStack_stub(struct Context* context) {
-        SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+        SingleLinkedStack* stack = 
+                (SingleLinkedStack*)GearImpl(context, Stack, stack);
         enum Code next = Gearef(context, Stack)-&gt;next;
         goto clearSingleLinkedStack(context, stack, next);
 }
@@ -434,7 +473,6 @@
 <h1 id="context--1">Context の生成</h1>
 
 <ul>
-  <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li>
   <li>generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。
     <ul>
       <li>Code/Data Gear を enum で定義した enumCode.h、enumData.h</li>
@@ -445,7 +483,7 @@
 </ul>
 
 <div style="text-align: center;">
- <img src="./fig/generate_context3.pdf" alt="generate_context3" width="900" />
+ <img src="./fig/generate_context3.pdf" alt="generate_context3" width="500" />
 </div>
 
 
--- a/Slide/prosym.md	Sat Jan 20 23:52:11 2018 +0900
+++ b/Slide/prosym.md	Sun Jan 21 00:05:37 2018 +0900
@@ -185,8 +185,13 @@
     stack->clear = C_clearSingleLinkedStack;
     return stack;
 }
+```
 
-__code pushSingleLinkedStack(struct SingleLinkedStack* stack, union Data* data, __code next(...)) {
+# Interface の実装例
+
+```impl
+__code pushSingleLinkedStack(struct SingleLinkedStack* stack, 
+                                union Data* data, __code next(...)) {
     Element* element = new Element();
     element->next = stack->top;
     element->data = data;
@@ -209,14 +214,17 @@
 - しかし、Meta Data Gear である Context をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。
 - そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。
 
+# stub Code Gear の例
 ```stub
-__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+__code clearSingleLinkedStack(struct Context *context,
+                    struct SingleLinkedStack* stack,enum Code next) {
     stack->top = NULL;
     goto meta(context, next);
 }
 
 __code clearSingleLinkedStack_stub(struct Context* context) {
-        SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+        SingleLinkedStack* stack = 
+                (SingleLinkedStack*)GearImpl(context, Stack, stack);
         enum Code next = Gearef(context, Stack)->next;
         goto clearSingleLinkedStack(context, stack, next);
 }
@@ -238,14 +246,18 @@
 - Code Gear の引数と interface を照らし合わせ、Gearef または GearImpl を決定する。
 - cbc ファイルの Code Gear から、生成した stub Code Gear を加えたファイルを生成する。
 
+# 生成された stub Code Gear
+
 ```stub
-__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+__code clearSingleLinkedStack(struct Context *context,
+                    struct SingleLinkedStack* stack,enum Code next) {
     stack->top = NULL;
     goto meta(context, next);
 }
 
 __code clearSingleLinkedStack_stub(struct Context* context) {
-        SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+        SingleLinkedStack* stack = 
+                (SingleLinkedStack*)GearImpl(context, Stack, stack);
         enum Code next = Gearef(context, Stack)->next;
         goto clearSingleLinkedStack(context, stack, next);
 }
@@ -253,14 +265,13 @@
 
 # Context の生成
 
-- Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。 
 - generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。
     - Code/Data Gear を enum で定義した enumCode.h、enumData.h
     - 取得した Code/Data Gear から Context の生成を行う target-context
     - Context を生成する際の Data Gear の Allocation を行う dataGearInit.c
 
 <div style="text-align: center;">
- <img src="./fig/generate_context3.pdf" alt="generate_context3" width="900">
+ <img src="./fig/generate_context3.pdf" alt="generate_context3" width="500">
 </div>
 
 # 今後の課題