2006-11-01から1ヶ月間の記事一覧

ArrayとIterator

配列の要素巡回には次のような方法があります。 普通にfor文で for(i : 0; i

warning C4355

struct Foo{ void* p; Foo():p(this){} }; ---- warning C4355: 'this' : ベース メンバ初期化リストで使用されました。VCではこのような警告を出してくれます。しかし、どうしても初期化リストでthisポインタを使用したいときがあります。最初は #pragma wa…

Xtalのループ文

Xtalはループ文にラベルをつけることができます。 outer : while(true){ while(true){ break outer; // 外側のループから脱出する } }Iteratorの繰り返しでもラベルによる脱出が可能です outer : 50.times{ while(true){ break outer; // 外側のループから脱…

今日の修正

この修正は0.9.2.2に入ります。0.9.2.2は近いうちに出します。 ブロックパラメータを省略可能に。省略した場合itというローカル変数が定義される。つまり次の二つは同じ意味 [0, 2, 5, 6]{ |v| println(v); } [0, 2, 5, 6]{ println(it); } for文やIterator…

0.9.2.1 ダウンロード

Xtal version 0.9.2.1 VC7とgcc version 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)でコンパイル、用意した全てのテストコードがパスするのを確認。言語仕様 クラス、モジュール、組み込み関数 C++に組み込むC++ APIs C++ APIs コンパイル済みHTM…

STLとAllocator

XtalはSTLのコンテナを使う場合に独自のカスタムアロケータを渡してメモリ確保をコントロールしているのですが、あるSTLのmapの実装で、allocate関数で渡されたnの値と、deallocate関数で渡されたnの値が異なることがあり困っています。独自のメモリプールが…

連結演算子 ~

Dに倣って連結演算子 ~ を導入することにしました。 str : "abc" ~ "efg"; ary : [0, 2] ~ [4];なんか微妙に違和感。

文字列の連結

Java Puzzlersのパズル30では、言語設計者は文字列連結演算子に + を用いるべきではなかった、とのアドバイスがあります。 現在Xtalは文字列連結に + を使用します。D言語を参考に ~ を連結演算子として導入することも考えたのですが、C++でそんな2項演算子…

java puzzlers

http://www.amazon.co.jp/exec/obidos/ASIN/4894716895 本来、JAVAはシンプルで理解しやすい言語として設計されたにも関わらず、この本で上げられているような落とし穴がないわけではない。本来のコンセプトにそぐわない、どうして、そのような状況になって…

0.9.2.0の変更内容

moduleの仕様削除 classの継承の書式を変更 Python風に Foo : class(SubClass){} と書く Iteratorのブロックパラメータの仕様変更 シリアライズ機能追加 バイトコードの保存も

ダウンロード

Xtal version 0.9.2.0 VC7とgcc version 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)でコンパイル、用意した全てのテストコードがパスするのを確認。言語仕様 クラス、モジュール、組み込み関数 C++に組み込むC++ APIs C++ APIs コンパイル済みHTM…

intern

RubyではStringとSymbolが分かれていますが、Xtalでは分かれていません。 当初は分かれていたのですが、そもそもStringは変更不能オブジェクトなので分ける必要性は無いと気付いたためです。Xtalは基本的にソースコード上に書かれた文字列リテラルは全てinte…

文字列の文字コード

これはどうすべきなのでしょうか。 今はソースの文字を何の変換もせずにそのまま保持しています。UCS2で保持するのが今の主流のようですが、気が乗りません。 理由は次の通りです。 コンソールではUCS2を表示できない環境がある。 文字列を保存するとき、読…

コンパイル済みバイトコードの拡張子はどうしよう?

.xtalc .crystal .ctal .xc .xlc

バイトコードの保存

手元のソースでは、以前出来なかったコンパイル済みバイトコードのファイル保存が可能になりました。また、基本型(Null, Int, Float, String, Array, Map)のシリアライズにも対応しました。 これはゲームに使うなら必須な機能ですよね。 Xtalはバイトオーダ…