2010-08-01から1ヶ月間の記事一覧

MMIO を爆発させる

C++

WAVEファイルの解析にMMIO使ってましたけど、あれに依存するのもなんだか嫌になってきたので手動でガリガリ解析することにしました。昔は面倒だったんですが、今見ると全然普通でしたね。wav ファイルフォーマットWAVEFORMATEXの全データをfmtチャンクから取…

unique_ptr のデリータ指定

C++

25日の記事のコメントで default_delete の特殊化で解決する方法を教えていただきました。ありがとうございます。個人的メモとして今の所知ってる unique_ptr のデリータ指定方法を纏めておきます。 1.関数オブジェクトを渡す一番メジャーな方法。関数オブ…

問題は片付けてもキリがないもの

「人生は勉強である」に似たような何かを感じますが、それは置いといて。 作ってたライブラリを利用者に障って欲しくないものを名前空間を2重にして隠しました。krustf::detail::*の中に。 これで分かってる人ぐらいしか使わないでしょう。多分。 フェードの…

最近の悩み

C++

前回の記事のクラスのお陰で製作中のライブラリの問題を半分ぐらい駆逐できました。という訳でいい加減にサウンドライブラリの作成を始めてます。std::unique_ptrのお陰で相当楽できてますが、デリータを指定すると変数型が以上に長い。ボイス用のやつを用意…

多分、こんなんでいいはず。

C++

先日書いた記事 - Singletonクラスのアクセスを簡単にマルチスレッド対応させたい - krustf の雑記 で書きましたけど、最終的に今書いてるライブラリに追加したものです。 MSVC10, boost1.44.0で動作確認しました。 #include <utility> #include <boost/thread/mutex.hpp> // マルチスレッド /</boost/thread/mutex.hpp></utility>…

Singletonクラスのアクセスを簡単にマルチスレッド対応させたい

C++

Singletonクラスを作るたびにそのクラスのメンバ変数としてMutexとかを宣言したくないんです。冗長だし。Lock, UnLockの方法もきっと面倒なんですよね。アクセスするたびにロックを手動で書くような。そういったものを書かせないで、これまでみたいにget_ins…

やっぱり中途半端に理解した知識を話してはいけない

C++

と、僕なんかよりC++0xの規格に詳しい友人と話して思いました。ようは、 rvalue で const Hoge&& ってなんであるのよ。って話なのですが。const Hoge&& は const Hoge& に暗黙的に変換されるらしい(?)。N1377にも書いてあった気がする。恐らく、解釈的に…

DXライブラリには普通に使えるのにドキュメントに載ってない関数が多い気がする

C++

恐らく、初心者向けを謳っているので小難しいものは隠したかったのかも知れないのですが。まるぺけつくろーどっとコムには「高速フォント描画」っていう記事があって、そいつはD3DXFontだと拡張性に乏しかったり、描画命令を送るたびにフォント作ってたりあ…

覚え間違いをナチュラルに発言してしまうと怖い

C++

ムーブコンストラクタを何故かリムーブ*1といってしまうのが私です。それはともかく、unique_ptrでムーブコンストラクタが上手く働かないなんでとか言ってたら単純にムーブしたunique_ptrを持つオブジェクトもムーブしなきゃいけないからでした。 class hoge…

個人的メモ:GCCとMSVCのC++0x対応について

C++

【MSVC】 C++0x Core Language Features In VC10: The Table - Visual C++ Team Blog - Site Home - MSDN Blogs【GCC】 C++0x/C++11 Support in GCC - GNU Project - Free Software Foundation (FSF)【各種C++の対応表】 C++0xCompilerSupport - Stdcxx Wiki

boost.threadが例外を出している?

昨日の記事でboostを無事MSVC10で使えるようにしたのですが、どうもおかしい。shared-runtime版のライブラリを使った場合だったら問題ないのですが、static-runtime版ライブラリを使ってboost.threadを組み込んだときに変な事態になりました。boost.threadラ…

boostを真面目にVisualC++2010でコンパイルしてみた

手動コンパイルが簡単にできたので面白かったのですが、やっぱり真面目にやらないといけないようでした。まずstatic runtimeでコード生成ができない。boost.threadを使って、コード生成をMTdにしてビルドしたその時言われたのが、 'libboost_thread-vc100-mt…