こんにちは、高木です。

今回でTcl_Obj型についてはいったん終わりにしようと思います。Tcl_Obj型が導入されたのはバイナリーデータを扱うためと書いたのに、一番最後になってしまいました。

実際には、ほかにもリストやディクショナリーといった型が使えるのですが、ちょっとややこしくなるので、必要になるまで後回しにしようと思います。

あと、これまで忘れていたのですが、Tcl_Obj*からobjクラスを構築するためのコンストラクターが必要ですね。これも今回あわせて作ることにします。

それではコードを見ていきましょう。

今回追加するコンストラクターは3つです。最初は先ほどお話ししたTcl_Obj*からの変換コンストラクターです。次の2つがバイナリーデータを扱うためのコンストラクターです。2番目はstd::byte型の配列から、3番目はstd::byte型のspanからobjクラスのオブジェクトを構築します。

あとは、objクラスのオブジェクトからバイナリーデータを取り出すget_byte_arrayメンバー関数です。

前述したように、Tcl_Obj型はほかにもリストやディクショナリーを扱うこともできます。これについては、必要になった時点であらためてお話しすることにします。

次回はTcl_Interp型のラッパークラスについて考えていきたいと思います。