2008-01-01から1年間の記事一覧

Registrar Script の BNF が腐っている件

Boost.Spirit で何か試しに解析してみようと思って、ちょうどパース ツリーについて (ATL)辺りに BNF で書かれた文法があったので、これを使ってみることにしてみた。 <root key>{<registry expression>}+ <root key> ::= HKEY_CLASSES_ROOT | HKEY_CURRENT_USER | HKEY_LOCAL_MACHINE | HKEY_USERS | </root></registry></root>…

Boost.Spirit を扱う上で絶対に読むべき情報

Debugging この辺のマクロを定義しておかないと、意図しない解析をした場合にエラーの原因を突き止めるのがものすごく困難になる。 実際に困難を極めた人がここにいるので間違いない。

Boost.Spirit に手を出してみた

まずは情報を調べるところから、と思ったらまとめていらっしゃる方がいるようで。http://www5d.biglobe.ne.jp/~y0ka/2006-05-14-1.html で、いろいろ調べた感じ、LL(k) 文法なのでバックトラックが起こったときのセマンティックアクションがなかなか手強いっ…

namespace of melt's library

namespace anmelt { namespace horizontal { } }

XNA を使って特定のウインドウに対して描画する

XNA

Microsoft.Xna.Framework.Game.dll はゲームを作るためのフレームワークなので、Game クラスを継承すると単一のウインドウしか作ることが出来ない。 ちょっと 3D 処理を行うツールを作りたくなったので、自前で特定のウインドウに対して描画してみようと頑張…

個人用メモ

XNA

http://www.microsoft.com/japan/msdn/xna/ XNA Game Studio 4.0 Refresh | Microsoft Docs http://xna-studio.jp/ Microsoft XNA - Wikipedia XNA Japan Team Blog ひにけにGD http://sorceryforce.com/xna/ ゲハ板のXNAまとめWiki - アットウィキ ニュース…

Active Object

デザインパターン(マルチスレッド)まとめ 非同期のメッセージを受け取り、それを能動的に処理を行い、結果を返すパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。

Thread-Specific Storage

デザインパターン(マルチスレッド)まとめ スレッド固有の領域を扱うパターン。 Boost.Thread には boost::thread_specific_ptr というクラスがあるので、これを使えば実現できる。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編…

Two-Phase Termination

デザインパターン(マルチスレッド)まとめ 強制的に外部から終了するのではなく、終了要求だけ出しておいて自分で終了してもらうようにするパターン。 終了要求を出して(1段階目)、実際に終了する(2段階目)という2つの段階を経て終了するので、この…

BREW の高速転送

昔、RGB565 から RGB565 へ高速に転送するルーチンを書きました。 ふと思い出したので貼り付けておきます。

BREW の高速パレット転送

昔、8 ビットインデックスのパレットから RGB565 へ高速に転送するルーチンを書きました。 ふと思い出したので貼り付けておきます。

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈作者: ジェラルド・ジェイサスマン,ジュリーサスマン,ハロルドエイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田英一出版社/メーカー: ピアソンエデュケーション発売日: 2000/02メディア: 単行本購入: 35人 …

BREW の高速アルファブレンド

スレに書き込めない(ずっと規制されてる)のでここで返信。 誰か↓の内容を教えてあげて下さい...。

我々プログラマは、仕様を満足させるためにプログラムを書いているわけではない

off

ということを考えるようになってきた。

BREW で MicroThread(3)

晒されてたので現れてみるテスト http://pc11.2ch.net/test/read.cgi/tech/1195449992/ 416 :403 [sage] :2008/04/11(金) 04:33:47 >>406,407,409,410,411,412,413 おまいらありがとう。 静的な変数はELF2MODでいけるってことね。 例外はRVCT3.0で>>9みた…

boost::enable_shared_from_this

boost::shared_ptr を使ってると時々問題になるのが、this の扱い。this は生のポインタなので出来る限り触りたくない、けれどもどうしても this が必要になる場合があったりする。例えばダブルディスパッチとか。 そういった this のスマートポインタが欲し…

random_range_generator

ある一意な確率で出現する範囲の乱数を得るために variate_generator を使って乱数を取り出してたんだけど、variate_generator は一度作ったら範囲を変更できない。 なので、 // [first, last) int rnd = boost::variate_generator<boost::mt19937, boost::uniform_int<int> >(mt_, boost::uniform_int<int></int></boost::mt19937,>…

Immutable を利用した Substring

C++

もし Immutable な文字列クラスを作った場合、文字列の一部を切り出すときもわざわざ新しくメモリを確保しなくても取り出すことが出来るような気がしてきた。 /* final */ class string { private: const boost::shared_ptr<wchar_t> str_; const int first_; const i</wchar_t>…

Boost.Bind のプレースホルダーの仕組み

を調べるために、超簡単な Boost.Bind を作ってみた。 namespace my_boost { // arg template<int I> class arg { }; template<int I> bool operator==(arg<I> const &, arg<I> const &) { return true; } // type template<class T> class type { }; namespace _bi { // storage1 template<class A1></class></class></i></i></int></int>…

Boost.Bind を C# で作りたい(3)

public static class Boost { public class PlaceHolder { public PlaceHolder(int v) { Value = v; } public int Value; } public static PlaceHolder _1 = new PlaceHolder(1); public static PlaceHolder _2 = new PlaceHolder(2); public static PlaceHo…

Boost.Bind を C# で作りたい(2)

とりあえず全部の引数を束縛するのであれば簡単に作れるようだ。 delegate R Function<R>(); delegate R Function<R, T1>(T1 t1); delegate R Function<R, T1, T2>(T1 t1, T2 t2); // 以下略 Function<R> Bind<R>(Function<R> f) { return delegate { return f(); }; } Function<R> Bind<R, T1>(Funct</r,></r></r></r></r></r,></r,></r>…

Boost.Bind を C# で作りたい

と思ったんだけどどうすればいいんだろう。

async_delegate

汎用的に非同期メッセージを投げて戻り値を返してくれるクラスを作りました。 async_delegate::invoke に関数を設定すると、その関数を別スレッドから呼び出します。 async_delegate::invoke の戻り値である async_result_ptr を使って、同期処理を行い、呼…

Boost.Thread に interrupt 機構は無い

Java の interrupt 機構みたいなのは Boost.Thread に無いみたいなんですね。 いろいろ調べてみた結果 interruptable_mutex.h というのが存在するということが分かったのですが、いまいち使い方が分かりません。 あとスペルは interruptable ではなくて inte…

Boost.WeakPtr を通常のポインタの代替として使う

例えば数百万行ぐらいの大きいソースがあって、そこでは生のポインタがバリバリ使われていたとする。 で、あるマネージャクラスが生成したオブジェクトのポインタをいろんなところにコピーしているので、終了時にマネージャクラスがそのポインタを先に削除す…

Future

デザインパターン(マルチスレッド)まとめ 非同期メッセージの戻り値を受け取るためのパターン これ、C# の同期メソッドの非同期呼び出しで使われてるパターンと同じなのかな。 data クラスは IAsyncResult に対応して、host クラスは Begin〜, End〜 を持…

Worker Thread

デザインパターン(マルチスレッド)まとめ スレッドを起動する時間をケチるのと、スレッド数の管理を行うパターン。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書いたコード。 これ、reques…

Thread-Per-Message

デザインパターン(マルチスレッド)まとめ 非同期メッセージの投げっぱなしバージョン。 戻り値が欲しい場合は Future パターンを使用する。 以下は増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編のサンプルを Boost.Thread を使って書い…

Immutable のメモ

デザインパターン(マルチスレッド)まとめ Immutable は以下の場合に使用できる インスタンスの生成後、状態(メンバ)が変化しないとき このとき、setter メソッドが無いというだけでは不十分で、メンバが参照している先のインスタンスも変化しない必要が…

Single Thread Execution のメモ

デザインパターン(マルチスレッド)まとめ Single Thread Execution は、以下の場合に使用される。 マルチスレッドの場合 SharedResource 役が複数のスレッドからアクセスされる場合 状態(メンバ)が変化する可能性があるとき デッドロックになる可能性が…