C/C++ OML ライブラリ用メソッド

このセクションでは、OMLで公開されている、新しいライブラリのインターフェイスとなるメソッドについて説明します。

OMLInterfaceクラスのメソッド

RegisterFunction(const char* function_name, FUNCPTR function_pointer)

多くの場合、次のtypedefを使用してFUNCPTRを定義すると便利です。

typedef bool (*FUNCPTR) (OMLInterface*, const OMLCurrencyList* inputs, OMLCurrencyList* outputs);

このメソッドは、当該のライブラリでOMLに登録する必要がある関数ごとに1回呼び出されます。

指定した名前の関数が既に存在する場合は、この関数の呼び出しによって既存の関数が置き換えられます。

ThrowError(const char* message)

回復不能なエラーが発生した場合に、このメソッドを呼び出します。スクリプトの実行が停止され、メッセージが表示されます。

int Nargout() const

所定の呼び出しに対してこの関数から返されることが想定される出力の数を返します。この値は、関数自体の内容ではなく、この関数がどのように呼び出されたかによって決まります。

OMLInterface2クラスのメソッド

OMLInterface2は、OMLInterfaceのサブクラスで、以下のメソッドで拡張します。

const OMLCurrency* CallFunction(const OMLFunctionHandle* handle, OMLCurrencyList* inputs)

このメソッドは、入力で指定されたパラメータで指定された関数ハンドルを呼び出します。結果は1つのconst OMLCurrency*です。現時点では、複数の戻り値はサポートされていません。

OMLCurrencyList* CreateCurrencyList()

CallFunctionの入力として使用する空のOMLCurrencyListを作成します。

OMLInterface3クラスのメソッド

OMLInterface3は、OMLInterface2のサブクラスで、以下のメソッドで拡張します。

const OMLCurrency* CallFunction(const char* func_name, OMLCurrencyList* inputs)

このメソッドは、inputsで指定されたパラメータで指定された関数を呼び出します。結果は1つの const OMLCurrency*です。現時点では、複数の戻り値はサポートされていません。

void RegisterFunctionWithMetadata(const char*, ALT_FUNCPTR, const char* module, int num_inputs, int num_outputs)

このメソッドはRegisterFunctionと同じですが、関数とその入出力に関するメタデータを渡すことができ、より良いGUI体験を可能にします。

OMLInterface4クラスのメソッド

OMLInterface4は、OMLInterface3のサブクラスで、以下のメソッドで拡張します。

void RegisterHiddenFunction(const char*, ALT_FUNCPTR)

このメソッドは RegisterFunctionと同じですが、この関数がオートコンプリートによってGUIで公開されるべきではないことを示します。

const OMLCurrency* GetGlobalValue(const char* varname)

このメソッドは、指定されたグローバル変数の値を含むCurrencyへのconstポインタを返します。そのような変数がない場合、値は空の行列になります。

OMLInterface5クラスのメソッド

OMLInterface5は、OMLInterface4のサブクラスで、以下のメソッドで拡張します。

void RegisterFunctionWithMetadata(const char*, ALT_FUNCPTR, const char* module, int num_inputs, int num_outputs, bool thread_safe)

このメソッドはRegisterFunctionWithMetadataと同じですが、関数がスレッドセーフかどうかを示す追加のパラメータを渡すことができます。

OMLCurrencyListクラスの定数メソッド

入力リストに対して呼び出すことができる唯一のメソッドです。

int Size() const

リストにあるOMLCurrencyオブジェクトの数を返します。この値が0の場合もあります。

const OMLCurrency* Get(int idx) const

指定されたOMLCurrencyへのポインタを返します。このインデックスは0から始まります。インデックスが範囲外の場合は、NULLポインタが返されます。

OMLCurrencyListクラスの非定数メソッド

void AddScalar(double);

指定された倍精度値をリストの末尾に追加します。

void AddString(const char* string)

指定されたNULL終端文字列をリストの末尾に追加します。

void AddCellArray(OMLCellArray*)

指定されたセル配列オブジェクトをリストの末尾に追加します。

void AddStruct(OMLStruct*)

指定された構造体オブジェクトをリストの末尾に追加します。

void AddMatrix(OMLMatrix* matrix)

指定された2次元行列をリストの末尾に追加します。

void AddNDMatrix(OMLNDMatrix* nd_matrix)

指定されたN次元行列をリストの末尾に追加します。

void AddComplex(OMLComplex* complex)

指定された複素数値をリストの末尾に追加します。

double* AllocateData(int size)

CreateMatrixおよびCreateNDMatrixと組み合わせて使用するデータを割り当てます。

行列データはnewやmallocではなく、このメソッドを使って確保しなければなりません。これにより、適切なときにメモリを解放することが容易になります。

OMLCellArray* CreateCellArray(int rows, int cols)

指定された次元を持つ空のOMLCellArrayオブジェクトを作成し、そのオブジェクトへのポインタを返します。このオブジェクトの内容はユーザー側で入力する必要があります。

OMLStruct* CreateStruct(int rows, int cols)

指定された次元を持つ空のOMLStructオブジェクトを作成し、そのオブジェクトへのポインタを返します。このオブジェクトの内容はユーザー側で入力し、必要に応じて、このオブジェクトを出力の末尾に追加する必要があります。

OMLMatrix* CreateMatrix(int rows, int cols, double* data)

指定された実数データを使用して、指定された次元を持つOMLMatrixオブジェクトを作成し、そのオブジェクトへのポインタを返します。このデータは列優先であることが前提となります。ダブル配列は、AllocateData を使用して割り当てる必要があります。

OMLMatrix* CreateMatrix(int rows, int cols, double* real, double* imag)

指定された複素数データを使用して、指定された次元を持つOMLMatrixオブジェクトを作成し、そのオブジェクトへのポインタを返します。このデータは列優先であることが前提となります。ダブル配列は、AllocateData を使用して割り当てる必要があります。

OMLNDMatrix* CreateNDMatrix(int num_dims, int* dims, double* real)

指定された実数データを使用して、指定された次元を持つOMLNDMatrixオブジェクトを作成し、そのオブジェクトへのポインタを返します。このデータはFORTRANスタイルで保存されていることが前提となります。ダブル配列は、AllocateData を使用して割り当てる必要があります。

OMLNDMatrix* CreateNDMatrix(int num_dims, int* dims, double* real, double* imag)

指定された複素数データを使用して、指定された次元を持つOMLNDMatrixオブジェクトを作成し、そのオブジェクトへのポインタを返します。このデータはFORTRANスタイルで保存されていることが前提となります。ダブル配列は、AllocateData を使用して割り当てる必要があります。

OMLComplex* CreateComplex(double real, double imag)

指定されたデータを使用してOMLComplexオブジェクトを作成し、そのオブジェクトへのポインタを返します。

OMLCurrency* CreateCurrencyFromDouble(double dbl)

指定されたデータを使用してOMLCurrencyオブジェクトを作成し、そのオブジェクトへのポインタを返します。OMLCellArrayまたはOMLStructに倍精度値を挿入する場合に効果的です。

OMLCurrency* CreateCurrencyFromString(const char* str)

指定されたデータを使用してOMLCurrencyオブジェクトを作成し、そのオブジェクトへのポインタを返します。OMLCellArrayまたはOMLStructに文字列値を挿入する場合に効果的です。

OMLCurrencyクラスのメソッド(すべてが定数)

bool IsScalar()

このOMLCurrencyがスカラーの場合にtrueを返します。

bool IsComplex()

このOMLCurrencyが単一の複素数値の場合にtrueを返します。

bool IsString()

このOMLCurrencyが文字列の場合にtrueを返します。この文字列は複数行にわたっていてもかまいません。

bool IsMatrix()

このOMLCurrencyが2次元行列または1次元ベクトルの場合にtrueを返します。

bool IsNDMatrix()

このOMLCurrencyが多次元行列の場合にtrueを返します。

bool IsCellArray()

このOMLCurrencyがセルの配列の場合にtrueを返します。単一のセルでもかまいません。

bool IsStruct()

このOMLCurrencyが構造体の配列の場合にtrueを返します。単一の構造体でもかまいません。

double GetScalar()

このOMLCurrencyの基礎となる倍精度値を返します。

const char* GetString()

このOMLCurrencyの基礎となる文字列へのポインタを返します。

const OMLCellArray* GetCellArray()

このOMLCurrencyの基礎となるOMLCellArrayへのポインタを返します。

const OMLMatrix* GetMatrix()

このOMLCurrencyの基礎となるOMLMatrixへのポインタを返します。

const OMLNDMatrix* GetNDMatrix()

このOMLCurrencyの基礎となるOMLNDMatrixへのポインタを返します。

const OMLComplex* GetComplex()

このOMLCurrencyの基礎となるOMLComplexへのポインタを返します。

const OMLStruct* GetStruct()

このOMLCurrencyの基礎となるOMLStructへのポインタを返します。

注: 不適切なGet メソッドを呼び出してもエラーは発生しませんが、安全でないデータが返されるため、後でクラッシュする可能性があります。

OMLCurrency2クラスのメソッド(すべてが定数)

OMLCurrency2は、OMLCurrencyのサブクラスで、以下のメソッドで拡張します。

bool IsFunctionHandle()

このOMLCurrencyが関数ハンドルの場合にtrueを返します。

OMLFunctionHandle* GetFunctionHandle()

このOMLCurrencyの基礎となるOMLFunctionHandle へのポインタを返します。

OMLCurrency3クラスのメソッド(すべてが定数)

OMLCurrency3は、OMLCurrency2のサブクラスで、以下のメソッドで拡張します。

  • AddLogical
  • CreateTemporaryCellArray

OMLComplexクラスのメソッド(すべてが定数)

double GetReal()

OMLComplexの実数値を返します。

double GetImag()

OMLComplexの虚数値を返します。

OMLCurrency* GetCurrency()

所定のOMLComplexを収めたOMLCurrencyへのポインタを返します。OMLComplexをOMLCellArrayまたはOMLStructに挿入する場合に効果的です。

OMLMatrixクラスのメソッド(すべてが定数)

bool IsReal()

OMLMatrixに実数データのみが存在する場合にtrueを返します。

int GetRows()

OMLMatrixに存在する行の数を返します。

int GetCols()

OMLMatrixに存在する列の数を返します。

const double* GetRealData()

OMLMatrixの基礎となる実数データへの定数ポインタを返します。このデータは列優先で保存されています。実数の行列と複素数の行列の両方に使用できます。

const double* GetImaginaryData()

OMLMatrixの基礎となる虚数データへの定数ポインタを返します。このデータは列優先で保存されています。このメソッドは、実数のOMLMatrixの場合にNULLを返します。

OMLCurrency* GetCurrency()

指定されたOMLMatrixを収めたOMLCurrencyへのポインタを返します。OMLCellArrayまたはOMLStructにOMLMatrixを挿入する場合に効果的です。

OMLNDMatrixクラスのメソッド

bool IsReal()

OMLNDMatrixに実数データのみが存在する場合にtrueを返します。

int GetNumDimensions()

OMLNDMatrixに存在する次元の数を返します。

int GetDimension(int index)

OMLNDMatrixに必須の次元を返します。インデックスは0から始まります。

const double* GetRealData()

OMLNDMatrixの基礎となる実数データへの定数ポインタを返します。データは、FORTRANストレージを使用して保存されています。実数行列と複素数行列の両方に使用できます(ただし、現在のところ、複素数行列では適切に機能しません)。

const double* GetImaginaryData()

(このメソッドは未実装なので、必ずNULLを返します)。OMLNDMatrixの基礎となる虚数データへの定数ポインタを返します。データは、FORTRANストレージを使用して保存されています。実数のOMLNDMatrixに対しては、このメソッドを呼び出さないようにする必要があります。

OMLCurrency* GetCurrency()

指定されたOMLNDMatrixを収めたOMLCurrencyへのポインタを返します。OMLCellArrayまたはOMLStructにOMLNDMatrixを挿入する場合に効果的です。

OMLSparseMatrixクラスのメソッド

bool IsReal()

OMLSparseMatrixに実数データのみが存在する場合にtrueを返します。

int GetRows()

OMLSparseMatrixにある行の数を返します。

int GetCols()

OMLSparseMatrixにある列の数を返します。

const double* GetRealData()

OMLSparseMatrixの基礎となる実数データへの定数ポインタを返します。このデータは列優先で保存されています。実数の行列と複素数の行列の両方に使用できます。このデータには、行列の非ゼロ値のみが含まれます。

const double* GetImaginaryData()

OMLSparseMatrixの基礎となる虚数データへの定数ポインタを返します。このデータは列優先で保存されています。このメソッドは、実数のOMLSparseMatrixの場合にNULLを返します。このデータには、行列の非ゼロ値のみが含まれます。

const int* GetRowVector()

OMLSparseMatrixの非ゼロデータの行位置へのconst ポインタを返します。 このデータは列優先で保存されています。実数の行列と複素数の行列の両方に使用できます。

const int* GetColumnVector()

OMLSparseMatrix の非ゼロデータの列位置へのconstポインタを返します。このデータは列優先で保存されています。実数の行列と複素数の行列の両方に使用できます。

OMLCurrency* GetCurrency()

所定のOMLSparseMatrixを収めたOMLCurrencyへのポインタを返します。OMLCellArrayまたはOMLStructにOMLSparseMatrixを挿入する場合に効果的です。

  • GetRowVector
  • 列ベクトル

OMLCellArrayクラスの定数メソッド

OMLCurrency* GetValue(int index)

OMLCellArrayの中で指定された1つのインデックスにあるOMLCurrencyへのポインタを返します。このインデックスは0から始まります。

OMLCurrency* GetValue(int index1, int index2)

OMLCellArrayの中で指定された複数のインデックスにあるOMLCurrencyへのポインタを返します。このインデックスは0から始まります。

int GetRows()

OMLCellArrayにある行の数を返します。

int GetCols()

OMLCellArrayにある列の数を返します。

OMLCurrency* GetCurrency()

所定のOMLCellArrayを収めたOMLCurrencyへのポインタを返します。OMLCellArrayをOMLCellArrayまたはOMLStructに挿入する場合に効果的です。OMLCellArraysには、他のOMLCellArraysを含めることができます。

void SetValue(int index, OMLCurrency* val)

指定された1つのインデックスにあるセルの値をvalに設定します。このインデックスは0から始まります。

void SetValue(int index1, int index2, OMLCurrency* val)

指定された複数のインデックスにあるセルの値をvalに設定します。このインデックスは0から始まります。

OMLNDCellArrayクラスの定数メソッド

int GetNumDimensions()

OMLNDCellArrayに存在する次元の数を返します。

int GetDimension(int index)

OMLNDCellArrayに必須の次元を返します。インデックスは0から始まります。

void SetValue(int index, OMLCurrency* val)

指定された1つのインデックスにあるセルの値をvalに設定します。このインデックスは0から始まります。現時点では、シングルインデックスバージョンのみがサポートされています。

void SetValue(int index, OMLCurrency* val)

指定された1つのインデックスにあるセルの値をvalに設定します。このインデックスは0から始まります。現時点では、シングルインデックスバージョンのみがサポートされています。

OMLCurrency* GetCurrency()

所定のOMLNDCellArrayを収めたOMLCurrencyへのポインタを返します。OMLNDCellArrayをOMLCellArray、OMLNDCellArrayまたはOMLStructに挿入する場合に効果的です。 OMLNDCellArraysには、他のOMLNDCellArraysを含めることができます。

OMLStructクラスの定数メソッド

OMLCurrency* GetValue(int index1, const char* field)

OMLStructの指定されたフィールドの中で指定された1つのインデックスにあるOMLCurrencyへのポインタを返します。このインデックスは0から始まります。

OMLCurrency* GetValue(int index1, int index2, const char* field)

OMLStructの指定されたフィールドの中で指定された複数のインデックスにあるOMLCurrencyへのポインタを返します。このインデックスは0から始まります。

int GetRows()

OMLStructにある行の数を返します。

int GetCols()

OMLStructにある列の数を返します。

OMLCurrency* GetCurrency()

指定されたOMLStructを収めたOMLCurrencyへのポインタを返します。OMLCellArrayまたはOMLStructにOMLStructを挿入する場合に効果的です。OMLStructに他のOMLStructを収めることができます。

void SetValue(int index, const char* field, OMLCurrency* val)

フィールドの中で、指定された1つのインデックスにある値をvalに設定します。このインデックスは0から始まります。

void SetValue(int index1, int index2, const char* field, OMLCurrency* val)

フィールドの中で、指定された複数のインデックスにある値をvalに設定します。このインデックスは0から始まります。

OMLFunctionHandleクラスの定数メソッド

OMLFunctionHandle にはユーザがアクセスできるメソッドはありません。