src/hugo/skeletons/sym_graph.h
changeset 911 89a4fbb99cad
parent 909 6a22e0dfd453
equal deleted inserted replaced
0:a6c6f21ac0b6 1:9ffddd026b5f
    43     /// or it can serve as a skeleton of a new symmetric graph structure.
    43     /// or it can serve as a skeleton of a new symmetric graph structure.
    44     /// 
    44     /// 
    45     /// Also, you will find here the full documentation of a certain graph
    45     /// Also, you will find here the full documentation of a certain graph
    46     /// feature, the documentation of a real symmetric graph imlementation
    46     /// feature, the documentation of a real symmetric graph imlementation
    47     /// like @ref SymListGraph or
    47     /// like @ref SymListGraph or
    48     /// @ref SymSmartGraph will just refer to this structure.
    48     /// @ref hugo::SymSmartGraph will just refer to this structure.
    49     class StaticSymGraph
    49     class StaticSymGraph
    50     {
    50     {
    51     public:
    51     public:
    52       /// Defalult constructor.
    52       /// Defalult constructor.
    53 
    53 
    91 	/// same object or both are invalid.
    91 	/// same object or both are invalid.
    92 	bool operator==(Node) const { return true; }
    92 	bool operator==(Node) const { return true; }
    93 
    93 
    94 	/// Inequality operator
    94 	/// Inequality operator
    95 	
    95 	
    96 	/// \sa \ref operator==(Node n)
    96 	/// \sa operator==(Node n)
    97 	///
    97 	///
    98 	bool operator!=(Node) const { return true; }
    98 	bool operator!=(Node) const { return true; }
    99 
    99 
   100  	///Comparison operator.
   100  	///Comparison operator.
   101 
   101 
   179 	/// Two iterators are equal if and only if they point to the
   179 	/// Two iterators are equal if and only if they point to the
   180 	/// same object or both are invalid.
   180 	/// same object or both are invalid.
   181 	bool operator==(SymEdge) const { return true; }
   181 	bool operator==(SymEdge) const { return true; }
   182 	/// Inequality operator
   182 	/// Inequality operator
   183 
   183 
   184 	/// \sa \ref operator==(Node n)
   184 	/// \sa operator==(Node n)
   185 	///
   185 	///
   186 	bool operator!=(SymEdge) const { return true; }
   186 	bool operator!=(SymEdge) const { return true; }
   187  	///Comparison operator.
   187  	///Comparison operator.
   188 
   188 
   189 	///This is a strict ordering between the nodes.
   189 	///This is a strict ordering between the nodes.
   221 	/// Two iterators are equal if and only if they point to the
   221 	/// Two iterators are equal if and only if they point to the
   222 	/// same object or both are invalid.
   222 	/// same object or both are invalid.
   223 	bool operator==(Edge) const { return true; }
   223 	bool operator==(Edge) const { return true; }
   224 	/// Inequality operator
   224 	/// Inequality operator
   225 
   225 
   226 	/// \sa \ref operator==(Node n)
   226 	/// \sa operator==(Node n)
   227 	///
   227 	///
   228 	bool operator!=(Edge) const { return true; }
   228 	bool operator!=(Edge) const { return true; }
   229  	///Comparison operator.
   229  	///Comparison operator.
   230 
   230 
   231 	///This is a strict ordering between the nodes.
   231 	///This is a strict ordering between the nodes.
   487       ///\warning Not all graph structures provide this feature.
   487       ///\warning Not all graph structures provide this feature.
   488       ///
   488       ///
   489       ///\todo Should each graph provide \c id?
   489       ///\todo Should each graph provide \c id?
   490       int id(const SymEdge&) const { return 0; }
   490       int id(const SymEdge&) const { return 0; }
   491 
   491 
   492       /// .
   492       ///\e
   493       
   493       
   494       ///\todo Should it be in the concept?
   494       ///\todo Should it be in the concept?
   495       ///
   495       ///
   496       int nodeNum() const { return 0; }
   496       int nodeNum() const { return 0; }
   497       /// .
   497       ///\e
   498 
   498 
   499       ///\todo Should it be in the concept?
   499       ///\todo Should it be in the concept?
   500       ///
   500       ///
   501       int edgeNum() const { return 0; }
   501       int edgeNum() const { return 0; }
   502 
   502 
   522       /// needs some extra attention!
   522       /// needs some extra attention!
   523       template<class T> class NodeMap : public ReferenceMap< Node, T >
   523       template<class T> class NodeMap : public ReferenceMap< Node, T >
   524       {
   524       {
   525       public:
   525       public:
   526 
   526 
   527 	/// .
   527 	///\e
   528 	NodeMap(const StaticSymGraph&) { }
   528 	NodeMap(const StaticSymGraph&) { }
   529 	/// .
   529 	///\e
   530 	NodeMap(const StaticSymGraph&, T) { }
   530 	NodeMap(const StaticSymGraph&, T) { }
   531 
   531 
   532 	///Copy constructor
   532 	///Copy constructor
   533 	template<typename TT> NodeMap(const NodeMap<TT>&) { }
   533 	template<typename TT> NodeMap(const NodeMap<TT>&) { }
   534 	///Assignment operator
   534 	///Assignment operator
   546       template<class T> class EdgeMap
   546       template<class T> class EdgeMap
   547 	: public ReferenceMap<Edge,T>
   547 	: public ReferenceMap<Edge,T>
   548       {
   548       {
   549       public:
   549       public:
   550 
   550 
   551 	/// .
   551 	///\e
   552 	EdgeMap(const StaticSymGraph&) { }
   552 	EdgeMap(const StaticSymGraph&) { }
   553 	/// .
   553 	///\e
   554 	EdgeMap(const StaticSymGraph&, T) { }
   554 	EdgeMap(const StaticSymGraph&, T) { }
   555     
   555     
   556 	///Copy constructor
   556 	///Copy constructor
   557 	template<typename TT> EdgeMap(const EdgeMap<TT>&) { }
   557 	template<typename TT> EdgeMap(const EdgeMap<TT>&) { }
   558 	///Assignment operator
   558 	///Assignment operator
   570       template<class T> class SymEdgeMap
   570       template<class T> class SymEdgeMap
   571 	: public ReferenceMap<SymEdge,T>
   571 	: public ReferenceMap<SymEdge,T>
   572       {
   572       {
   573       public:
   573       public:
   574 
   574 
   575 	/// .
   575 	///\e
   576 	SymEdgeMap(const StaticSymGraph&) { }
   576 	SymEdgeMap(const StaticSymGraph&) { }
   577 	/// .
   577 	///\e
   578 	SymEdgeMap(const StaticSymGraph&, T) { }
   578 	SymEdgeMap(const StaticSymGraph&, T) { }
   579     
   579     
   580 	///Copy constructor
   580 	///Copy constructor
   581 	template<typename TT> SymEdgeMap(const SymEdgeMap<TT>&) { }
   581 	template<typename TT> SymEdgeMap(const SymEdgeMap<TT>&) { }
   582 	///Assignment operator
   582 	///Assignment operator