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++ライブラリ "…

XAPO用の自作クラスは別にCLSIDは不要と言えば不要にできる

XAPOクラスにはCLSID(COMクラスID)が必要です。なのでVisualStudioの機能が使える人はそれで生成してVS用の特殊なプロパティを書いてCLSIDとの対応付けをして…と面倒この上作業を必要とします。がしかし、これは実は必要ないかもしれません。 というのもCLSI…

FLACビルド方法メモ

こっちは今までやったことないので今のうちに記録しておく。 FLACのビルドにはNASMが必要です。これは The Netwide Assembler: NASM で取ってきてもらいます。VisualStudioではどうもnasm.exeでなくnasmw.exeを使うとするので*1コピーしてnasmw.exeを作って…

Ogg, Vorbisのビルド方法メモ

毎回ビルドするときに調べるのがしんどいので、メモ書きをしておきます。Xiph.org: Downloads からlibogg-とlibvorbis-と書かれたファイルを保存して解凍します。 この名前はから - をすべて切り取り、liboggとlibvorbisというフォルダ名にします。 後はVisu…

tag_functionのバグ

luabind/tag_function.hppが内部でイテレーションでNとNPLUS1をdefineしています(75行目、76行目)が、undefされてません。85行目あたりに以下のコードを埋めておく。 // luabind/tag_function.hpp ... #undef NPLUS1 #undef N

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…

wxWidgetsインストールメモ(Windows, MSVC)

wxWidgetsというクロスプラットフォームなウィジェット・ツールキットを前に聞いてインストールすらしてなかったのでインストールのメモ。といってもまだ調べて切れてないのですが…。 公式はwxWidgetsここで、Downloadsから肝心なソースは引っ張ってこれます…

プロセス間共有用のnamed mutex

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

STLもmanaged上ならば使用可能

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

ライブラリの名前を変更してauto_link.hppを使う

Boost.Buildで名前を変更する方法がよくわからなかったのでいろいろ調べてたらなんとなく理解できたのでメモ。プロジェクトの設定でtagプロパティに名前を設定するruleを与えて、そのrule上で名前を返却すれば良いようです。commonモジュールを使って生成し…

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で何ができるかというとずばり、"ポイ…

SQLite3 インストールメモ(Windows&VisualStudio)

コマンドライン実行はいらないのでCとC++に組み込んで使えればとりあえずよしとしてインストールする。1.SQLite公式ページのダウンロード SQLite Download Page に行き、Source Codeからsqlite-amalgamation-.zipというファイルとBibaries for Windowsのとこ…

しばらく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という機能があります。簡単に言うとファイルに対し…