c++

使われていないクラス・メソッド・変数を簡単に列挙したいな

C++

使われていないクラス・メソッド・変数を簡単に列挙したいな。 何か良い方法ないだろうか。

ヘッダにコードを書きまくる

C++

いま +-*/ などの関数をそれぞれ Plus.[h|cpp], Minus.[h|cpp], Multiply.[h|cpp], Devide.[h|cpp]のように、まじめにクラスを書いている。 ただ apply を実装するだけなのでクラスの構造は保ちつつ、楽をしたいというのが正直な気持ち。 一つの方法として .…

なぜかYAML

テストをコードに埋めていくと悲しい気持ちになるので、何故かYAMLで外だし。テストに使うデータが.cppに埋め込まれた悲しい感じ↓ _Y("and" , "(_ a b ...)" , "(and a b c)"); _Y("when" , "(_ pred a b)" , "(when (= x 3) (display \"x=3\") (display \"\…

iteratorの it++ と ++it

C++クックブックのアルゴリズムの章を読んでいたら、iteratorのループでは it++ ではなく ++itを使えと書いてあった。 it+だと一時オブジェクトが作られてしまうのだそうだ。 心当たりが数ヶ所合ったので grep して修正しておいた。 追記 自分が iterator を…

Boost環境構築挫折

http://www.boost.org/libs/config/config.htm boost/config.h boost/config/select_compiler_config.hpp gccがきちんと選択されている boost/config/compiler/gcc.hppがincludeされる -fno-exceptions が選択されていると #define BOOST_NO_EXCEPTIONS され…

libstc++のライセンスを詳しく

4.4BSD Liteはnon-freeなの? →核心部分。良く見たらberoさんだ。 g++TryCatch - めらまんホームページ ということで、gccを利用してMonaのアプリにgcc付属のlibstdc++や例外周りのコードをリンクすることはよさげ。 gccのlibstdc++をツリーにいれたらまた別…

1章 1.6 ポリシーの拡張 - Modern C++ Designを読む(2)

C++

Hello World Managerクラスは Create Policy を継承します。 そのとき要求しているのは T* Create()という関数だけですが、特定のPolicy においてあえて拡張することが可能という話。 PrototypeCreatorクラスは Create()以外に、SetPrototype(), GetPrototyp…

1章 1.5 ポリシーとポリシー・クラス - Modern C++ Designを読む(1)

C++

ポリシーやポリシー・クラスは、安全で効率のよい、そしてカスタマイズ性の高い設計用素材の実装を支援するものです。 ポリシー(policy)とは、クラス・インターフェースやクラス・テンプレートのインターフェースを定義するものです。 インターフェースは内…

placment new

C++

#include <new>new を include するのが素敵。</new>

placement new

C++

Squirrelを移植してくださった、okayuさんから Mona に placement new がなくて困ったと御指摘いただきました。 はて? placement new ってなんだっけ?と思ったので調べたところC++編(言語解説) 第36章 placement newが分かりやすかったです。とりあえず…

コールバック

C++

Tinoさんがまとめているコールバックの話が面白いですよ。 コールバック - Mona PJ Wiki

デマングル

C++

公開ハックで c++filt というツールを知った。 nobita% c++filt _Znw operator newおぉ!

delete this; はアリか

昨日 ChangeLog にメモっていたのに日記に貼るのを忘れていた。 カーネル側のMutexインスタンスをを複数のプロセスが共有していている状況があり、Mutexインスタンスの破棄タイミングをコントロールするために自前でリファレンスカウンタで管理しようと思い…

オーバーロードにはまる

C++

ひさびさにオーバーロードではまりました。 以下の2つの関数があるとして read(byte track, byte head, byte sector) read(dword lba, void* buf, int size)read(0, 0, 1) と呼び出すとどちらが呼ばれるでしょう。あー。badだな。

C++のリファクタリングツール Xrefactory

もはや技術者の必読書*1となりつつある「リファクタリング―プログラムの体質改善テクニック」ですが、 その作者であるマーチンファウラー氏のMartin Fowler's Bliki in Japaneseを読んでいてふと思った。 C++のリファクタリングブラウザ(リファクタリングツ…

メモリリーク殲滅

==9315== All heap blocks were freed -- no leaks are possible. Varlgrindで検出された メモリリーク(free/delete忘れ) invalid delete (複数 delete)→C++の仕様的にはあり invalid read/write (解放後のアクセス) をすべて直した。疲れた・・・。 今回…

メモリリークに悩む

C++

Valgrindでメモリリークを指摘される。大体つぶせた。 でも、ソースコード中の行番号くらいまでValgrindが教えてくれるんだけど条件が複雑でいまいち特定できないものがある。 こうなったら new しているところでそのポインタをグローバルな vectorに種類別…

STL + valgrindの罠

C++

http://valgrind.org/docs/manual/faq.html#faq.reports 読んでおくと良いと思います。

構文解析その後

まとめはSICPの日記で書くとして今はこんな感じ。 (+ a 1) => OP_BODY[+] OP_SYMBOL[a] NULL NULL OP_ARGS OP_NUMBER[1] NULL NULL NULL 複雑で紛らわしいものを試す (a (b 2 3)) OP_BODY[a] OP_BODY[b] OP_NUMBER[2] NULL NULL OP_ARGS OP_NUMBER[3] NULL N…

キャスト

C++

id:hideokiが C++ はキャストが何種類もあって、ふがふがとか言っていたのをきっかけに C++ のキャストを復習した。 それにしても全然使ってないなぁ。。 ここを読めば分かります。 C++の新しいキャスト

map面倒

findの戻り値がiteratorでかつ、pair が返るとか面倒。 うぅ。何でこんなに面倒なんだろうか。 insertのときもpairでやらなきゃいけないし。 みんなまじめに使っているんだろうか? wrapしてます?

STL map/pairあたりではまる

C++

こ絶対正しいとを書いているはずなのにがーっとエラーがでまくった。 ずっと悩んでいたが #include <string>を忘れているだけだった(泣</string>

Effective C++ 原著第3版

Effective C++ 原著第3版が出るみたいですね。これはもう買うしか。 ページ数がやたら増えているのは気のせいですか。勉強しなおしですか。過去にEffective C++を読んだ日記を書いていたので雰囲気を知りたい方はどうぞ。 Effective C++ 原著第3版posted wit…

コーディング中

$ class_create.pl TopLabel baygui created "TopLabel.h" created "TopLabel.cpp"便利!(自画自賛。 さて。。C++の継承の理解が怪しい気がしてきたぞ。 こういうときはロベール先生だ。 http://www1.kcn.ne.jp/~robe/cpphtml/html02/cpp02016.html TopLabel…

メッセージコード整理のツール

Monaでスレッド間通信する際に、メッセージのヘッダーというものでメッセージを一意に指定しています。 例えば MSG_TIMERみたいなのが、どこかで数値(dword)としてdefineなりenumされてやり取りされています。 そして、メッセージ機構はMonaの要なので、アプ…

クラスの雛形を作るスクリプト

C++

$ class_create.pl Higepon mona created "Higepon.h" created "Higepon.cpp" のようにコマンドラインから クラス名・namespace(省略可能)を指定して実行すると、Higepon.cppと Higepon.h が作成されます。 これで楽ができますね。 Higepon.h #ifndef __HIGE…

vector ?

C++

NetServerで送信・受信バッファをBufferクラスというのを用意しています。 byte配列と、そのサイズを管理している感じです。 最近読み始めた Effective STL―STLを効果的に使いこなす50の鉄則によればvectorが良い気がしてきた。 このあたりの使いどころの経…

関数は、ローカルオブジェクトへのリファレンスや関数の中でnewで初期化したポインタの参照先を返してはならない

リファレンスを返すことはあまりないなぁ。

Effective STL

C++

買おうかどうか迷い中。 ユーズドで探そうか・・・Effective STL―STLを効果的に使いこなす50の鉄則作者: スコットメイヤーズ,Scott Meyers,細谷昭出版社/メーカー: ピアソンエデュケーション発売日: 2002/01メディア: 単行本購入: 9人 クリック: 155回この商…

STL勉強中 - for_eachですべての要素に対してdelete

さてSTL勉強中なわけですが、コンテナのすべての要素に対して delete したいと思ってやってみましたがなかなかうまくいかず調べてみました。 http://www.devmaster.net/forums/showthread.php?t=418によると、 どこかのヘッダでこんなのを用意していて struc…