| <HTML> |
| <!-- |
| Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 |
| |
| Distributed under the Boost Software License, Version 1.0. |
| (See accompanying file LICENSE_1_0.txt or copy at |
| http://www.boost.org/LICENSE_1_0.txt) |
| --> |
| <Head> |
| <Title>Boost Graph Library: Property</Title> |
| <BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" |
| ALINK="#ff0000"> |
| <IMG SRC="../../../boost.png" |
| ALT="C++ Boost" width="277" height="86"> |
| |
| <BR Clear> |
| |
| <H1><A NAME="sec:property"></A> |
| <TT>property<PropertyTag, T, NextProperty></TT> |
| </H1> |
| |
| This class can be used with the <a |
| href="./adjacency_list.html"><tt>adjacency_list</tt></a> and the <a |
| href="./adjacency_matrix.html"><tt>adjacency_matrix</tt></a> classes |
| to specify what kind of properties should be attached to the vertices |
| and edges of the graph, and to the graph object itself. |
| |
| |
| <h3>Synopsis</h3> |
| |
| <pre> |
| namespace boost { |
| template <class Tag, class T, class NextProperty = no_property> |
| struct property : public NextProperty { |
| typedef NextProperty next_type; |
| typedef Tag tag_type; |
| typedef T value_type; |
| property(); |
| property(const T& v); |
| property(const T& v, const NextProperty& b); |
| // copy constructor and assignment operator will be generated by compiler |
| T m_value; |
| }; |
| } |
| </pre> |
| |
| <h3>Template Parameters</h3> |
| |
| |
| <P> |
| <TABLE border> |
| <TR> |
| <th>Parameter</th><th>Description</th><th>Default</th> |
| </tr> |
| |
| <tr> |
| <td><tt>PropertyTag</tt></td> |
| |
| <td>A type to identify (give a unique name to) the property. There are |
| several predefined tags, and it is easy to add more. For convenience, |
| BGL also provides predefined objects of the tag types (enum values) |
| for use as arguments to functions that expect property tag objects |
| (such as <tt>adjacency_list</tt>'s <a |
| href="./adjacency_list.html#property-map-accessors"> property map |
| accessor</a> functions). </td> |
| |
| <td> </td> |
| </tr> |
| |
| <tr> |
| <td><tt>T</tt></td> |
| <td> This type specifies the type of the property values. </td> |
| <td> </td> |
| </tr> |
| |
| <tr> |
| <td><tt>NextProperty</tt></td> |
| <td>This parameter allows <tt>property</tt> types to be |
| nested, so that an arbitrary number of properties can be attached to |
| the same graph.</td> |
| <td><tt>no_property</tt></td> |
| </tr> |
| </table> |
| |
| <h3>Where Defined</h3> |
| |
| <a href="../../../boost/pending/property.hpp"><tt>boost/pending/property.hpp</tt></a> |
| |
| <hr> |
| |
| <H3>Associated Types</H3> |
| |
| <pre> |
| next_type |
| </pre> |
| The <tt>NextProperty</tt> type parameter. |
| |
| <pre> |
| tag_type |
| </pre> |
| The <tt>Tag</tt> type parameter. |
| |
| <pre> |
| value_type |
| </pre> |
| The <tt>T</tt> type parameter. |
| |
| <hr> |
| |
| <H3>Member Functions</H3> |
| |
| <pre> |
| property() |
| </pre> |
| |
| Construct a property object with member <tt>m_value</tt> a default |
| constructed instance of type <tt>T</tt> and with the super object |
| default constructed. Note that <tt>T</tt> must be Default |
| Constructible for this property, and all the inherited property types. |
| |
| <hr> |
| |
| <pre> |
| property(const T& v) |
| </pre> |
| |
| Construct a property object with member <tt>m_value</tt> a copy |
| of <tt>v</tt>. |
| |
| <hr> |
| |
| <pre> |
| property(const T& v, const NextProperty& b) |
| </pre> |
| |
| Construct a property object with member <tt>m_value</tt> a copy |
| of <tt>v</tt> and whose super class <tt>NextProperty</tt> is |
| constructed from <tt>b</tt>. |
| |
| <hr> |
| |
| |
| <h3>Property Tags</h3> |
| |
| The following property tags are defined in |
| <tt>boost/graph/properties.hpp</tt>. |
| |
| <pre> |
| namespace boost { |
| enum edge_name_t { edge_name }; |
| enum edge_weight_t { edge_weight }; |
| enum edge_index_t { edge_index }; |
| enum edge_capacity_t { edge_capacity }; |
| enum edge_residual_capacity_t { edge_residual_capacity }; |
| enum edge_reverse_t { edge_reverse }; |
| enum vertex_name_t { vertex_name }; |
| enum vertex_distance_t { vertex_distance }; |
| enum vertex_index_t { vertex_index }; |
| enum vertex_color_t { vertex_color }; |
| enum vertex_degree_t { vertex_degree }; |
| enum vertex_out_degree_t { vertex_out_degree }; |
| enum vertex_in_degree_t { vertex_in_degree }; |
| enum vertex_discover_time_t { vertex_discover_time }; |
| enum vertex_finish_time_t { vertex_finish_time }; |
| enum graph_name_t { graph_name }; |
| |
| BOOST_INSTALL_PROPERTY(vertex, index); |
| BOOST_INSTALL_PROPERTY(edge, index); |
| // ... |
| } |
| </pre> |