1/* 2 * Copyright (c) 2011-2012,2015,2017 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 58 unchanged lines hidden (view full) --- 67 68 protected: 69 70 /** 71 * A numeric identifier to distinguish ports in a vector, and set 72 * to InvalidPortID in case this port is not part of a vector. 73 */ 74 const PortID id; |
75 |
76 /** |
77 * A pointer to this port's peer. 78 */ 79 Port *_peer; 80 81 82 /** |
83 * Whether this port is currently connected to a peer port. 84 */ 85 bool _connected; 86 87 /** 88 * Abstract base class for ports 89 * 90 * @param _name Port name including the owners name 91 * @param _id A port identifier for vector ports 92 */ 93 Port(const std::string& _name, PortID _id); 94 95 /** 96 * Virtual destructor due to inheritance. 97 */ 98 virtual ~Port(); 99 100 public: 101 |
102 /** Return a reference to this port's peer. */ 103 Port &getPeer() { return *_peer; } 104 |
105 /** Return port name (for DPRINTF). */ 106 const std::string name() const { return portName; } 107 108 /** Get the port id. */ 109 PortID getId() const { return id; } 110 111 /** Attach to a peer port. */ |
112 virtual void 113 bind(Port &peer) 114 { 115 _peer = &peer; 116 _connected = true; 117 } |
118 119 /** Dettach from a peer port. */ |
120 virtual void 121 unbind() 122 { 123 _peer = nullptr; 124 _connected = false; 125 } |
126 127 /** Is this port currently connected to a peer? */ 128 bool isConnected() const { return _connected; } 129}; 130 131#endif //__SIM_PORT_HH__ |