void initialize(const Setting& setting);
Xtalの実行環境を作成初期化し、Currentに設定します。内部的には、VMやテーブル、GCなどのモジュール生成や領域確保を行っているので、ほぼ全てのXtal関数に先立って実行されている必要があります。
マルチスレッド下での動作の詳細は別ページに説明を譲ることとします。xtal_setting.hのXTAL_NO_THREADのdefineの有無によって挙動を変更することが可能です。
作成した環境はuninitializeによって明示的に破棄されます。
引数のSettingクラスのインスタンスはuninitializeを呼び出すまで存在している必要があります。
#include <xtal.h> #include <xtal_lib/xtal_cstdiostream.h> #include <xtal_lib/xtal_chcode.h> #include <xtal_lib/xtal_errormessage.h> #ifdef WIN32 #include <xtal_lib/xtal_winthread.h> #include <xtal_lib/xtal_winfilesystem.h> #else // WIN32 #include <xtal_lib/xtal_pthread.h> #include <xtal_lib/xtal_posixfilesystem.h> #endif // WIN32 int main(){ xtal::CStdioStdStreamLib std_stream_lib; #ifdef WIN32 xtal::WinThreadLib thread_lib; xtal::WinFilesystemLib filesystem_lib; #else // WIN32 xtal::PThreadLib thread_lib; xtal::PosixFilesystemLib filesystem_lib; #endif // WIN32 xtal::UTF8ChCodeLib ch_code_lib; xtal::Setting setting; setting.std_stream_lib = &std_stream_lib; setting.thread_lib = &thread_lib; setting.filesystem_lib = &filesystem_lib; setting.ch_code_lib = &ch_code_lib; xtal::initialize(setting); // Xtalのオブジェクトへのアクセスが可能な状態になる xtal::stdout_stream()->println("Hello xtal"); xtal::uninitialize(); return 0; }
Hello xtal