rnode.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. // Define a "routing capable" node
  2. // Insures functionality to run routing algorithms
  3. #ifndef __RNODE_H__
  4. #define __RNODE_H__
  5. #include "nix/nixvec.h"
  6. #include <set>
  7. #include <map>
  8. #include <vector>
  9. #include <deque>
  10. #include <algorithm>
  11. #ifdef USE_HASH
  12. #include <hash_set>
  13. #endif
  14. typedef unsigned long nodeid_t; // Node identifier
  15. typedef unsigned long dist_t;   // Distance
  16. typedef unsigned int  weight_t; // Weight
  17. typedef pair<nodeid_t, weight_t> NodeWeight_t; // Node/Distance Pair
  18. const dist_t   INF  = 0xffffffff;
  19. const nodeid_t NODE_NONE = 0xffffffff;
  20. class RNode {
  21.   public :
  22.     RNode( );
  23.     RNode( nodeid_t id);
  24.     RNode( const RNode& n);
  25.     virtual ~RNode();
  26.     virtual void AddAdj(nodeid_t a, int w = 1);
  27.     // Get next adjacent node..pass in NODE_NONE to get first
  28.     virtual const NodeWeight_t NextAdj( const NodeWeight_t&);
  29.     virtual NixPair_t GetNix(nodeid_t);  // Get neighbor index/length
  30.     virtual Nixl_t    GetNixl();         // Get bits needed for nix entry
  31.     virtual nodeid_t  GetNeighbor(Nix_t);// Get neighbor from nix
  32.     //int const operator=  (const dist_t& n) { return n == m_id;}
  33.     //int const operator!= (const dist_t& n) { return n != m_id;}
  34.   public :
  35.     nodeid_t m_id; // This node identifier
  36. };
  37. // Declare the equal and not= operators
  38. //int operator== (const RNode& N, const dist_t& n) { return N.m_id == n;}
  39. //int operator!= (const RNode& N, const dist_t& n) { return N.m_id != n;}
  40. //int operator== (RNode& N, const dist_t& n) { return N.m_id == n;}
  41. //int operator!= (RNode& N, const dist_t& n) { return N.m_id != n;}
  42. // Define the vector for nodes
  43. typedef vector<RNode*>         RNodeVec_t;
  44. typedef RNodeVec_t::iterator   RNodeVec_it;
  45. // Define the deque for nodes
  46. typedef deque<RNode*>          RNodeDeq_t;
  47. typedef RNodeDeq_t::iterator   RNodeDeq_it;
  48. // Define the vector for next hop neighbors
  49. typedef vector<nodeid_t>       RoutingVec_t;
  50. typedef RoutingVec_t::iterator RoutingVec_it;
  51. // Define the distance vector
  52. typedef vector<dist_t>         DistVec_t;
  53. typedef DistVec_t::iterator    DistVec_it;
  54. #endif