TrickLibrary
  1. http://tricklib.com/
  2. cxx/
  3. ex/
  4. evil_for/

evil_for

about evil_for

evil_for は STL のコンテナ及び同等のインターフェイスを持つコンテナに対するループ処理を簡略化された記述で実現する為のギミックです。

const や reverse に対応してないのはやっぱり不便なので対応させますた。

...特定の処理系でなにか問題が発生するようなことなどがあれば 道化師 までメールにてお伝えくださいまし。

Wraith the Trickster

環境及び処理系( CPU/OS/コンパイラ )の影響を強く受けるアライメントアジャスタまわりの実装に関する問題があった場合は可能な限り対処いたしますので特にフィードバックをよろしくお願いいたします。

使用方法

下のリンクから evil_for.h をダウンロードして、evil_for を使用したいモジュール内で evil_for.h をインクルードするだけです。

ダウンロード

使用例

■基本
#include "evil_for.h"

void f() {
	std::vector hoge;
	...
	evil_for(hoge) {
		std::cout << *evil_i(hoge) << std::endl;
	}
}

■ネスト
#include "evil_for.h"

void f() {
	std::vector hoge;
	std::list mage;
	...
	evil_for(hoge) {
		evil_for(mage) {
			std::cout << (*evil_i(hoge)) *(*evil_i(mage)) << std::endl;
		}
	}
}

■逆方向ループ
#include "evil_for.h"

void f() {
	std::vector hoge;
	...
	evil_rfor(hoge) {
		std::cout << *evil_ri(hoge) << std::endl;
	}
}

■同一コンテナによるネスト
#include "evil_for.h"

void f() {
	std::vector hoge;
	std::vector &mage = hoge;
	...
	evil_for(hoge) {
		evil_for(mage) {
			std::cout << (*evil_i(hoge)) *(*evil_i(mage)) << std::endl;
		}
	}
}

リファレンス

macro

マクロ名種別説明
__EVIL_FOR_H__自動定義evil_for.h の重複インクルード対策の為に使用されています。
__WITH_EVIL_FOR__ユーザ定義/自動定義evil_for が組み込まれていることを示す為に使用されます。
__ADJUST_ALIGNMENT__ユーザ定義無駄の無いアライメントアジャスタを実装したので、このマクロは廃止しました。アジャスタは常に実装されます。
__STRICT_ALIGNMENT__ユーザ定義まず発生しないとは思いますが、アライメントの問題が発生する場合はこのマクロを指定して問題を回避してください。このマクロを指定するとパフォーマンスに影響します。...尚、詳細な情報を 道化師 までご提供頂ければこのマクロを指定せずとも問題が解消するように evil_for.h を修正させて頂きます。
evil_for_exコードループ処理を実現します。evil_for より、ループに関して多くのこと指定できますが、あまり役に立つことはないと思われます。evil_for はこの evil_for_ex を利用して実装されています。
evil_forコードループ処理を実現します。evil_i とセットで使用してください。
evil_iコードevil_for 及び evil_for_ex のループ内で、iterator を取得するのに利用します。
evil_rfor_exコードループ処理を実現します。evil_rfor より、ループに関して多くのこと指定できますが、あまり役に立つことはないと思われます。evil_rfor はこの evil_rfor_ex を利用して実装されています。
evil_rforコードループ処理を実現します。evil_ri とセットで使用してください。
evil_riコードevil_rfor 及び evil_rfor_ex のループ内で、iterator を取得するのに利用します。

FAQ

今現在はFAQを用意していません。evil_for でよくわからないことがありましたら 道化師 までメールください。

links