設定ファイル代わりにxtalを使ってみようの回

luaは最初設定ファイル記述用の言語として書かれたそうです。xtalも若干そんな契機で生まれています。

config.xtal

// 連想配列をexportする
export [ 
  "width": 100,
  "height": 200,
  "values": [10, 20, 30, 40, 50],
  "assc_values": ["test":50, 20:60, "foo":15],
];

こんな設定ファイルを書いたとします。

これを読み取るC++のサンプルプログラムは次のようになります。

#include <xtal.h>
#include <xmacro.h>
int main(){
  using namespace xtal:
  try{
    Any ret = load("config.xtal");
    
    int width = ret["width"].to_i();
    int height = ret["height"].to_i();
    
    Any values = ret["values"];
    for(int i=0, size = values.size(); i<size; ++i){
      int value = values[i].to_i();
      std::cout << "value=" << value << std::endl;
    }

    // 上のfor文の部分は、Xforというマクロを使えば、
    // 他の言語でいうforeach文かのように、もっと簡単に取り出すことが出来る。
    // Xforは xmacro.h に定義されているので、xtal.hをincludeしただけでは使うことは出来ない。
    Xfor(value, ret["values"]){
      std::cout << "value=" << value << std::endl;
    }

    // 連想配列も変数2つのXfor2で簡単に巡回できます。
    Xfor2(key, value, ret["assc_values"]){
      std::cout << "key=" << key << ", value=" << value << std::endl;
    }
  }catch(Any e){
    std::cout << e << std::endl;
  }

  return 0;
}

これ以上ないんじゃないかというぐらい簡単にアクセスできるようにしてあります。