2009-04-01から1ヶ月間の記事一覧

関数プログラミング楽しい

最近アキラさん(id:faith_and_brave)からいろいろ本を借りて読んでるのですが、その中でも関数プログラミング作者: R.バード,P.ワドラー,武市正人出版社/メーカー: 近代科学社発売日: 1991/04/01メディア: 単行本購入: 7人 クリック: 82回この商品を含むブ…

無名 enum をテンプレートに渡す

とエラー吐く。 enum { hoge }; template<class T> void foo(T) { } foo(hoge); // エラー: テンプレート引数は無名の型を参照できません ARM コンパイラの標準の準拠度が高くて目から鱗が落ちまくり。</class>

Visual Studio から実機用のバイナリを作る方法

実機用のバイナリを作る方法についてはstd::vector と例外と+αを使ってる状態で実機用のバイナリを作る方法を参考にして貰うとして、ここでは Visual Studio でどうやって実機用バイナリを作るかというのを説明します。 といっても単純にカスタムビルドを使…

std::vector と例外と+αを使ってる状態で実機用のバイナリを作る方法

とりあえず実機でも一通り動くような感じになってきたので、RVCT3.0 で実機用のバイナリを作る方法をまとめてみようと思います。 事前知識 ずっと勘違いしていたのですが、BREW ではもはやグローバル変数は使えます。 elf2mod というツールが Qualcomm から…

IEnumerable> を全て繋げて IEnumerable に変換する

C#

単純に考えると、 IEnumerable<IEnumerable<int>> values = ...; IEnumerable<int> result = new List<int>(); foreach (IEnumerable<int> v in values) { result = result.Concat(v); } こんな感じなんだろうけど、これって Accumulate じゃん!とか思ったので、こんなのは拡張メソッドにあ</int></int></int></ienumerable<int>…

RVCT3.0 のエラー形式

RVCT3.0 の ARM コンパイラは、ちゃんとコンパイラオプションを指定することで日本語エラーを出力してくれます。英語を直訳したような日本語な感じもするけど、それでも自分にはとっても便利。 以下のフラグを設定すると日本語になります。 --message_locale…

std::vector と例外を使ってる状態でコンパイルを通す方法

まだ実機で動かせないので、とりあえずコンパイルを通すだけ。 まず当然のごとく new と delete は再定義するべき。 void* operator new(std::size_t size) throw(std::bad_alloc) { return MALLOC(size); } void* operator new[](std::size_t size) throw(s…

衝撃の事実

ARM Information Center Table C.2 shows the major features of the language supported by this release of RealView Compilation Tools for BREW C++. Major feature ISO/IEC standard section Support Core language 1 to 13 Yes Templates 14 Templates…

--fpu none が倒せない

を include すると芋づる式に が include されて、そいつが fpu none だとコンパイルエラーになるという罠。 まあ最終的に浮動小数点使ってなければリンク時に解決するんだろうけど……なんかやだなぁ。

RVCT for BREW 3.0 キター!

そしてコンパイルエラー山盛りキター! 出たエラー・ワウォーニングとか。 Warning: 初期化リストが定義の順番じゃない 順番どおりに並べた std::bad_alloc が見つからない を include std::out_of_range が見つからない を include 以下のコードは式が左辺…

RVDS3.0 のドキュメント読み中

で、面白い記述発見。 暗黙のインクルード 暗黙のインクルードがイネーブルになっているとき、.h ファイルで宣言されたテンプレートエンティティのインスタンス生成のために定義が必要な場合は、コンパイラは対応する .cc ファイルを暗黙にインクルードして…

bind にメンバ関数を渡したときに this 以外のオブジェクトでメンバ関数を呼び出してもらう方法

C++

例えば shared_ptr を this の代わりに使うことができる。 struct Hoge { void foo() { } }; boost::shared_ptr<Hoge> h(new Hoge()); boost::bind(&Hoge::foo, h)(); boost::bind(&Hoge::foo, _1)(h); でもこれを自前のクラスにしてしまうと、途端に動作しなくな</hoge>…

BREW で bind と function が使いたい

とは思うものの、容量がかなり増えそうなので怖いところ。 bind はまあ、それぞれ用のストレージクラスを作るのと大して変わらない気はするんだけど、function は結構ごちゃごちゃした処理が多いから怖い。 ただ、function は Type Erasure のせいで大きくな…

デフォルトコンストラクタ以外で配列を構築する

C++

まあいくつか方法はあると思うのです。 デフォルトコンストラクタでとりあえず構築しておいて後でもう一度 init() とか呼んで初期化する2段階初期化とか、バッファだけ用意しておいて後で placement new をしてやる遅延初期化とか、もうあきらめて普通に new…

フォントクラス

昔に作ったライブラリのフォントクラスとあまり違わなかったり。id:melpon:20090324(文字列をテクスチャ化する)で使ってます。 BREW2.x は非対応でつ(多分スモールフォントあたりちょっと弄れば動くけど)。