diff presen/slide.html @ 24:37f6991465b0

update
author mir3636
date Thu, 16 Feb 2017 08:03:49 +0900
parents c8bfa1f18b9e
children 327435666caa
line wrap: on
line diff
--- a/presen/slide.html	Thu Feb 16 07:29:34 2017 +0900
+++ b/presen/slide.html	Thu Feb 16 08:03:49 2017 +0900
@@ -87,7 +87,7 @@
 <!-- === begin markdown block ===
 
       generated by markdown/1.2.0 on Ruby 2.2.0 (2014-12-25) [x86_64-darwin13]
-                on 2017-02-16 07:29:20 +0900 with Markdown engine kramdown (1.9.0)
+                on 2017-02-16 08:03:24 +0900 with Markdown engine kramdown (1.9.0)
                   using options {}
   -->
 
@@ -204,6 +204,25 @@
         goto clearSingleLinkedStack(context, stack, next);
 }
 </code></pre>
+<p lang="impl"># interface の記述
+- interface を記述することで Context を通して Code Gear が参照できるようになった。
+- create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。
+- return で interface を返し、その先で指定した Code Gear へ継続できるようになる。</p>
+<pre><code>Stack* createSingleLinkedStack(struct Context* context) {
+    struct Stack* stack = new Stack();
+    struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
+    stack-&gt;stack = (union Data*)singleLinkedStack;
+    singleLinkedStack-&gt;top = NULL;
+    stack-&gt;push = C_pushSingleLinkedStack;
+    stack-&gt;pop  = C_popSingleLinkedStack;
+    stack-&gt;pop2  = C_pop2SingleLinkedStack;
+    stack-&gt;get  = C_getSingleLinkedStack;
+    stack-&gt;get2  = C_get2SingleLinkedStack;
+    stack-&gt;isEmpty = C_isEmptySingleLinkedStack;
+    stack-&gt;clear = C_clearSingleLinkedStack;
+    return stack;
+}
+</code></pre>
 
 
 </div>