FlipCal API詳解

ここでは、拡張モジュールの実装方法の詳細と、実装時の注意点を解説します。

FlipCalによる拡張モジュールの扱い
FlipCal APIを実装する
拡張モジュール作成時の注意点

各種定義ファイルのサンプルはこちらです。

C/C++用のヘッダファイル
Delphi用のユニットファイル


Back...


FlipCalによる拡張モジュールの扱い

FlipCalインタプリタは起動時に拡張モジュールをロードします。FlipCalが拡張モジュールのロードを試みるのは起動時だけです。FlipCalインタプリタはFlipCal.exeの存在するフォルダ内にある、拡張子が VMX の全てのファイルを、拡張モジュールであるとみなしてロードを試みます。

ロードの手順は以下のようになります。

  1. 拡張モジュールをWIN32 API、LoadLibraryでロードします。
  2. 拡張モジュール内の全てのFlipCal APIのアドレスをWIN32 API、GetProcAddressを使用して関数名で取得します。
  3. 実装が必須のFlipCal APIと、依存関係のあるFlipCal APIの実装状況をチェックします。
  4. 拡張モジュールのFlipCal API、Initを呼び出し、初期化を促します。
  5. 拡張モジュールのFlipCal API、GetModuleInfoを呼び出し、モジュール情報をチェックします。
  6. 拡張モジュールのFlipCal API、SetStdoutを呼び出し、標準出力を設定します。

いずれかの時点でエラーが発生した拡張モジュールは、直ちにアンロードされます。


Back to Index...


FlipCal APIを実装する

拡張モジュールが実装しFlipCalから呼び出されるAPIには、拡張モジュールで必ず実装しなければならないものがあります。 GetModuleInfo関数は全ての拡張モジュールで必須です。 これ以外のAPIの実装は必須ではありませんが、提供する機能によって、次のような組み合わせでの実装が必要となります。

拡張モジュールが定数を提供する場合には、次の2つのAPIを実装する必要があります。

GetConstantsNum関数
GetConstants関数

拡張モジュールが関数を提供する場合には、次の3つのAPIを実装する必要があります。

GetFunctionsNum関数
GetFunctions関数
FunctionDispatcher関数

FunctionDispatcher関数はFilpCalインタプリタが、拡張モジュールが提供している関数を呼び出すときに使用します。

拡張モジュールが初期化を必要とする場合はInit関数を実装してください。

Stdout関数は拡張モジュールが使用する標準出力のためのAPIです。 拡張モジュールはこのAPIを使用することでFlipCalのメインウィンドウに文字列を表示させることができます。 拡張モジュールでStdout関数を使用したい場合には、拡張モジュールはSetStdout関数を実装する必要があります。 FlipCalはSetStdout関数を呼び出すことで、FlipCal内のStdout関数のアドレスを拡張モジュールへ知らせます。

FunctionDispatcher関数内で発生したエラーの詳細をユーザーへ通知するためには、標準出力を使用します。 エラーの詳細の通知は必須ではありませんが、拡張モジュールはSetStdout関数を実装して標準出力を使用できるようにし、可能な限りエラーの詳細を通知するべきです。

FlipCalインタプリタ・レベル1では、拡張モジュールがインタプリタによって選択されている言語(ここでいう言語は英語、日本語などを指します)を知る仕組みは提供されていません。 したがって、拡張モジュールが標準出力に出力する文字列では、漢字などのような特定の言語に依存した文字の使用は避けるべきです。 特定言語に依存する場合には、そのドキュメントなどで使用する言語環境を限定してください。


Back to Index...


拡張モジュール作成時の注意点

拡張モジュールを作成するときには以下の点に注意点してください。

  1. 拡張モジュールは拡張子を VMX に変更したDLLファイルです。DLLとしてコンパイルし、出力ファイルの拡張子が VMX になるようにしてください。
  2. FlipCalインタプリタはAPI関数を名前で検索します。エクスポートする名前に注意してください。
  3. 構造体のバイト境界は1バイトにしてください。

Back to Index...


C/C++用のヘッダファイル

次のファイルは、拡張モジュールをC/C++で作成する場合に使用できるCヘッダファイルのサンプルで、FlipCal APIで使用する定数と構造体の定義が含まれています。 コンパイラとしてBorland C++ Compiler 5.5を使用する場合はこのまま使用できると思います。

calfnc.h


Back to Index...


Delphi用のユニットファイル

次のファイルは、拡張モジュールをBorland Delphi 5で作成する場合に使用できるユニットファイルで、FlipCal APIで使用する定数と構造体などの定義が含まれています。

calfnc.pas

FlipCal自身はDelphi 5を使用して作成されており、また、実際にこのユニットファイルを使用しています。


Back to Index...


FlipCal SDK 1.0
Copyright (C) 2001, AIDE, All Rights Reserved.
Offical support site "AIDE's"
Powered by "NO!".