====== initialize ======
void initialize(const Setting& setting);
Xtalの実行環境を作成初期化し、Currentに設定します。内部的には、VMやテーブル、GCなどのモジュール生成や領域確保を行っているので、ほぼ全てのXtal関数に先立って実行されている必要があります。
マルチスレッド下での動作の詳細は別ページに説明を譲ることとします。xtal_setting.hのXTAL_NO_THREADのdefineの有無によって挙動を変更することが可能です。
作成した環境は[[uninitialize]]によって明示的に破棄されます。
引数のSettingクラスのインスタンスは[[uninitialize]]を呼び出すまで存在している必要があります。
===== Example =====
==== C++ ====
#include
#include
#include
#include
#ifdef WIN32
#include
#include
#else // WIN32
#include
#include
#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;
}
==== Output ====
Hello xtal