ライブラリの作成

loader.omlファイル

各ライブラリには、そのライブラリがインストー ル先の環境/コンピュータに適しているかどうかを確認するためのloader.omlスクリプトが必要です。

loader.omlスクリプトは、以下のアクションを実行する必要があります:
  1. library.iniファイルが存在する場合は削除してください。

    関数が"適切"である場合、このファイルはスクリプトが終了する前に再作成されるべきです。ライブラリの作成者は、自分のライブラリが"適切"かどうかを判断しなければなりません。

    例えば、ライブラリがインストールされるべきかロードされるべきかを判断するために、Linuxでのみ実行する必要のあるライブラリの場合、もし、loader.omlLinux以外のコンピュータで実行された場合、loader.omlは通知なく終了します。

  2. 利用可能な機能のリストを作成します。

    OMLスクリプトを含むライブラリは、OMLインタプリタで可視化される関数名のリストを含むセル変数を作成する必要があります。

    注: OML関数スクリプトが実行されると、関数はOMLインタプリタで常に表示されます。

    このリストはスクリプトにハードコードすることができます。

    例: library_functionlist = { 'demo1func1' ; 'demo1func2' };

    このリストは、loader.omlスクリプトの機能を使って作成することができます:

    returnlist = librarymanager('scriptlist')

    このリストは、registerpath() OML 関数の第2引数として使われます。

    関数名"immediately visible"は、Compose GUI のハイライトとオートコンプリートのプロンプトにその場で含まれます。関数名"immediately visible"は、Compose GUIとコンソールのfunccountfunclistの出力に含まれます。関数名が"immediately visible"ではないものは、関数スクリプトの実行後には常に表示されます。

  3. registerpath()を実行します。
    OMLスクリプトを含むライブラリは、以下の引数を指定してregisterpath()を実行する必要があります:
    • スクリプトのあるディレクトリへのフルパス。
    • "immediately visible"関数のリストを持つセル変数。
  4. BCIライブラリには以下の条件があります:
    Windowsの場合
    • ライブラリのrootdir>\bin\win64ディレクトリをシステムパスに追加します。
    • addlibraryを実行してDLLをロードします。
    Linuxの場合
    • librarymanager('unixlinkadd', <library_directory>, <cell_files>) コマンドを実行し、BCIライブラリの実行に必要な各ディレクトリのリンクを作成します。
    • バイナリファイルを含むライブラリ内の各ディレクトリに対して、1つのコマンドを使用することができます。複数のディレクトリにバイナリファイルがある場合は、ディレクトリごとにコマンドが必要です。
    • 各ディレクトリの<cell_files>には、ライブラリの実行に必要な各バイナリファイルの完全なファイル名を記述します。
    • 例:ライブラリのロード: { 'libfilename1.so'; 'libfilename2.so' } - Run addlibrary
  5. ライブラリに関する以下の情報を提供するセル変数を作成します:
    library_path = [fileparts(omlfilename('fullpath'))];  
    % This is the full path to the library directory
    libraryname = librarymanager('libraryname'); 
    libraryname = 'myname'; 
    % root directory of library is its name or can be user defined
    library_version = '01.00';  
    % specified by the library creator
    library_shortdescription = 'Brief description of the library';
    % specified by the library creator
    library_longdescription = 'Expanded description of the library';
    % specified by the library creator
    セル変数の定義例:
    library_inicell = {
    library_path,			% Full path to library - required
    library_name,          	% Library Name - required
    library_version,       	% Library Version Number - required 
    library_shortdescription,	% Library Description - can be an empty string
    library_longdescription  	% Library Description - can be an empty string
    };
  6. loader.omlが実行される環境に適したライブラリであれば、ライブラリのルートディレクトリにlibrary.iniファイルを作成します。

    これを行うには、ライブラリディレクトリ、名前、バージョン、短い説明、長い説明を指定して、librarymanager('saveini',cell_settings) を呼び出します。

    ' saveini'関数は、関数情報を書き込んで、ルートディレクトリにlibrary.iniファイルを作成します。このファイルが読み込まれ、'listdetail'関数のための情報が提供されます。

Compose OMLライブラリのドキュメント

Compose OMLライブラリ関数のヘルプは、標準のOML関数と同様に提供されており、 help()コマンドまたはF1コンテキストヘルプからアクセスできます。

ヘルプページは
  • .htm ファイル。
  • 1関数につき1ファイル。
  • ライブラリのhelp/フォルダーにあります。

ライブラリの作成者がヘルプドキュメントを提供する場合、以下の仕様に従っている場合、Composeヘルプ機能と統合することができます。

ライブラリのヘルプドキュメントの基本的ルール:
  • <library root directory>\helpに置きます。
  • <関数名>.htmという名前を与えます。
  • 決まったフォーマットに則して作成します ( 付録2 - HTMLヘルプページの例を参照してください)。
  • Composeは、ヘルプファイル(*.htm)中の"<?STOPOUT?>"タグを認識します。これは、Compose help()関数を使用する際に、ヘルプファイル出力を決定します。
  • ライブラリの作成者は、Composeを使用してヘルプ文書をテストし、出力が想定通りであるかどうかを確認することをお勧めします。
“Cool Library”に新しい関数coolfunc()が追加され、このライブラリがインストールまたはロードされた後:
  1. Compose GUIで、coolfuncと入力し、F1を押します。

    Composeは、<library root directory>\help\coolfunc.htmというファイルを検索し、存在すればComposeをデフォルトのウェブブラウザで開きます。

  2. Compose GUIのOML Command WindowComposeコンソールでhelp('coolfunc')と入力してください。

    Composeは、<library root directory>\help\coolfunc.htmを検索し、存在すればヘルプファイルの内容を表示します。

HTMLファイルの詳細な例については、付録2 - HTMLヘルプページの例 を参照してください。