オープンソースのソフトウェアはソースコードを読むことができるのが大きな魅力ですが、大規模なプロジェクトでは全体を見通すのに時間がかかってしまいます。そんなとき、C++のプロジェクトにはdoxygenとgraphvizを使ってソースコードからドキュメントを自動生成することができます。doxygenは、元々はJavaのJavadocを参考にC++のソースコードを解析しているので、継承関係や包含関係などのオブジェクト指向な構造を可視化するのに向いています。本来なら専用のフォーマットに従ってコメントを入れておくとドキュメントに含めてくれるのですが、ソースコードリーディングの補助として使う場合には気にしなくて構いません。DoxygenHome | Graphviz - Graph Visualization Software インストール CentOSyumを使うsudo yum install g
まずはOpenGLでテクスチャを使用する際の基本から。 R8G8B8A8の32bitテクスチャを作る GLuint texture; Size size( w, h ); DWORD pixel[] = { ... }; //適当なピクセルデータを設定しておく glGenTextures()で指定枚数のテクスチャを作成。とりあえず1でよい。 glBindTexture()で作成したテクスチャをバインドしてから、フィルタなどのパラメータを設定 フィルタの設定は必須。 glTexture2D()でピクセルデータをコピー。 バインド解除 glPixelStorei( GL_UNPACK_ALIGNMENT, 4 ); glGenTextures( 1, &texture ); glBindTexture( GL_TEXTURE_2D, texture ); glTexParameteri( GL
C++ では、直接は関数内関数定義は使えないが、関数内クラス宣言を使うと近いものができる。 同じ部分コードを何度も記述しないために、関数内関数は結構使えると思うのだが、いちいち関数内クラス宣言のために、struct Nanka { }; とか書くのがうっとうしいところ。もっとスマートな方法がありそうな気がする。 返り値がないなら、コンストラクタでやってしまってもいいのかも。例外が内部で発生した場合の対応がなんとなく不安なので、個人的にはあまり使わないのだが。 void testFunc() { struct util { static void func(int a) { cout << a << "\n"; } }; util::func(1); util::func(10); ... } あ、関数オブジェクト使えばいいのか。 void testFunc() { struct { voi
originally written at 2003.Oct.27 subtly modified at 2003.Oct.28 前回考察Iの終わり方からして、やっぱりと思う方もいらっしゃるかと思う。 私自身もそうだ。IIを書くことにしたのは必然かもしれない。 今回はなんとなく、拙作スマートポインタの設計理念というか、BoostやLoki ライブラリに対する苦し紛れの言い訳を書き連ねるための1ページのような気がするが、 その辺はご容赦いただきたい。そんなのは読みたくないという人はこの時点で 別のページへ飛んでくだされ。さてさて、続きの話を。 (Iを読んでいない人は先にそちらをどうぞ。) さて、Boostのshared_ptrの機能はかなりよさそうに見えるが、前回書いた ような理由で、完璧とは言えないと思う。resetやgetが付いているのは auto_ptrとのコンパチを考えたせいかそうで
std::vectorにていしてポイント構造体情報を動的に格納し、ラインを描画をしたい。 普通であれば POINT points[5]={ POINT, POINT, POINT, POINT, POINT} m_pD3DDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE ); m_pD3DDevice->DrawPrimitiveUP(D3DPT_LINESTRIP,5,points,sizeof(POINT));と、定数5を指定して配列を作成し、先頭ポインタからバイト数とポイント数を指定してなめるように見ていく。 が、そこでVECTORを使うと vector<POINT> points; points.push_back( POINT ); // *5回 m_pD3DDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE
Financial Instrument Pricing Using C++ (second edition) An integrated guide to C++ and computational finance This complete guide to C++ and computational finance is a follow-up and major extension to Daniel J. Duffy's 2004 edition of Financial Instrument Pricing Using C++. Both C++ and computational finance have evolved and changed dramatically in the last ten years and this book documents these i
SIP を使い C++ クラスを Python から呼び出してみました。 他にも boost や SWIG などあるらしいけど、こいつは軽快。良いかも。 たとえばこんな C++ クラス word.h があったとして、 class Word { private: char* _word; public: Word(const char*); const char* str() const { return _word; } void set(const char*); char* reverse() const; }; sip を使いゴニョゴニョした後、 $ python >>> from word import Word >>> w=Word('abc') >>> w.str() 'abc' >>> w.reverse() 'cba' >>> w.set('xyz') >>> w.str(
Janus Java to C++ source code converter without GC,thread and ... 飯田 陽彦 株式会社バックス haruhiko_iida@vacs.co.jp 概要 Janus(ヤヌス)は、Javaソースコードから、C++ソースコードおよびヘッダファイルを生成する言語コンバータである。JavaとC++の大きな違いの一つであるガーベジコレクションについては、これをサポートしない。メモリ管理は、C++と同様、開発者の責任であり、不要なメモリの解放は、Javaソースコード内に、C++のdelete,delete[]に相当するコードを明示的に記述することで行う。マルチスレッドのサポート、例外処理におけるfinally節等、JavaにあってC++にない要素は、単純に無視され、演算子多重定義やテンプレートなども、元のソースコードがJavaである事から
仮に「C++のクラス作ったら、絶対にデストラクタをvirtual宣言しなさい」という指示があった場合に、自分では反論できないことを知ったので後学のために質問しました。 エキスパートの皆様からの、珠玉の回答集です。
以前にも書いたような気がしますが、もう一度書きます。C++/CLI(仕様の邦訳)は、.netからC++やその他ネイティブコードのライブラリを楽に使えるようにするためと、そのための作業を楽に行うための言語です。「.netで使えるC++」ではありません。そういうことを言う人は悉くこの言語の厳つい顎で頭を砕かれ、手足をもがれて、腸を食らい千切られ死にます。それが摂理なのです。あらがえません。C++/CLIは大きく分けてC++と、C++風構文を持つ何か.netっぽい言語(ここでは仮に「Cヰ」と呼びましょう)からなる、キメラです。二つの言語のコードは一つのファイルに混ぜて書くことができます。C++の部分はそのままC++です。何も違いはありません。GCもありません。ありませんが.netのGCにネイティブオブジェクト(要するにC++で作ったオブジェクト)を通知して管理させる方法はあります。interfa
既に mattn さんが、「Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!」で紹介してくださっています (mattn さん、アドバイス&バグ情報ありがとうございます!) が、いまさら C++ で JSON パーサを作りました。それは、以下の3点を満たすものがなかったから。 ヘッダファイル only boost 等、他の重たいライブラリに依存しない array や object が STL にマッピングされる コードは、coderepos に置いてありますので、よろしければお使いください (picojson.h)。 なお、現時点での制限事項として、 \n や \r, \uXXXX といったエスケープの処理が未実装rev. 34232 で対応しました (含サロゲートペア) 空白文字の判断基準が RFC と異なるrev. 34277 で空白と
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く