# EventVisitor Concept

このコンセプトは単独イベントビジタのインタフェースを定義する。 EventVisitor は適用メンバ関数 (`operator()`) を持つ。これは、 EventVisitor 内の `event_filter` typedef で指定されるイベントが起きた時に、グラフアルゴリズム内で実行される。 EventVisitor を組み合わせて EventVistorList を作成できる。

以下に、 BGL アルゴリズムによって実行されるイベントのタグのリストを示す。各タグは、アルゴリズムのビジタのメンバ関数と対応している。例えば、`breadth_first_search()` の BFSVisitor には `cycle_edge()` というメンバ関数が有る。これに対応するタグは `on_cycle_edge` だ。 `operator()` の第 1 引数は、イベントタグによって決まる、辺か頂点の記述子でなければならない。

    namespace boost {
      struct on_initialize_vertex { };
      struct on_start_vertex { };
      struct on_discover_vertex { };
      struct on_examine_edge { };
      struct on_tree_edge { };
      struct on_cycle_edge { };
      struct on_finish_vertex { };
      struct on_forward_or_cross_edge { };
      struct on_back_edge { };
      struct on_edge_relaxed { };
      struct on_edge_not_relaxed { };
      struct on_edge_minimized { };
      struct on_edge_not_minimized { };
    } // namespace boost

### Refinement of

Copy Constructible (ビジタのコピーは軽い操作である方がいい)

### Notation

`G` | Graph のモデルの型。
`g` | `G` 型のオブジェクト。
`V` | EventVisitor のモデルの型。
`vis` | `V` 型のオブジェクト。
`x` | `boost::graph_traits<G>::vertex_descriptor` 型か `boost::graph_traits<G>::edge_descriptor` 型のオブジェクト。

### Associated Types

Event Filter | `V::event_filter` | どのイベントによってビジタが実行されるかを指定するタグ構造体。

### Valid Expressions

名前 | 式 | 戻り値 | 説明
--- | --- | --- | ---
Apply Visitor | `vis(x, g)` | `void` | オブジェクト `x` に対してビジタの操作を実行する。 `x` はグラフの辺か頂点の記述子である。

### Models

- `predecessor_recorder`
- `distance_recorder`
- `time_stamper`
- `property_writer`
- `null_visitor`

### See Also

EventVisitorList, Visitor concepts

Copyright © 2000-2001 | Jeremy Siek, Indiana University (jsiek@osl.iu.edu) Lie-Quan Lee, Indiana University (llee@cs.indiana.edu) Andrew Lumsdaine, Indiana University (lums@osl.iu.edu)

Japanese Translation Copyright © 2003 Hiroshi Ichikawa
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。

このドキュメントの対象: Boost Version 1.30.0
最新版ドキュメント (英語)