2012-02-15 9 views
0

私は、TCLインタプリタを作成していくつかの式を評価するために、cpptcl.hppライブラリを使用します。私は1つの問題を抱えていました:1つのインタプリタ(Tcl :: interpreter interp1;)では、ある種の変数と手続きが定義されているMyNamespaceという名前空間が1つのインタプリタにあり、別のTCL表現を評価するインタプリタ(Tcl :: interpreter interp2;)を使用して、MyNamespace名前空間の定義済みの変数とプロシージャを使用します。私はそれをどのようにすることができますか?あるインタプリタからtcl名前空間の内容を取得し、別のインタプリタに渡します

+0

これは、aolserverがtclインタプリタを初期化するために何をするかとよく似ています。それは面倒ですが、それはかなりうまくいきます。 –

+0

interp1からinterp2へ状態をコピーしてコマンドを実行するか、interp2からコマンドを呼び出してinterp2で評価しますか?それに加えて、彼らは完全に通訳者を分離しているのですか、あるいはtclで[interp create]を使って作成したものでしょうか?私は最初のことを推測していますが、質問する価値があります。 – RHSeeger

答えて

2

できません。少なくとも、簡単にはありません。

もちろん、あなたのinterpが純粋なTclコードのみを含み、パッケージがロードされていない場合は、基本的にすべてを(文字列に)シリアル化し、別のinterpで評価することができます。 wikiにはこれに関する例があります( "状態を保存する"などを検索してください)。

しかし私には、 "参照" interpを作成してそれを一種のテンプレートとして使用しようとしているようです。もしそうなら、私は代わりにinterpを設定し、適切に準備されたinterpを得るたびに呼び出すコードを書くだけです。

+0

Cで拡張機能によって実装されているトレースやコマンドは、複製が非常に難しい場合があります。タイマーやチャンネルのイベントに付随するコールバックは、忘れやすいものです。要するに、名前空間をコピーすることはあまり難しくありませんが、それは他のinterpで_work_を意味するわけではありません... –

関連する問題