静的環境のホスト言語インターフェース

pastelstitch::StaticEnvironment クラスは、パステルステッチの静的環境である。パステルステッチのインタープリターを動作させるには、まず、StaticEnvironment クラスのインスタンスをデフォルトコンストラクターで生成する。続いて、そのインスタンスに対して以下のメンバー関数を実行する。

void load (tinyxml2::XMLDocument & document)

pastelstitch::StaticEnvironment クラスの load メンバー関数は、パステルステッチのオブジェクトコードを読み取る。document 引数は TinyXML-2 の XMLDocument クラスである。実装によっては他の XML パーサーを用いる。pastelstitch::StaticEnvironment の 1 個のインスタンスに対して load メンバー関数を複数回実行することができる。そのときは、複数のオブジェクトコードを順に結合したかのようなプログラムが得られる。

void initialize ()

pastelstitch::StaticEnvironment クラスの initialize メンバー関数は、パステルステッチのインタープリターがイニシャライズ実行を行う。実行位置がプログラムの終端に達したとき、または、引数解決の終端要因が終端コンティニュエーションであるとき、このメンバー関数は終了する。

注意 pastelstitch::StaticEnvironment クラスの load メンバー関数を実行してから、run メンバー関数を実行するまでの間に、この initialize メンバー関数を実行する必要がある。

void run (pastelstitch::Arguments continuation_arguments, pastelstitch::Arguments & terminal_arguments, bool resumable = false)

pastelstitch::StaticEnvironment クラスの run メンバー関数は、パステルステッチのインタープリターが本体実行を行う。実行位置がプログラムの終端に達したとき、または、引数解決の終端要因が終端コンティニュエーションであるとき、このメンバー関数は終了する。continuation_arguments 引数は引数の名前と値のマップである。これらの引数はゲスト言語からコンティニュエーション変数で参照できる。terminal_arguments 引数はゲスト言語の引数解決の終端要因が終端コンティニュエーションであるときの引数の名前と値のマップである。resumable 引数は、ゲスト言語の中断可能実行キューが有効であるかを指定する。

void finalize ()

pastelstitch::StaticEnvironment クラスの finalize メンバー関数は、静的環境のファイナライズを行う。

void add_primitive_operation (pastelstitch::CompoundVector address, std::shared_ptr <pastelstitch::PrimitiveOperation> primitive_operation)

pastelstitch::StaticEnvironment クラスの add_primitive_operation メンバー関数は、プリミティブ演算を登録する。address 引数のベクトルでアドレスを指定する。primitive_operation 引数は、pastelstitch::PrimitiveOperation クラスの派生クラスのインスタンスへの共有ポインターである。

void set_security_permissions (std::set <pastelstitch::SecurityPermission> security_permissions)

pastelstitch::StaticEnvironment クラスの set_sequrity_permissions メンバー関数は、セキュリティ・パーミッションを設定する。

pastelstitch::ValuePtr hold_capsule (std::shared_ptr <pastelstitch::Capsule> capsule)

pastelstitch::StaticEnvironment クラスの hold_capsule メンバー関数は、カプセルの実体へのスマートポインター capsule を受け取り、明示寿命なカプセル型の値を返す。

bool resumable_continuation_exists () const

pastelstitch::StaticEnvironment クラスの resumable_continuation_exists メンバー関数は、中断可能実行キューが空でなければ true を返す。中断可能実行キューが空であれば false を返す。

void execute_resumable_continuation ()

pastelstitch::StaticEnvironment クラスの execute_resumable_continuation メンバー関数は、中断可能実行キューが空でなければ、中断可能実行キューに登録されているコンティニュエーションを実行する。

pastelstitch::Identifier get_identifier () const

pastelstitch::StaticEnvironment クラスの get_identifier メンバー関数は、静的環境識別子を返す。

pastelstitch::Identifier get_default_identifier () const

pastelstitch::StaticEnvironment クラスの get_default_identifier メンバー関数は、デフォルト識別子を返す。

pastelstitch::Identifier create_identifier ()

pastelstitch::StaticEnvironment クラスの create_identifier メンバー関数は、新たな識別子を生成して、その識別子を返す。生成された識別子は特に他の識別子には保持されない。

std::set <pastelstitch::Identifier> get_independent_identifiers () const

pastelstitch::StaticEnvironment クラスの get_independent_identifiers メンバー関数は、自立した識別子の集合を返す。

void sweep_isolated_identifiers ()

pastelstitch::StaticEnvironment クラスの sweep_isolated_identifiers メンバー関数は、識別子の削除プロセスを開始する。ただし、実際に識別子の削除プロセスを開始するタイミングは実装により異なる。