1<HTML> 2<!-- 3 Copyright (c) Jeremy Siek 2000 4 5 Distributed under the Boost Software License, Version 1.0. 6 (See accompanying file LICENSE_1_0.txt or copy at 7 http://www.boost.org/LICENSE_1_0.txt) 8 --> 9<Head> 10<Title>Property</Title> 11<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" 12 ALINK="#ff0000"> 13<IMG SRC="../../../boost.png" 14 ALT="C++ Boost" width="277" height="86"> 15 16<BR Clear> 17 18<H2><A NAME="concept:PropertyTag"></A> 19PropertyTag 20</H2> 21 22A Property Tag is a type used to name or identify properties that are 23attached to the vertices and edges of a graph. A Property type is not 24the type of the actual property values. Objects of the Property type 25are not used except to carry the type information which specifies the 26property. See the section about <A 27href="using_adjacency_list.html#sec:custom-edge-properties"> Custom 28Edge Properties</a> for a description of how to define your own 29property tags. 30 31 32<h3>Associated Types</h3> 33 34<table border> 35 36<tr> 37<td>Property Kind </td> 38<td><TT>property_kind<PropertyTag>::type</TT> </td> 39<td> 40 41This specifies whether the property is a <a 42name="VertexPropertyTag"><b>Vertex Property Tag</b></a> 43(<tt>vertex_property_tag</tt>), an <a 44name="EdgePropertyTag"><b>Edge Property Tag</b></a> (<tt>edge_property_tag</tt>), or 45a <a name="GraphPropertyTag"><b>Graph Property Tag</b></a> which is attached to the 46graph object itself (<tt>graph_property_tag</tt>). The tags are 47defined in <a 48href="../../../boost/graph/properties.hpp"><tt>boost/graph/properties.hpp</tt></a>. The <tt>property_kind</tt> traits class is defined in <a href="../../../boost/pending/property.hpp"><tt>boost/pending/property.hpp</tt></a>. 49 50</td> 51</tr> 52 53<tr> 54<td>Property ID Number </td> 55<td><TT>property_num<PropertyTag>::value</TT> </td> 56<td> 57This is needed as a workaround when using compilers that do not 58support partial specialization (and hence prevent us from using 59<tt>boost::is_same</tt> to detect if two property tags are the same). 60The <tt>property_num</tt> traits class is defined in <a 61href="../../../boost/pending/property.hpp"><tt>boost/pending/property.hpp</tt></a>. 62</td> 63</tr> 64 65</table> 66 67<h3>Refinement of</h3> 68 69<a 70href="http://www.boost.org/sgi/stl/DefaultConstructible.html">Default Constructible</a> 71 72 73<h3>Models</h3> 74 75The following models of the Property Tag concept are defined 76in <a 77href="../../../boost/graph/properties.hpp"><tt>boost/graph/properties.hpp</tt></a>. 78 79<ul> 80 <li><tt>vertex_index_t</tt></li> 81 <li><tt>edge_index_t</tt></li> 82 <li><tt>graph_name_t</tt></li> 83 <li><tt>vertex_name_t</tt></li> 84 <li><tt>edge_name_t</tt></li> 85 <li><tt>edge_weight_t</tt></li> 86 <li><tt>vertex_distance_t</tt></li> 87 <li><tt>vertex_color_t</tt></li> 88 <li><tt>vertex_degree_t</tt></li> 89 <li><tt>vertex_out_degree_t</tt></li> 90 <li><tt>vertex_in_degree_t</tt></li> 91 <li><tt>vertex_discover_time_t</tt></li> 92 <li><tt>vertex_finish_time_t</tt></li> 93</ul> 94 95<h3>See Also</h3> 96 97<a href="./PropertyGraph.html">PropertyGraph</a> 98and 99<a href="../../property_map/doc/property_map.html">Property Map Concepts</a> 100 101<h3>Notes</h3> 102 103On compilers that do not support partial specialization, each Property 104type is also required to specialize 105<tt>property_num<PropertyTag></tt> to contain an enum named 106<tt>value</tt> which uniquely identifies the property type. 107 108<br> 109<HR> 110<TABLE> 111<TR valign=top> 112<TD nowrap>Copyright © 2000-2001</TD><TD> 113<A HREF="http://www.boost.org/people/jeremy_siek.htm">Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@osl.iu.edu">jsiek@osl.iu.edu</A>) 114</TD></TR></TABLE> 115 116</BODY> 117</HTML> 118