4 データ型

本章では,HARK  のノード群で使用するデータ型について述べる. HARK  でデータ型を意識する必要があるのは,以下の 2 つのケースである.

ノードのプロパティ設定で用いるデータ型

ノードのプロパティとして現状で指定できるデータ型は, 以下の 5 種類である.

意味

データ型レベル

int 

整数型

基本型

float 

単精度浮動小数点型

基本型

string 

文字列型

基本型

bool 

論理型

基本型

Object 

オブジェクト型

HARK  固有型

subnet_param 

サブネットパラメータ型

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 

Any 型

HARK  固有型

int 

整数型

基本型

float 

単精度浮動小数点実数型

基本型

double 

倍精度浮動小数点実数型

基本型

complex<float> 

単精度浮動小数点複素数型

基本型

complex<double> 

倍精度浮動小数点複素数型

基本型

char 

文字型

基本型

string 

文字列型

基本型

bool 

論理型

基本型

Vector 

配列型

HARK  オブジェクト型

Matrix 

行列型

HARK  オブジェクト型

Int 

整数型

HARK  オブジェクト型

Float 

単精度浮動小数点実数型

HARK  オブジェクト型

String 

文字列型

HARK  オブジェクト型

Complex 

複素数型

HARK  オブジェクト型

TrueObject 

論理型(真)

HARK  オブジェクト型

FalseObject 

論理型(偽)

HARK  オブジェクト型

nilObject 

オブジェクト型(nil)

HARK  オブジェクト型

ObjectRef 

オブジェクト参照型

HARK  固有型

Map 

マップ型

HARK  固有型

Source 

音源情報型

HARK  固有型

TransferFunction 

伝達関数型

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  固有のデータ型である。

4.1 ノードのターミナルの型

HARK Designerで,ノードのターミナル同士は,データ型が同じである,もしくは 受け側のターミナルが,送り側のターミナルのデータ型を包含していれば, 正常に接続することができ,黒線で表示される. この条件を満たさないターミナル同士を接続しようとすると、エラーになり接続できない.

以降の節では,上述について基本型,HARK  オブジェクト型, HARK  固有型に分けて説明を行う.