本章では,HARK のノード群で使用するデータ型について述べる. HARK でデータ型を意識する必要があるのは,以下の 2 つのケースである.
ノードのプロパティ設定
ノード同士の接続(ノード間通信)
ノードのプロパティ設定で用いるデータ型
ノードのプロパティとして現状で指定できるデータ型は, 以下の 5 種類である.
型 |
意味 |
データ型レベル |
整数型 |
基本型 |
|
単精度浮動小数点型 |
基本型 |
|
文字列型 |
基本型 |
|
論理型 |
基本型 |
|
オブジェクト型 |
HARK 固有型 |
|
サブネットパラメータ型 |
HARK 固有型 |
int , float , string , bool , については,C++ の基本データ型をそのまま 利用しているので,仕様は C++ に準じる.Object ,subnet_param について は,HARK 固有のデータ型である.Object は, HARK 内部 の Object 型を継承しているクラスとして定義されるデータ型の総称となって いる.HARK では,プロパティとして指定できる Object は,Vector もしく は Matrix であるが,後述のように基本型以外は Object 型を継承している ため,Vector や Matrix のようにテキスト形式での記述が実装されていればプロパティとして指定することができる. 基本型であっても,Object 型を継承したオブジェクトを利用することで(例えば $<$Int 1 $>$など), Object として指定することも可能である.subnet_param は, 複数のノード間で一つのパラメータをラベルを用いて共有する際に用いら れる特殊なデータ型である.
ノード同士の接続の際に用いるデータ型
ノードの接続(ノード間通信)は, 異なるノードのターミナル(ノードの左右に黒点として表示される)を HARK Designer の GUI 上で線で 結ぶことによって,実現される.この際に用いられるデータ型は,以下の通りである.
型 |
意味 |
データ型レベル |
Any 型 |
HARK 固有型 |
|
整数型 |
基本型 |
|
単精度浮動小数点実数型 |
基本型 |
|
倍精度浮動小数点実数型 |
基本型 |
|
単精度浮動小数点複素数型 |
基本型 |
|
倍精度浮動小数点複素数型 |
基本型 |
|
文字型 |
基本型 |
|
文字列型 |
基本型 |
|
論理型 |
基本型 |
|
配列型 |
HARK オブジェクト型 |
|
行列型 |
HARK オブジェクト型 |
|
整数型 |
HARK オブジェクト型 |
|
単精度浮動小数点実数型 |
HARK オブジェクト型 |
|
文字列型 |
HARK オブジェクト型 |
|
複素数型 |
HARK オブジェクト型 |
|
論理型(真) |
HARK オブジェクト型 |
|
論理型(偽) |
HARK オブジェクト型 |
|
オブジェクト型(nil) |
HARK オブジェクト型 |
|
オブジェクト参照型 |
HARK 固有型 |
|
マップ型 |
HARK 固有型 |
|
音源情報型 |
HARK 固有型 |
|
伝達関数型 |
HARK 固有型 |
any はあらゆるデータ型を含む抽象的なデータ型であり,HARK 固有 で定義されている. int , float , double , complex<float> , complex<double> , char , string , bool は,C++ の基本データ型を利用している.これらの仕様は対応する C++のデータ 型の仕様に準ずる.基本型を,Object のコンテキストで使おうとすると自動 的に GenericType<T> に変換され,Int , Float のよう に,Object を継承した先頭が大文字になったクラスとして扱うことができる. ただし,String , Complex は,GenericType ではなく,それぞ れ std:string, std:complex に対するデファインとして定義されているが,同 様にstring , complex をObject 型として使う際に用いられる.このように基 本型に対して,HARK の Object を継承する形で定義されているデー タ型をHARK オブジェクト型と呼ぶものとする.TrueObject , FalseObject , nilObject もそれぞれ,true, false, nil に対応する Object とし て定義されている.HARK オブジェクト型で最もよく使われるもの は,Vector , Matrix , Map であろう.これらは,C++ の STL を継承し た HARK オブジェクト型であり,基本的には C++ の STL の対応する データ型の仕様に準ずる.
ObjectRef は,オブジェクト型へのスマートポインタとして実現されてい る HARK 固有のデータ型であり,Vector , Matrix , Map の要素とし て用いられることが多い.
Source は,音源情報型として定義される HARK 固有のデー タ型である.
TransferFunction は,伝達関数型として定義される HARK 固有のデータ型である。
HARK Designerで,ノードのターミナル同士は,データ型が同じである,もしくは 受け側のターミナルが,送り側のターミナルのデータ型を包含していれば, 正常に接続することができ,黒線で表示される. この条件を満たさないターミナル同士を接続しようとすると、エラーになり接続できない.
以降の節では,上述について基本型,HARK オブジェクト型, HARK 固有型に分けて説明を行う.