こんにちは、高木です。
今回で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型のラッパークラスについて考えていきたいと思います。