Index: SimpleSample/trunk/README.txt
===================================================================
--- SimpleSample/trunk/README.txt	(revision 33)
+++ SimpleSample/trunk/README.txt	(revision 34)
@@ -1,3 +1,3 @@
-Simple な Sample
+TECS の Simple な Sample
 
 										2012年 6月17日
@@ -9,22 +9,31 @@
 
 【概要】
+
 TECS のもっとも単純なサンプルです。 exerb 版の TECS ジェネレータと 
-cygwin 版の gcc だけで動作します。
-
-cygwin 上で pthread を用いた tTask 等のセルタイプを用意していますが、
-あくまでテスト用であり、完成度はもう一歩です。いろいろ変更して試そうと
-すると、期待した動作にならない可能性が高いのでご注意ください。
+cygwin 版の gcc だけで動作します。Linux などの POSIX 環境でも動作しま
+す。
+exerb 版で動作しますので、Ruby や racc のインストールする必要がありま
+せん。
 
 【動作環境】
 
-cygwin 上でビルドし動作します。Linux などで動作させるときは Makefile 
-の TECSGEN を tecsgen.exe から tecsgen に変更してください。
+cygwin 上でビルドし動作します。2012.6.2 に発行された tecs_package
+(TECS ジェネレータ V1.1.0.4 を同梱) を用いてください。exerb 版を用いる
+ようになっているため、Ruby インタープリターは不要です。
 
-【使用方法】
+   exerb 版とは ruby インタプリタと TECS ジェネレータが一体の exe 化さ
+   れたもので、ruby インタプリタのインストールを必要としません。
+
+Linux などの POSIX 環境でも動作させることができます。その場合 Makefile 
+の TECSGEN_EXE を tecsgen.exe から tecsgen に変更してください。Ruby
+1.8 がインストールされている必要があります。Ruby 1.9 には対応しません。
+
+【準備】
 
 1) ファイルの展開
 
  tecs_package ディレクトリの直下 asp+tecs, tecsgen の並びに 
- SimpleSample を置いてください。exerb 版
+ SimpleSample を置いてください。exerb 版を用いる都合上、tecsgen コマン
+ ド引数に与えるパスは、すべて相対パスで指定しています。
 
   tecs_package-+- asp+tecs
@@ -33,15 +42,17 @@
                |
                +- SimpleSample -+- SimpleSample
-			         (※)       |
-								+- SimpleSampleOpaqueRPC
-			                    |
-								+- SimpleSampleTransparentRPC
+                     (※)       |
+                                +- SimpleSampleTrace
+                                |
+                                +- SimpleSampleOpaqueRPC
+                                |
+                                +- SimpleSampleTransparentRPC
 
-  svn の trunk のディレクトリの位置に対応します。名前は変更しても構いません。
+※ svn の trunk のディレクトリの位置に対応します。名前は変更しても構いません。
 
-2) 準備
+2) パスの設定
 
- cygwin コンソールを開き、以下のような方法で set_env.sh ないの PATH 等
- を取り込みます。
+ cygwin コンソールを開き、以下のような方法で set_env.sh 内の PATH 等を
+ 取り込みます。
 
   % cd tecs_package/tecsgen
@@ -49,4 +60,6 @@
 
   exerb 版を使用するため、TECS ジェネレータのビルドは不要です。
+
+【ビルドと実行】
 
 3) 直接結合版のビルドと実行
@@ -62,15 +75,15 @@
   % ./SimpleSample.exe
 
-・trace ありのビルド
+4) 直接結合の TracePlugin あり版のビルドと実行
 
-  % cd tecs_package/SimpleSample/SimpleSample
-  % make tecs -f Makefile-trace
-  % make all -f Makefile-trace
+  % cd tecs_package/SimpleSample/SimpleSampleTrace
+  % make tecs
+  % make all
 
 ・実行
 
-  % ./SimpleSample-trace.exe
+  % ./SimpleSample.exe
 
-4) transparent RPC 版のビルドと実行
+5) transparent RPC 版のビルドと実行
 
 ・ビルド
@@ -88,5 +101,5 @@
   わかりにくいですが、Simple と Sample は異なるタスクで実行されています。
 
-4) transparent RPC 版のビルドと実行
+6) opaque RPC 版のビルドと実行
 
 ・ビルド
@@ -103,5 +116,5 @@
   % ./rSample/SimpleSample-rSample.exe
 
- 2 つ目のコンソールでクライアント側を起動します。
+ 次に 2 つ目のコンソールでクライアント側を起動します。
 
   % cd tecs_package/SimpleSample/SimpleSampleOpaqueRPC
@@ -113,6 +126,9 @@
  が、これは out 引数で返されたものを表示しているためです。
 
-重要なことは、tSimple.c, tSample.c は、まったく無変更で 4 つのパターンに
-対応しています。簡単に再利用が図られることがわかります。
+【ポイント】
+
+ポイントは、各 CDL 内の tSimple, tSample の定義、セルタイプコード 
+tSimple.c, tSample.c は、まったく無変更で 4 つのパターンに対応している
+ことです。再利用が図られることがわかります。
 
 【次のステップ】
@@ -123,3 +139,9 @@
    まずは、これの手順を理解しましょう。
 
+ ・もう一組インスタンスを設ける
 
+【cygwin_kernel について】
+
+cygwin 上で pthread を用いた tTask 等のセルタイプを用意していますが、
+テストドライバーまたはスタブであり、ほとんど機能は備わっていません。
+
Index: SimpleSample/trunk/SimpleSample/Makefile
===================================================================
--- SimpleSample/trunk/SimpleSample/Makefile	(revision 33)
+++ SimpleSample/trunk/SimpleSample/Makefile	(revision 34)
@@ -1,14 +1,4 @@
-# このファイルは tecsgen により自動生成されました
-# Makefile.temp は gen の一つ上のディレクトリに移して使用します
-#  % mv Makefile.temp Makefile
-# 
-# clean のデフォルト動作は $(GEN_DIR)/Makefile.* を削除します
-#
-# このファイルは GNU make で gcc を用い POSIX 環境で動作するモジュールをビルドするのに適切なように生成されています
-# vpath, CFLAGS, OTHER_OBJS などを調整する必要があるかもしれません
-# 他の環境やターゲットの場合、このファイルを元に変更する必要があります
-
 # 変数 #_MVAR_#
-TARGET = SimpleSample-trace.exe
+TARGET = SimpleSample.exe
 TIMESTAMP = tecsgen.timestamp
 TECSGEN_EXE = tecsgen.exe
@@ -49,5 +39,5 @@
 
 $(TIMESTAMP) : $(TECS_IMPORTS)
-	$(TECSGEN_EXE)  -k euc -I src -I gen -I ../../tecsgen/tecs/../test/cygwin -I ../../tecsgen/tecs SimpleSample-trace.cdl
+	$(TECSGEN_EXE)  -k euc -I src -I gen -I ../../tecsgen/tecs/../test/cygwin -I ../../tecsgen/tecs SimpleSample.cdl
 	touch $(TIMESTAMP)
 
@@ -71,5 +61,2 @@
 	$(CC) -c $(CFLAGS) -o $@ $<
  
-$(_TECS_OBJ_DIR)tTracePlugin_sSample.o : tTracePlugin_sSample.c
-	$(CC) -c $(CFLAGS) -o $@ $<
- 
Index: SimpleSample/trunk/SimpleSample/Makefile-trace
===================================================================
--- SimpleSample/trunk/SimpleSample/Makefile-trace	(revision 33)
+++ 	(revision )
@@ -1,75 +1,0 @@
-# このファイルは tecsgen により自動生成されました
-# Makefile.temp は gen の一つ上のディレクトリに移して使用します
-#  % mv Makefile.temp Makefile
-# 
-# clean のデフォルト動作は $(GEN_DIR)/Makefile.* を削除します
-#
-# このファイルは GNU make で gcc を用い POSIX 環境で動作するモジュールをビルドするのに適切なように生成されています
-# vpath, CFLAGS, OTHER_OBJS などを調整する必要があるかもしれません
-# 他の環境やターゲットの場合、このファイルを元に変更する必要があります
-
-# 変数 #_MVAR_#
-TARGET = SimpleSample-trace.exe
-TIMESTAMP = tecsgen.timestamp-trace
-TECSGEN_EXE = tecsgen
-BASE_DIR = .
-CC = gcc
-CFLAGS = -I $(BASE_DIR)/. -I $(BASE_DIR)/src -I $(BASE_DIR)/gen -I $(BASE_DIR)/../../tecsgen/tecs/../test/cygwin -I $(BASE_DIR)/../../tecsgen/tecs -I $(GEN_DIR) -D "Inline=static inline"
-LD = gcc
-LDFLAGS = 
-GEN_DIR = $(BASE_DIR)/gen-trace
-SRC_DIR = $(BASE_DIR)/src
-_TECS_OBJ_DIR = $(GEN_DIR)/
-#   _TECS_OBJ_DIR   # should be end with '/'
-
-vpath %.c $(SRC_DIR) $(GEN_DIR)  src gen ../../tecsgen/tecs/../test/cygwin ../../tecsgen/tecs
-vpath %.h $(SRC_DIR) $(GEN_DIR)  src gen ../../tecsgen/tecs/../test/cygwin ../../tecsgen/tecs
-
-# OTHER_OBJS =                       # Add objects out of tecs care.
-OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
-
-# ルール #_MRUL_#
-allall: tecs
-	make all     # in order to include generated Makefile.tecsgen & Makefile.depend
-
-all : $(TARGET)
-
-
-# depend を include #_MDEP_#
--include $(GEN_DIR)/Makefile.tecsgen
--include $(GEN_DIR)/Makefile.depend
-
-$(TARGET) : $(TIMESTAMP) $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS)
-	$(LD) -o $(TARGET) $(TECSGEN_COBJS) $(CELLTYPE_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(LDFLAGS)
-clean :
-	rm -f $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(TARGET)  $(TIMESTAMP)
-	rm -rf $(GEN_DIR)
-
-tecs : $(TIMESTAMP)
-
-$(TIMESTAMP) : $(TECS_IMPORTS)
-	$(TECSGEN_EXE)  -g gen-trace -k euc -I src -I gen -I ../../tecsgen/tecs/../test/cygwin -I ../../tecsgen/tecs SimpleSample-trace.cdl
-	touch $(TIMESTAMP)
-
-# generic target for objs
-$(_TECS_OBJ_DIR)%.o : %.c
-	$(CC) -c $(CFLAGS) -o $@ $<
-
-$(_TECS_OBJ_DIR)tTask.o : tTask.c
-	$(CC) -c $(CFLAGS) -o $@ $<
- 
-$(_TECS_OBJ_DIR)tKernel.o : tKernel.c
-	$(CC) -c $(CFLAGS) -o $@ $<
- 
-$(_TECS_OBJ_DIR)tSysLog.o : tSysLog.c
-	$(CC) -c $(CFLAGS) -o $@ $<
- 
-$(_TECS_OBJ_DIR)tSample.o : tSample.c
-	$(CC) -c $(CFLAGS) -o $@ $<
- 
-$(_TECS_OBJ_DIR)tSimple.o : tSimple.c
-	$(CC) -c $(CFLAGS) -o $@ $<
- 
-$(_TECS_OBJ_DIR)tTracePlugin_sSample.o : tTracePlugin_sSample.c
-	$(CC) -c $(CFLAGS) -o $@ $<
- 
Index: SimpleSample/trunk/SimpleSample/README.txt
===================================================================
--- SimpleSample/trunk/SimpleSample/README.txt	(revision 33)
+++ 	(revision )
@@ -1,107 +1,0 @@
-SimpleSample
-						2009.6.7 Å
-						2009.6.9 ÄAbv
-
-s´ÈÕpbP[WÌTvt
-
-u3 ªÅí©é TECSvÆ¢¤±ÆÅAcygwin ¾¯Å®ì·é SimpleSample 
-ðìÁÄÝÜµ½BTECS R|[lgÌvfðð·é±ÆªÅ«Ü·B
-
-  ö®[XÌpbP[WÉüÁÄ¢éàÌÍ TOPPERS/ASP J[lãÅ
-  ®©·TvÅAskyeye ÌV~
-[VÂ«Éæè PC ãÅ®ì³
-  ¹é±ÆªÅ«é{iIÈàÌÅ·B¿åÁÆ®©µÄÝéÉÍAâân[
-  hª¢©àµêÜ¹ñB
-
-±Ì´ÈÕpbP[WÍ cygwin ÌlCeBuÈ gcc Årh·éæ¤Éµ
-Ä¢Ü·ÌÅAcygwin ªCXg[³êÄ¢êÎA¼ÉÍÁÉKv èÜ
-¹ñBruby, racc àCXg[ÌKv èÜ¹ñB
-
-rhÌdûF
-
-  % make tecs
-  % make all
-
-  êÉæÁÄÍAmake tecs ÌOÉAÈºÌæ¤ÉpXðüêéKvª é
-  ©àµêÜ¹ñB
-
-  % PATH=.:$PATH
-
-ÀsÌdûF
-
-  % ./SimpleSample.exe
-
-sSimpleSample ÌTvt
-
-hello Ì\¦ÈÇA²­ÈPÈáÅ·B
-TECS Ì{@\ððµâ·¢æ¤ÉAcygwin ¾¯Å®ìµÜ·B
-±ÌáÅÍAÈPÌ½ßÉ printf ðÄÑoµÜ·ªAÀÛÌ RTOS Â«Å 
-êÎAoÍpR|[lgðp¢½ûªæ¢Å·B
-
-R|[lg}F
-
-  SimpleSample.png
-
-R|[lgLqF
-
-SimpleSmaple.cdl É TECS CDL ÅLqB¶R[hÉÍ EUC ðgpµÄ¢Ü
-·B
-
-EVOj`Lq
-
-  sSample c ÖC^tF[XÌè`
-             µKÆµÄÚª¶ s ðtÁ·é
-
-VOj` sSampleÉÍ 2 ÂÌÖ sayHello Æ howAreYou ª éB
-Z^Cv tSample Ìñ·é@\ÆÈéÌÅAsSample Æ¢¤¼OÉµ½B
-
-EZ^CvLq
-
-  tSimple c ÄÑ³ÌZ^Cv
-  tSample c ÄÑæÌZ^Cv
-             µKÆµÄÚª¶ t ðtÁ·é
-
-Egã°Lq
-
-  Simple c ÄÑ³ÌZ
-  Sample c ÄÑæÌZ
-
-Z^CvR[hF
-
-  src/tSimple.c  c ÄÑ³ÌZ^CvR[h
-  src/tSample.c  c ÄÑæÌZ^CvR[h
-
-yì¬Â«z
-
- OS: Windows XP SP3
- Ruby: V1.8.7p72 (mswin32)
- Racc: 1.4.5
- exerb: 4.8.0
-
-sCZXt
-
-yTECSWFl[^z
-
-TECS WFl[^ tecsgen.exe ÌàÉÜÜêéR[hÉÂ¢ÄÍ TOPPERS 
-CZXÉ]¢Ü·BTOPPERS CZXÉÂ¢ÄÍÈºÌz[y[WÅ
-mFÅ«Ü·B
-
-  http://www.toppers.jp/license.html
-
-yRubyÖWz
-
-tecsgen.exe Í Ruby, Racc, Exerb ðgpµÄ\z³êÄ¢Ü·B
-»êçÉÂ¢ÄÍA»êçÌCZXÉ]¢Ü·B
-
-Ruby ÌC^v^Ì\[XÍAÈºÌ URL Ìz[y[W©ç_E[
-hÅ«Ü·B
-
-  http://www.ruby-lang.org/
-
-Racc Ì\[XÍAÈºÌ URL Ìz[y[W©ç_E[hÅ«Ü·B
-
-  http://i.loveruby.net/ja/projects/racc/
-
-Exerb Ì\[XÍÈºÌ URL Ìz[y[W©ç_E[hÅ«Ü·B
-
-  http://exerb.sourceforge.jp/
Index: SimpleSample/trunk/SimpleSample/SimpleSample-trace.cdl
===================================================================
--- SimpleSample/trunk/SimpleSample/SimpleSample-trace.cdl	(revision 33)
+++ 	(revision )
@@ -1,53 +1,0 @@
-/*
- * Simple な Sample
- *
- *  +-------------+           +-------------+          +-------------+
- *  |             |           |             |          |             |
- *  |   tTask     | sTaskBody |   tSimple   |  sSample |   tSample   |
- *  |   Task      |-----------|>  Simple    |----------|>  Sample    |
- *  |             |cTask eBody|             |cCall eEnt|             |
- *  |             |Body       |             |          |             |
- *  +-------------+           +-------------+          +-------------+
- */
-
-
-// cygwin 用の簡易な型定義
-import( <cygwin_kernel.cdl> );
-  // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); でよい
-
-import( <tSysLog.cdl> );
-
-cell tSysLog SysLog {
-};
-cell tKernel Kernel {
-};
-
-signature sSample {
-	ER  sayHello( [in]int32_t times );
-	ER  howAreYou( [out,string(len)]char_t *buf, [in]int32_t len );
-};
-
-celltype tSample {
-	entry sSample eEnt;
-};
-
-[singleton,active]
-celltype tSimple {
-	call sSample cCall;
-	entry sTaskBody eBody;
-};
-
-cell tSample Sample {
-};
-
-cell tSimple Simple {
-	[through(TracePlugin,"")]
-		cCall = Sample.eEnt;
-};
-
-cell tTask Task {
-	cBody = Simple.eBody;
-	priority = 11;
-	stackSize = 1024;
-	taskAttribute = C_EXP( "TA_ACT" );
-};
Index: SimpleSample/trunk/SimpleSample/SimpleSample.cdl
===================================================================
--- SimpleSample/trunk/SimpleSample/SimpleSample.cdl	(revision 33)
+++ SimpleSample/trunk/SimpleSample/SimpleSample.cdl	(revision 34)
@@ -9,11 +9,37 @@
  *  |             |Body       |             |          |             |
  *  +-------------+           +-------------+          +-------------+
+ *
+ *・シグニチャ記述
+ *
+ *   sSample … 関数インタフェースの定義
+ *              慣習として接頭文字 s を付加する
+ * 
+ *    シグニチャ sSampleには 2 つの関数 sayHello と howAreYou がある。
+ *    セルタイプ tSample の提供する機能となるので、sSample という名前にした。
+ *
+ *・セルタイプ記述
+ *
+ *   tSimple … 呼び元のセルタイプ
+ *   tSample … 呼び先のセルタイプ
+ *              慣習として接頭文字 t を付加する
+ *   tTask   … cygwin 用の tTask は cygwin_kernel.cdl を import することで使用できる
+ *
+ *・組上げ記述
+ *
+ *   Simple … 呼び元のセル
+ *   Sample … 呼び先のセル
+ *   Task   … タスクセル
+ *
+ * セルタイプコード：
+ *   src/tSimple.c  … 呼び元のセルタイプコード
+ *   src/tSample.c  … 呼び先のセルタイプコード
+ *
  */
-
 
 // cygwin 用の簡易な型定義
 import( <cygwin_kernel.cdl> );
-  // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); でよい
+    // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); に相当する
 
+// シグニチャ sSample
 signature sSample {
 	ER  sayHello( [in]int32_t times );
@@ -21,9 +47,10 @@
 };
 
+// セルタイプ tSample
 celltype tSample {
 	entry sSample eEnt;
 };
 
-[singleton,active]
+// セルタイプ tSimple
 celltype tSimple {
 	call sSample cCall;
@@ -31,11 +58,14 @@
 };
 
+// セル Sample
 cell tSample Sample {
 };
 
+// セル Simple
 cell tSimple Simple {
 	cCall = Sample.eEnt;
 };
 
+// セル Task
 cell tTask Task {
 	cBody = Simple.eBody;
Index: SimpleSample/trunk/SimpleSample/src/tSimple.c
===================================================================
--- SimpleSample/trunk/SimpleSample/src/tSimple.c	(revision 33)
+++ SimpleSample/trunk/SimpleSample/src/tSimple.c	(revision 34)
@@ -30,7 +30,14 @@
  * #[</ENTRY_FUNC>]# */
 void
-eBody_main()
+eBody_main(CELLIDX idx)
 {
+	CELLCB	*p_cellcb;
 	char   buf[256];
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
 
 #define N_HELLO 3
Index: SimpleSample/trunk/SimpleSample/src/tecs-types.h
===================================================================
--- SimpleSample/trunk/SimpleSample/src/tecs-types.h	(revision 33)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#include	<stdint.h>
-typedef long            ER;
-typedef long            ER_INT;
-
-/* typedef long		intptr_t; */
-typedef int		int_t;
-typedef unsigned char   char_t;
-
-typedef unsigned char   bool_t;
-
-typedef double          double64_t;
-typedef float           float32_t;
-
-/*
-typedef signed long   int32_t;
-typedef signed short  int16_t;
-typedef signed char   int8_t;
-
-typedef unsigned long   uint32_t;
-typedef unsigned short  uint16_t;
-typedef unsigned char   uint8_t;
-
-
-  int64_t, uint64_t, int128_t, uint128_t ga
-*/
-
-
Index: SimpleSample/trunk/SimpleSampleOpaqueRPC/SimpleSample.cdl
===================================================================
--- SimpleSample/trunk/SimpleSampleOpaqueRPC/SimpleSample.cdl	(revision 33)
+++ SimpleSample/trunk/SimpleSampleOpaqueRPC/SimpleSample.cdl	(revision 34)
@@ -11,4 +11,9 @@
  *  |             |Body       |             |           |             |          |             |
  *  +-------------+           +-------------+           +-------------+          +-------------+
+ *
+ *  * SimpleSample/SimpleSample.cdl を参照
+ *  * rSimple, rSample リージョンに分割し、それぞれを linkunit (リンク単位) とした
+ *  * リージョン間には、OpaqueRPCPlugin で OpaqueRPC Channel を挿入する
+ *  * TaskMain はチャンネルオープン後、 tSimple を呼び出す
  */
 
@@ -22,4 +27,5 @@
 import( <tSocketChannel.cdl> );
 
+// シグニチャ sSample
 signature sSample {
 	ER  sayHello( [in]int32_t times );
@@ -27,9 +33,10 @@
 };
 
+// セルタイプ tSample
 celltype tSample {
 	entry sSample eEnt;
 };
 
-[singleton,active]
+// セルタイプ tSimple
 celltype tSimple {
 	call sSample cCall;
@@ -37,4 +44,5 @@
 };
 
+// セルタイプ tTaskMain (クライアント側チャンネルをオープンするために用いる)
 celltype tTaskMain {
 	entry sTaskBody eBody;
@@ -45,8 +53,11 @@
 [linkunit]
 region rSample {
+	// セル SysLog
 	cell tSysLog SysLog {
 	};
+	// セル Kernel
 	cell tKernel Kernel {
 	};
+	// セル Sample
 	cell tSample Sample {
 	};
@@ -57,18 +68,24 @@
 			 "PPAllocatorSize=1024,"
 			 "clientChannelCell= 'ClientChannel', "	// クライアント側チャンネルセル名
+			 // このオプションでは、複数結合に対応できない
+			 // 複数結合に対応するには、複数結合可能なオプション指定とするか、SharedOpaqueRPCPlugin を用いる
+			 // 複数結合可能なオプション指定例は test/opaqueRPC 下にサンプルコードがある
 )]
 region rSimple {
+	// セル SysLog
 	cell tSysLog SysLog {
 	};
+	// セル Simple
 	cell tSimple Simple {
 		cCall = rSample::Sample.eEnt;
 	};
+	// セル TaskMain
 	cell tTaskMain TaskMain {
 		cBody = Simple.eBody;
 		cOpener = ClientChannel.eOpener;
 	};
-
+	// セル Task
 	cell tTask Task {
-		cBody = TaskMain.eBody;
+		cBody = TaskMain.eBody;                        //  TaskMain に変更 
 		priority = 11;
 		stackSize = 1024;
Index: SimpleSample/trunk/SimpleSampleOpaqueRPC/src/tSimple.c
===================================================================
--- SimpleSample/trunk/SimpleSampleOpaqueRPC/src/tSimple.c	(revision 33)
+++ SimpleSample/trunk/SimpleSampleOpaqueRPC/src/tSimple.c	(revision 34)
@@ -30,7 +30,14 @@
  * #[</ENTRY_FUNC>]# */
 void
-eBody_main()
+eBody_main(CELLIDX idx)
 {
+	CELLCB	*p_cellcb;
 	char   buf[256];
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
 
 #define N_HELLO 3
Index: SimpleSample/trunk/SimpleSampleTrace/Makefile
===================================================================
--- SimpleSample/trunk/SimpleSampleTrace/Makefile	(revision 34)
+++ SimpleSample/trunk/SimpleSampleTrace/Makefile	(revision 34)
@@ -0,0 +1,65 @@
+# 変数 #_MVAR_#
+TARGET = SimpleSample.exe
+TIMESTAMP = tecsgen.timestamp
+TECSGEN_EXE = tecsgen.exe
+BASE_DIR = .
+CC = gcc
+CFLAGS = -I $(BASE_DIR)/. -I $(BASE_DIR)/src -I $(BASE_DIR)/gen -I $(BASE_DIR)/../../tecsgen/tecs/../test/cygwin -I $(BASE_DIR)/../../tecsgen/tecs -I $(GEN_DIR) -D "Inline=static inline"
+LD = gcc
+LDFLAGS = 
+GEN_DIR = $(BASE_DIR)/gen
+SRC_DIR = $(BASE_DIR)/src
+_TECS_OBJ_DIR = $(GEN_DIR)/
+#   _TECS_OBJ_DIR   # should be end with '/'
+
+vpath %.c $(SRC_DIR) $(GEN_DIR)  src gen ../../tecsgen/tecs/../test/cygwin ../../tecsgen/tecs
+vpath %.h $(SRC_DIR) $(GEN_DIR)  src gen ../../tecsgen/tecs/../test/cygwin ../../tecsgen/tecs
+
+# OTHER_OBJS =                       # Add objects out of tecs care.
+OTHER_OBJS = $(_TECS_OBJ_DIR)vasyslog.o
+
+# ルール #_MRUL_#
+allall: tecs
+	make all     # in order to include generated Makefile.tecsgen & Makefile.depend
+
+all : $(TARGET)
+
+
+# depend を include #_MDEP_#
+-include $(GEN_DIR)/Makefile.tecsgen
+-include $(GEN_DIR)/Makefile.depend
+
+$(TARGET) : $(TIMESTAMP) $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS)
+	$(LD) -o $(TARGET) $(TECSGEN_COBJS) $(CELLTYPE_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(LDFLAGS)
+clean :
+	rm -f $(CELLTYPE_COBJS) $(TECSGEN_COBJS) $(PLUGIN_COBJS) $(OTHER_OBJS) $(TARGET)  $(TIMESTAMP)
+	rm -rf $(GEN_DIR)
+
+tecs : $(TIMESTAMP)
+
+$(TIMESTAMP) : $(TECS_IMPORTS)
+	$(TECSGEN_EXE)  -g gen -k euc -I src -I gen -I ../../tecsgen/tecs/../test/cygwin -I ../../tecsgen/tecs SimpleSample.cdl
+	touch $(TIMESTAMP)
+
+# generic target for objs
+$(_TECS_OBJ_DIR)%.o : %.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+
+$(_TECS_OBJ_DIR)tTask.o : tTask.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tKernel.o : tKernel.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSysLog.o : tSysLog.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSample.o : tSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tSimple.o : tSimple.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+$(_TECS_OBJ_DIR)tTracePlugin_sSample.o : tTracePlugin_sSample.c
+	$(CC) -c $(CFLAGS) -o $@ $<
+ 
Index: SimpleSample/trunk/SimpleSampleTrace/SimpleSample.cdl
===================================================================
--- SimpleSample/trunk/SimpleSampleTrace/SimpleSample.cdl	(revision 34)
+++ SimpleSample/trunk/SimpleSampleTrace/SimpleSample.cdl	(revision 34)
@@ -0,0 +1,65 @@
+/*
+ * Simple な Sample
+ *
+ *  +-------------+           +-------------+          +-------------+
+ *  |             |           |             |          |             |
+ *  |   tTask     | sTaskBody |   tSimple   |  sSample |   tSample   |
+ *  |   Task      |-----------|>  Simple    |==========|>  Sample    |
+ *  |             |cTask eBody|             |cCall eEnt|             |
+ *  |             |Body       |             |          |             |
+ *  +-------------+           +-------------+          +-------------+
+ *
+ *  * SimpleSample/SimpleSample.cdl を参照
+ *  * この例では Trace プラグインが指定される。以下の※を参照
+ *  * Trace プラグインのため tSysLog, tKernel を用いる
+ */
+
+// cygwin 用の簡易な型定義
+import( <cygwin_kernel.cdl> );
+  // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); に相当する
+
+// tSysLog の定義 (Trace の出力先)
+import( <tSysLog.cdl> );
+
+// セル SysLog (Trace の出力先)
+cell tSysLog SysLog {
+};
+// セル Kernel (Trace の時刻を得る)
+cell tKernel Kernel {
+};
+
+// シグニチャ sSample
+signature sSample {
+	ER  sayHello( [in]int32_t times );
+	ER  howAreYou( [out,string(len)]char_t *buf, [in]int32_t len );
+};
+
+// セルタイプ tSample
+celltype tSample {
+	entry sSample eEnt;
+};
+
+// セルタイプ tSimple
+celltype tSimple {
+	call sSample cCall;
+	entry sTaskBody eBody;
+};
+
+// セル Sample
+cell tSample Sample {
+};
+
+// セル Simple
+cell tSimple Simple {
+	[through(TracePlugin,"")]       //  <<< ※ この行を挿入
+		cCall = Sample.eEnt;
+};
+
+// セル Task
+cell tTask Task {
+	cBody = Simple.eBody;
+	priority = 11;
+	stackSize = 1024;
+	taskAttribute = C_EXP( "TA_ACT" );
+};
+
Index: SimpleSample/trunk/SimpleSampleTrace/src/tSample.c
===================================================================
--- SimpleSample/trunk/SimpleSampleTrace/src/tSample.c	(revision 34)
+++ SimpleSample/trunk/SimpleSampleTrace/src/tSample.c	(revision 34)
@@ -0,0 +1,80 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * このファイルは tecsgen によりテンプレートとして自動生成されました
+ * このファイルを編集して使用することが意図されていますが
+ * tecsgen の再実行により上書きされてしまうため、通常
+ *   gen/tSimpleServer_template.c => src/tSimpleServer.c
+ * のように名前, フォルダを変更してから修正します
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include <string.h>
+#include "tSample_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+
+/* 受け口関数 #_TEPF_# */
+/* #[<ENTRY_PORT>]# eEnt
+ * entry port: eEnt
+ * signature:  sSample
+ * context:    task
+ * params: 
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eEnt_sayHello
+ * name:         eEnt_sayHello
+ * global_name:  tSample_eEnt_sayHello
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_sayHello(CELLIDX idx, int32_t times)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	printf( "Sample: " );
+	while( times-- > 0 )
+		printf( "hello " );
+	printf( "\n" );
+
+	return(ercd);
+}
+
+/* #[<ENTRY_FUNC>]# eEnt_howAreYou
+ * name:         eEnt_howAreYou
+ * global_name:  tSample_eEnt_howAreYou
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
+ER
+eEnt_howAreYou(CELLIDX idx, char_t* buf, int32_t len)
+{
+	ER		ercd = E_OK;
+	CELLCB	*p_cellcb;
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		return(E_ID);
+	}
+
+	/* ここに処理本体を記述します */
+	strncpy( buf, "Sample: I'm fine!", len );
+
+	return(ercd);
+}
+
+
Index: SimpleSample/trunk/SimpleSampleTrace/src/tSimple.c
===================================================================
--- SimpleSample/trunk/SimpleSampleTrace/src/tSimple.c	(revision 34)
+++ SimpleSample/trunk/SimpleSampleTrace/src/tSimple.c	(revision 34)
@@ -0,0 +1,54 @@
+/* #[<PREAMBLE>]#
+ * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
+ * tecsmerge によるマージに使用されます
+ *
+ * 呼び口関数 #_TCPF_#
+ * call port : cCall  signature: sSample context: task
+ *   ER             cCall_sayHello( int32_t times );
+ *   ER             cCall_howAreYou( char_t* buf, int32_t len );
+ *
+ * #[</PREAMBLE>]# */
+
+#include <stdio.h>
+#include "tSimple_tecsgen.h"
+
+#ifndef E_OK
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
+#endif
+
+/* #[<ENTRY_PORT>]# eBody
+ * entry port: eBody
+ * signature:  sTaskBody
+ * context:    task
+ * #[</ENTRY_PORT>]# */
+
+/* #[<ENTRY_FUNC>]# eBody_main
+ * name:         eBody_main
+ * global_name:  tSimple_eBody_main
+ * oneway:       false
+ * #[</ENTRY_FUNC>]# */
+void
+eBody_main(CELLIDX idx)
+{
+	CELLCB	*p_cellcb;
+	char   buf[256];
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
+
+#define N_HELLO 3
+	printf( "Simple: Say hello %d times.\n", N_HELLO );
+	cCall_sayHello( N_HELLO );            /* 呼び口 cCall の sayHello を呼び出す */
+
+	printf( "Simple: How are you?\n" );
+	cCall_howAreYou( buf, sizeof buf );   /* 呼び口 cCall の howAreYou を呼び出す */
+	puts( buf );
+}
+
+/* #[<POSTAMBLE>]#
+ *   これより下に非受け口関数を書きます
+ * #[</POSTAMBLE>]#*/
Index: SimpleSample/trunk/SimpleSampleTransparentRPC/SimpleSample.cdl
===================================================================
--- SimpleSample/trunk/SimpleSampleTransparentRPC/SimpleSample.cdl	(revision 33)
+++ SimpleSample/trunk/SimpleSampleTransparentRPC/SimpleSample.cdl	(revision 34)
@@ -9,15 +9,27 @@
  *  |             |Body       |             |          |             |
  *  +-------------+           +-------------+          +-------------+
+ *
+ *  * SimpleSample/SimpleSample.cdl を参照
+ *  * この例では Transparent プラグインが指定される。以下の※を参照
+ *  * Tranceparent プラグインのため tSysLog, rpc, tDataqueOWChannel を import
  */
-
 
 // cygwin 用の簡易な型定義
 import( <cygwin_kernel.cdl> );
-  // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); でよい
+    // TECS 対応 TOPPERS/ASP ならば import( <kernel.cdl> ); に相当する
 
+// tSysLog の定義
 import( <tSysLog.cdl> );
+
+// SysLog の定義 (RPC のエラーメッセージ出力)
+cell tSysLog SysLog {
+};
+
+// RPC 関連のセルタイプの定義
 import( <rpc.cdl> );
+// Transparent RPC に用いる Dataqueue OneWay チャンネルセルタイプの定義
 import( <tDataqueueOWChannel.cdl> );
 
+// シグニチャ sSample
 signature sSample {
 	ER  sayHello( [in]int32_t times );
@@ -25,9 +37,10 @@
 };
 
+// セルタイプ tSample
 celltype tSample {
 	entry sSample eEnt;
 };
 
-[singleton,active]
+// セルタイプ tSimple
 celltype tSimple {
 	call sSample cCall;
@@ -35,15 +48,15 @@
 };
 
-cell tSysLog SysLog {
-};
-
+// セル Sample
 cell tSample Sample {
 };
 
+// セル Simple
 cell tSimple Simple {
-	[through(RPCPlugin,"")]
+	[through(RPCPlugin,"")]         // <<<  ※ この行を挿入
 		cCall = Sample.eEnt;
 };
 
+// セル Task
 cell tTask Task {
 	cBody = Simple.eBody;
Index: SimpleSample/trunk/SimpleSampleTransparentRPC/src/tSample.c
===================================================================
--- SimpleSample/trunk/SimpleSampleTransparentRPC/src/tSample.c	(revision 33)
+++ SimpleSample/trunk/SimpleSampleTransparentRPC/src/tSample.c	(revision 34)
@@ -1,23 +1,23 @@
-/*
- * このファイルは tecsgen によりテンプレートとして自動生成されました
- * このファイルを編集して使用することが意図されていますが
- * tecsgen の再実行により上書きされてしまうため、通常
- *   gen/tSample_template.c => src/tSample.c
- * のように名前, フォルダを変更してから修正します
- */
 /* #[<PREAMBLE>]#
  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
  * tecsmerge によるマージに使用されます
  *
+ * このファイルは tecsgen によりテンプレートとして自動生成されました
+ * このファイルを編集して使用することが意図されていますが
+ * tecsgen の再実行により上書きされてしまうため、通常
+ *   gen/tSimpleServer_template.c => src/tSimpleServer.c
+ * のように名前, フォルダを変更してから修正します
+ *
  * #[</PREAMBLE>]# */
 
-/* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
+#include <stdio.h>
+#include <string.h>
 #include "tSample_tecsgen.h"
-#include <stdio.h>
 
 #ifndef E_OK
-#define	E_OK	0		/* success */
-#define	E_ID	(-18)	/* illegal ID */
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
 #endif
+
 
 /* 受け口関数 #_TEPF_# */
@@ -26,4 +26,5 @@
  * signature:  sSample
  * context:    task
+ * params: 
  * #[</ENTRY_PORT>]# */
 
@@ -31,6 +32,6 @@
  * name:         eEnt_sayHello
  * global_name:  tSample_eEnt_sayHello
- * oneway:       false
- * #[</ENTRY_FUNC>]# */
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
 ER
 eEnt_sayHello(CELLIDX idx, int32_t times)
@@ -43,10 +44,11 @@
 	else {
 		return(E_ID);
-	} /* end if VALID_IDX(idx) */
+	}
 
-	/* ここに処理本体を記述します #_TEFB_# */
+	/* ここに処理本体を記述します */
+	printf( "Sample: " );
 	while( times-- > 0 )
-		printf( "Hello! " );
-	puts( "" );
+		printf( "hello " );
+	printf( "\n" );
 
 	return(ercd);
@@ -56,6 +58,6 @@
  * name:         eEnt_howAreYou
  * global_name:  tSample_eEnt_howAreYou
- * oneway:       false
- * #[</ENTRY_FUNC>]# */
+ * oneway:       
+ * #[/ENTRY_FUNC>]# */
 ER
 eEnt_howAreYou(CELLIDX idx, char_t* buf, int32_t len)
@@ -68,13 +70,11 @@
 	else {
 		return(E_ID);
-	} /* end if VALID_IDX(idx) */
+	}
 
-	/* ここに処理本体を記述します #_TEFB_# */
-	strncpy( buf, "I'm fine thank you.", len );
+	/* ここに処理本体を記述します */
+	strncpy( buf, "Sample: I'm fine!", len );
 
 	return(ercd);
 }
 
-/* #[<POSTAMBLE>]#
- *   これより下に非受け口関数を書きます
- * #[</POSTAMBLE>]#*/
+
Index: SimpleSample/trunk/SimpleSampleTransparentRPC/src/tSimple.c
===================================================================
--- SimpleSample/trunk/SimpleSampleTransparentRPC/src/tSimple.c	(revision 33)
+++ SimpleSample/trunk/SimpleSampleTransparentRPC/src/tSimple.c	(revision 34)
@@ -1,9 +1,2 @@
-/*
- * このファイルは tecsgen によりテンプレートとして自動生成されました
- * このファイルを編集して使用することが意図されていますが
- * tecsgen の再実行により上書きされてしまうため、通常
- *   gen/tSimple_template.c => src/tSimple.c
- * のように名前, フォルダを変更してから修正します
- */
 /* #[<PREAMBLE>]#
  * #[<...>]# から #[</...>]# で囲まれたコメントは編集しないでください
@@ -17,11 +10,10 @@
  * #[</PREAMBLE>]# */
 
-/* プロトタイプ宣言や変数の定義をここに書きます #_PAC_# */
+#include <stdio.h>
 #include "tSimple_tecsgen.h"
-#include <stdio.h>
 
 #ifndef E_OK
-#define	E_OK	0		/* success */
-#define	E_ID	(-18)	/* illegal ID */
+#define	E_OK	0		/* 正常終了 */
+#define	E_ID	(-18)	/* 不正ID番号 */
 #endif
 
@@ -38,12 +30,21 @@
  * #[</ENTRY_FUNC>]# */
 void
-eBody_main()
+eBody_main(CELLIDX idx)
 {
-#define  BUF_LEN	64
-	char_t	buf[64];
-#define HELLO_TIMES	(3)
-	puts( "calling sayHello" );
-	cCall_sayHello( HELLO_TIMES );
-	cCall_howAreYou( buf, BUF_LEN );
+	CELLCB	*p_cellcb;
+	char   buf[256];
+	if (VALID_IDX(idx)) {
+		p_cellcb = GET_CELLCB(idx);
+	}
+	else {
+		/* エラー処理コードをここに記述します */
+	} /* end if VALID_IDX(idx) */
+
+#define N_HELLO 3
+	printf( "Simple: Say hello %d times.\n", N_HELLO );
+	cCall_sayHello( N_HELLO );            /* 呼び口 cCall の sayHello を呼び出す */
+
+	printf( "Simple: How are you?\n" );
+	cCall_howAreYou( buf, sizeof buf );   /* 呼び口 cCall の howAreYou を呼び出す */
 	puts( buf );
 }
