lemon/graph_utils.h
changeset 1801 049f42e44dee
parent 1730 fffa6456548a
child 1804 7a76e35e4a78
equal deleted inserted replaced
27:2a3c540f8ec4 28:5a2a34ae9176
    38 namespace lemon {
    38 namespace lemon {
    39 
    39 
    40   /// \addtogroup gutils
    40   /// \addtogroup gutils
    41   /// @{
    41   /// @{
    42 
    42 
       
    43   ///Creates convenience typedefs for the graph types and iterators
       
    44 
       
    45   ///This \c \#define creates convenience typedefs for the following types
       
    46   ///of \c Graph: \c Node,  \c NodeIt, \c Edge, \c EdgeIt, \c InEdgeIt,
       
    47   ///\c OutEdgeIt.
       
    48   ///\note If \c G it a template parameter, it should be used in this way.
       
    49   ///\code
       
    50   ///  GRAPH_TYPEDEFS(typename G)
       
    51   ///\endcode
       
    52   ///
       
    53   ///\warning There are no typedefs for the graph maps because of the lack of
       
    54   ///template typedefs in C++.
       
    55 #define GRAPH_TYPEDEFS(Graph)			\
       
    56   typedef Graph::     Node      Node;		\
       
    57     typedef Graph::   NodeIt    NodeIt;		\
       
    58     typedef Graph::   Edge      Edge;		\
       
    59     typedef Graph::   EdgeIt    EdgeIt;		\
       
    60     typedef Graph:: InEdgeIt  InEdgeIt;		\
       
    61     typedef Graph::OutEdgeIt OutEdgeIt;
       
    62   
       
    63   ///Creates convenience typedefs for the undirected graph types and iterators
       
    64 
       
    65   ///This \c \#define creates the same convenience typedefs as defined by
       
    66   ///\ref GRAPH_TYPEDEFS(Graph) and three more, namely it creates
       
    67   ///\c UndirEdge, \c UndirEdgeIt, \c IncEdgeIt,
       
    68   ///
       
    69   ///\note If \c G it a template parameter, it should be used in this way.
       
    70   ///\code
       
    71   ///  UNDIRGRAPH_TYPEDEFS(typename G)
       
    72   ///\endcode
       
    73   ///
       
    74   ///\warning There are no typedefs for the graph maps because of the lack of
       
    75   ///template typedefs in C++.
       
    76 #define UNDIRGRAPH_TYPEDEFS(Graph)			\
       
    77   GRAPH_TYPEDEFS(Graph)					\
       
    78     typedef Graph:: UndirEdge   UndirEdge;		\
       
    79     typedef Graph:: UndirEdgeIt UndirEdgeIt;		\
       
    80     typedef Graph:: IncEdgeIt   IncEdgeIt;
       
    81 
       
    82 
    43   /// \brief Function to count the items in the graph.
    83   /// \brief Function to count the items in the graph.
    44   ///
    84   ///
    45   /// This function counts the items (nodes, edges etc) in the graph.
    85   /// This function counts the items (nodes, edges etc) in the graph.
    46   /// The complexity of the function is O(n) because
    86   /// The complexity of the function is O(n) because
    47   /// it iterates on all of the items.
    87   /// it iterates on all of the items.