annotate README.jp @ 818:c59753132812

remove rvalue_t from CONV
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 26 Nov 2010 14:41:31 +0900
parents e60c3d8dadd6
children c005a392e27e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
1 C with Continuation (CwC) and Continuation based C (CbC)
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
2 河野 真治
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
3 琉球大学情報工学科
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
4
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
5 0. What is this.
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
6
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
7 これはC言語の拡張であり、下位言語でもあります。サブルーチン
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
8 の代わりに code segment というプログラミング単位を持つ言語
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
9 です。code segment は、軽量継続(light weight continuation)
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
10 によって接続されます。C の機能をすべて含む時は、C with
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
11 Continuation と呼びます。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
12
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
13 #include <stdio.h>
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
14
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
15 code factorial(int n,int result,int orig,
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
16 code(*print)(),code(*exit1)(), void *exit1env)
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
17 {
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
18 if (n<0) {
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
19 printf("err %d!\n",n);
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
20 goto (*exit1)(0),exit1env;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
21 }
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
22 if (n==0)
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
23 goto (*print)(n,result,orig,print,exit1,exit1env);
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
24 else {
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
25 result *= n;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
26 n--;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
27 goto factorial(n,result,orig,print,exit1,exit1env);
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
28 }
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
29 }
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
30
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
31 int main( int ac, char *av[])
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
32 {
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
33 int n;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
34 n = 10;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
35 goto factorial(n,1,n,print,return,environment);
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
36 }
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
37
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
38 code print(int n,int result,int orig,code(*print)(),(*exit1)(),void*exit1env)
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
39 {
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
40 printf("%d! = %d\n",orig, result);
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
41 goto (*exit1)(0),exit1env;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
42 }
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
43
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
44 code segment だけを使い、手続き呼び出しをしないと、Cの下位言語
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
45 となります。これを、Continuation based B (Cbc) と呼びます。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
46 実際、C をCbCにコンパイルすることが可能です。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
47
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
48 CbC は、アーキテクチャに依存しないアセンブラ言語だと思えば良いでしょう。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
49
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
50 1. 構文
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
51
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
52 code code_segment_name(interfaces) {
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
53 body;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
54 }
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
55
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
56 code は code segment を表す型です。code segment ではreturn
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
57 文を使用することはできません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
58
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
59 Interfaces は引数です。構造体も使うことができます。Interface
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
60 の一部はレジスタにマップされるので参照を取ることはできません。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
61 構造体は常に可能です。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
62
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
63 code segment から移動するには goto 文を使います。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
64
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
65 goto segment_name(interfaces);
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
66
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
67 間接gotoも可能です。同じinterfaceを持つcode segment間では、
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
68 効率の良い移動ができます。普通はjmp命令一つです。(stack
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
69 pointer の移動を含む場合もあるので、そうとは限らないんですが..)
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
70 異なるInterfaceの場合は、並列代入が起きます。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
71
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
72
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
73 2. C との関係。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
74
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
75 CwC からは自由にCの関数を呼び出すことができます。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
76
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
77 C の関数からcode segment にgotoするのは自由ですが、
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
78 戻る場合には、Cの関数の環境を明示する必要があります。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
79
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
80 goto factorial(n,1,n,print,return,environment);
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
81
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
82 return と environment は特殊な変数で、それぞれ、呼び出した
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
83 関数の継続(呼び出した関数に戻ることはできません)と、
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
84 その関数の環境(つまりスタック)です。setjump のjump_buf
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
85 に似てますが、allocate することはできません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
86
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
87 void *environment;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
88
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
89 という型を持ちます。return 変数は、元の関数の継続、
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
90 つまりreturn文そのものです。その型は元の関数に
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
91 依存します。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
92
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
93 code (*return)(int return_value);
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
94
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
95 ここにgotoするには環境を明示したgotoを使います。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
96 普通にgotoしてはいけません。コンパイラはチェックしてません。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
97 ごめんなさい。多重にfunction-code-function-codeして、
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
98 一番外のheavy continuationに抜けることはできます。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
99
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
100 goto (*exit1)(0),exit1env;
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
101
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
102 thread として使うことは今のところはできません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
103
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
104 3. 使い方
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
105
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
106 mc-powerpc, mc-ia32 がコンパイラです。アセンブラソースを出力します。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
107 アセンブルとリンクにはgccを使って下さい。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
108
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
109 mc-powerpc source.c
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
110 gcc source.s
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
111 a.out を生成。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
112 mc-powerpc source.c
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
113 gcc -c sources.s
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
114 .o を生成。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
115
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
116 -s comments in assembler source.
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
117 -c check only.
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
118 -oname output file names
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
119 -Idir add library include directory
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
120
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
121 test の下にいくつか例題があります。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
122
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
123 3. 実装されてない部分
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
124
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
125 // Mips コンパイラはまだ動きません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
126
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
127 64 bit long long が動きます。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
128 // long long, long double は型として使うことはできますが、
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
129 // 演算はできません。変数の定義もできないと思う。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
130 // Long long value (0LL) は使えますが、単なるlongを返します。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
131 // long は32bit. int もpointerも同じ。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
132
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
133 Mac OS X と Red hat Linux だけでテストしてあります。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
134 Intel Mac でも動作します。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
135
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
136 // Inline は無視され、普通のstatic関数にコンパイルされます。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
137
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
138 //浮動小数点レジスタへの代入計算はできません。
245
8a72b0afccfc *** empty log message ***
kono
parents: 192
diff changeset
139 // *=, /=, +=.
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
140
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
141 // built-in allocaはありません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
142
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
143 // varargs もないです。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
144
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
145 // Switch 文は、分岐にコンパイルされます。テーブルは生成されません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
146
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
147 // マクロの機能のうち連結とかは動きません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
148
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
149 マクロはコルーチンで、プリプロセッサではありません。振舞いがcppと
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
150 少し異なります。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
151
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
152 デバッグ用の -g はありません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
153
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
154 CbC のcode segment から実行を始めることはできません。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
155
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
156 // #include は、呼び出したソースコードのカレントディレクトリをサーチしません。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
157 #include は、呼び出したソースコードのカレントディレクトリをサーチします。
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
158
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
159 bit-field (こんなの要らないけどさ...) サポートしてますが、
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
160 大域変数への初期化は出来ません。
607
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
161
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
162 asm は部分的にしか実装されてません。
607
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
163
339
375d21a2b845 emit_data
kono
parents: 326
diff changeset
164
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
165 その他、たくさん。ANSI コンパチを目指しているわけではないので...
192
b0d6a6940cb7 *** empty log message ***
kono
parents:
diff changeset
166
607
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
167
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
168 /************************************************************************
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
169 ** Copyright (C) 2006 Shinji Kono
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
170 ** 連絡先: 琉球大学情報工学科 河野 真治
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
171 ** (E-Mail Address: kono@ie.u-ryukyu.ac.jp)
607
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
172 **
724
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
173 ** このソースのいかなる複写,改変,修正も許諾します。ただし、
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
174 ** その際には、誰が貢献したを示すこの部分を残すこと。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
175 ** 再配布や雑誌の付録などの問い合わせも必要ありません。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
176 ** 営利利用も上記に反しない範囲で許可します。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
177 ** バイナリの配布の際にはversion messageを保存することを条件とします。
e60c3d8dadd6 convert to UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 672
diff changeset
178 ** このプログラムについては特に何の保証もしない、悪しからず。
607
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
179 **
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
180 ** Everyone is permitted to do anything on this program
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
181 ** including copying, modifying, improving,
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
182 ** as long as you don't try to pretend that you wrote it.
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
183 ** i.e., the above copyright notice has to appear in all copies.
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
184 ** Binary distribution requires original version messages.
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
185 ** You don't have to ask before copying, redistribution or publishing.
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
186 ** THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
187 ***********************************************************************/
e055df7c1082 *** empty log message ***
kono
parents: 339
diff changeset
188