C++

LuaJITがDirectXとともに使うと問答無用で落ちる

前々から凄い意味が分からなかったんですが、コンソールでエラー内容を見れるようにしてようやく分かりました。DirectX側でFPUの演算速度が落とされていたからだそうです。空想具現化プログラミング [Lua] Luaの数値型の精度の問題ここによると、FPUの演算速…

DxLibからDirect3D9のデバイスを取得する

ものすごく面倒でしたがメモ。 LPDIRECT3DDEVICE9を取得したい 上のを読むと、ライブラリだけでは無理で、ソースファイルに添付されるヘッダがないと取得できないらしい。 というわけで、ダウンロードサイトからライブラリとソースコードを取ってくる。 DX…

MinGWのgccでboost.threadを使う私的メモ

MinGW使って色々やろうと思ったらboost.threadをスタティックリンクできなくて涙目になったのでメモ。 boost.threadのdetailの中に入ってるconfig.hppを弄る方法もあるようなのだが、普通にBOOST_THREAD_USE_LIBを定義しておけばビルドできるそうなのでg++の…

Luaから疑似クラスを受け取ってC++で実行する

前回の記事の疑似クラス版。 luabind::objectはもちろんテーブルを受け取れるので疑似クラスも扱えます。テーブル内の関数や変数を見つけるのはoperator[]で可能です。 #include <lua.hpp> #include <lualib.h> #include <luabind/luabind.hpp> int main() { ::lua_State* L = ::lua_open(); ::luaL_o</luabind/luabind.hpp></lualib.h></lua.hpp>…

Luaから無名関数を貰ってC++側で実行する

もしかしたらできるんじゃないの?と思ったらやはりできたのでメモしておきます。 Luaさんに処理の一部分を書いて貰いたい場合、名前が必要な通常の関数はめんどいです。その名前が無きゃ呼び出すのめんどそうです。後名前が干渉してどうこうとかありそうで…

Boost.ipcの有効利用(?)

というレベルではないですが Boost.Property_treeで暗号化したiniファイルを読んでみる - 名古屋313の日記 で暗号化を行うのに一度バッファを作って取るのが面倒だなあ、と思ったのでこれはBoost.ipcのメモリマップドファイルの出番ではないかと思いちょ…

Boost.勉強会# 4に行ってきました

先週の土曜日の話だからまだ大丈夫ですよね。という訳で行ってきました。結構早めについたのでガラガラかなーと思ったらid:nyaocatさんがすでに居ました。早い。 まあ確かにがらがらでしたよね。10時なってましたけどまず発表者の大半が居ない…だと?でもTwi…

Cinderやばい(複数の意味で)

boost.ネタ帳を見ていたらCinderというのがあって気になってググったら結構面白そうなアーティスティック制作系のライブラリのようです。インタラクティブ性も含んでいたりします。入門は以下。なんですがこれMacの話です。 クリエイティブなC++ライブラリ "…

Luabind備忘録

現在Luabindを用いて部のゲームプログラムにLuaを持ち込んでいますが、クラスをバインドすることも多いです。で、クラスのメンバ関数のバインドコードがオーバーロードされているとき非常にめんどくさくて投げたくなるのは仕方がない。 struct drawable { vo…

Managed Memory Segmentsで動的多態する場合の留意事項

boost.ipcのManaged Memory Segmentsで動的多態を演じたい場合、destroy(_ptr)を呼び出す際、作成時の型を指定する必要があります。つまり抽象クラスの型を指定して、抽象クラスのポインタを渡して、削除することはできません。 namespace ipc = boost::inte…

destroy_ptrでハマる

いや、まさかこうなるとは思ってなかったのでメモ。Managed Memory Segmentsはconstructしたオブジェクトをdestroyする必要があります。これはconstruct方法によっていろいろ選べます。例えばnamed instanceとして作成した場合、destroyを使って名前を指定し…

Managed Memory Segments 小ネタ幾つか

今日は特にネタがなかったので、Managed Memory Segmentsが提供してる機能をいくつか書いておきます。とりあえずManaged Memory Segments上のお話なので前提条件を書きます。変数名はmm_segmentsで、オブジェクトは自動で削除されます。ちなみに、ドキュメン…

Boost.interprocess 解説&備忘録

ただの記事リストです。01:boost.interprocessさん凄いです - krustf の雑記 02:しばらくboost.interprocessネタで書いていこう。 - krustf の雑記 03: 04:vectorstreamの話 - krustf の雑記 05:bufferstreamの話 - krustf の雑記 06:STLもmanaged上な…

いやいやManaged Heap Memoryの方が

Managed Heap MemoryがBoost.interprocess Document P.90に書いてあります。これはstatic buffer領域を必要とせず、予めヒープ上のメモリを確保して利用する形だそうです。使い方はManaged Heap Memoryと同じで構築方法が異なります。 例えば、自前でヒープ…

Managed External Bufferは便利かも?

久しぶりに更新。Boost.interprocessの話です。またもやドキュメントパラパラ見てたら結構使えそうなやつが出てきたのでメモ。 Managed External Buffer "様々な状況でSimpleなオブジェクト、STLと同じようなコンテナや文字列、 あとは何かしらのバッファが…

XAPOFXで出来合いのエフェクトを使う

たまにはXAudio2とその関係のお話でもします。 XAPO? XAPOFX? というか今までXAPOが何か、という話を真面目にしてなかったような気がするのでそこから話します。XAPOとはXAudio2と連携して利用するオーディオ処理オブジェクトを作成する手段を提供するAPI…

multi_indexなども使えて便利

ついつい見落としてましたが、interprocessはmulti_indexなどのinterprocess外ですがBoostのライブラリとして提供している一部のコンテナもmanaged memory segmentsを使って作成できるようです。ドキュメントに書いてあるのはmulti_indexとunordered_mapの2…

プロセス間共有用のnamed mutex

interprocessには"named mutex"という名前付きMutex Objectを作成して複数のプロセス間で排他制御を行える機構があります。recursiveなMutexなどありますが、多分interprocessとして特徴的な機能だと思いますので紹介。作り方と最終的な削除方法が面倒ですが…

STLもmanaged上ならば使用可能

[注意] この記事は間違っている可能性が高いですできるのかなーと思っていたんですが、managed上であればsegment_managerを使用したアロケータを作成すればSTLコンテナをそのまま利用できるようです。(じゃあなんで同じようなコンテナがboost.interprocess内…

bufferstreamの話

前回のvectorstreamと同じで、interprocessのstreamsのもう1つ、bufferstreamの話。 bufferstream? "buffer"については皆さんが普段思ってる通りで良いと思います。何かしらのデータを溜めておくための領域。bufferstreamは固定サイズバッファにデータを読…

vectorstreamの話

今日はinterprocessのstreamsの話。vector/bufferstreamと2つあるのですが、今回はvectorstreamだけ。 vectorの定義 interprocessの当該章では"vectorとは要素が連続しているコンテナである"ようです(意訳かも)。std::vectorは言わずもがなですが、std::basi…

offset_ptrの話

最近のネタ4作目ぐらい。Boost.interprocessの様々なクラス内ではoffset_ptrなるスマートポインタが使用されています。よく見るのはoffset_ptrでtypedefしてvoid_pointerなんてされてるところが多いようです。offset_ptrで何ができるかというとずばり、"ポイ…

しばらくboost.interprocessネタで書いていこう。

前回boost.interprocessでオブジェクトをファイル上に作って遊びましたが、どうも配列も作成できるらしいです。こんな感じで。 static const size_t N = 5; // N 個の配列として作成 Type* arr = mfile.construct<Type>("Name")[N](Allocator); // proxyを束縛して</type>…

boost.interprocessさん凄いです

この記事は C++ Advent Calendar 2010 の参加記事です。詳細は以下。 C++ Advent Calendar jp 2010 : ATND 今日はクリスマスですし、みなさんお忙しいと思いますし、それに僕はあんまり変態的な事を書けませんので…。*1 そんな中であまりTwitter上であまり話…

managed_mapped_fileの方が楽でした

前回記事の続きで、boost.interprocessのmanagedの方が楽でしたよ、という話。 Class template basic_managed_mapped_file - 1.45.0 作成されてなかったら指定サイズで作成してしまう、とかmapped_regionを作らずともそれがそれ自体がマッピングオブジェクト…

memory mapped filesについて

最近なんか抽象的な事しか書いてない気がしてきたのでboostの奴でちょろっと。 boost.interprocessってあんまりTwitter上でネタにならないような気がしますね*1 boost.interprocessにはmemory mapped filesという機能があります。簡単に言うとファイルに対し…

shared_ptrを使って通信した方が楽

ストリーミング再生でスレッドを回す必要があったりなど、まあスレッドを使わねばならない場合というのは比較的多いと思います。 僕はWinAPIなどの面倒なスレッドライブラリを使う気力がまったく持って起きませんのでboost.Threadを使うわけですが、Mutexを…

ネタがない

C++

最近は早く寝て早く起きる(大体朝4時ぐらいに起きる)のが良い感じです。 睡眠時間も多いし、健康的です。後はランニングとか運動しましょうね。 多宗教だけどゲッタをconstメソッドにするぐらいは守ってほしい この間多宗教だからうんぬんかんぬん言ってた…

明日は東京都議会ですね。

C++

前回の記事内積と外積だって一応operatorで計算したいですよ - krustf の雑記がアレな反響を頂いたような気がしますが、私は別に面白がってやってるだけなので自己責任で使ってくださいね? グラムシュミットの直交化法をC++で書いてみた。 今日講義を受けて…

内積と外積だって一応operatorで計算したいですよ

C++

と思ってみると既に ベクトルの内積と外積 - 名古屋313の日記 にあるのですが。 operator*だけでやってるとどっちだかぱっと見て分かりづらいという話で。 今回は内積と外積だけに絞ってみると、外積はoperator*で良いです。内積をoperator,でできるよう…