ruby: drop NetworkMessage class
[gem5.git] / src / mem / ruby / common / NetDest.hh
index 17ede03e942ce0aa92de867a3fe8572447330fb2..e09be0c2cb26a74c1a9bb02577665592d0f9dc07 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
  * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
  * All rights reserved.
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- * Set.h
- *
- * Description:
- *
- * $Id$
- *
- */
-
-// NetDest specifies the network destination of a NetworkMessage
+// NetDest specifies the network destination of a Message
 // This is backward compatible with the Set class that was previously
 // used to specify network destinations.
 // NetDest supports both node networks and component networks
 
-#ifndef NETDEST_H
-#define NETDEST_H
-
-#include "mem/ruby/common/Global.hh"
-#include "mem/gems_common/Vector.hh"
-#include "mem/ruby/system/NodeID.hh"
-#include "mem/ruby/system/MachineID.hh"
-#include "mem/ruby/config/RubyConfig.hh"
-#include "mem/ruby/common/Set.hh"
-#include "mem/protocol/MachineType.hh"
-
-class Set;
-
-class NetDest {
-public:
-  // Constructors
-  // creates and empty set
-  NetDest();
-  explicit NetDest(int bit_size);
-
-  NetDest& operator=(const Set& obj);
-
-  // Destructor
-  // ~NetDest();
-
-  // Public Methods
-  void add(MachineID newElement);
-  void addNetDest(const NetDest& netDest);
-  void addRandom();
-  void setNetDest(MachineType machine, const Set& set);
-  void remove(MachineID oldElement);
-  void removeNetDest(const NetDest& netDest);
-  void clear();
-  void broadcast();
-  void broadcast(MachineType machine);
-  int count() const;
-  bool isEqual(const NetDest& netDest);
-
-  NetDest OR(const NetDest& orNetDest) const;  // return the logical OR of this netDest and orNetDest
-  NetDest AND(const NetDest& andNetDest) const;  // return the logical AND of this netDest and andNetDest
+#ifndef __MEM_RUBY_COMMON_NETDEST_HH__
+#define __MEM_RUBY_COMMON_NETDEST_HH__
 
-  // Returns true if the intersection of the two netDests is non-empty
-  bool intersectionIsNotEmpty(const NetDest& other_netDest) const;
+#include <iostream>
+#include <vector>
 
-  // Returns true if the intersection of the two netDests is empty
-  bool intersectionIsEmpty(const NetDest& other_netDest) const;
-
-  bool isSuperset(const NetDest& test) const;
-  bool isSubset(const NetDest& test) const { return test.isSuperset(*this); }
-  bool isElement(MachineID element) const;
-  bool isBroadcast() const;
-  bool isEmpty() const;
-
-  //For Princeton Network
-  Vector<NodeID> getAllDest();
-
-  NodeID smallestElement() const;
-  MachineID smallestElement(MachineType machine) const;
-
-  void setSize();
-  int getSize() const { return m_bits.size(); }
-
-  // get element for a index
-  NodeID elementAt(MachineID index);
-
-  void print(ostream& out) const;
-
-private:
-
-  // Private Methods
-  // returns a value >= MachineType_base_level("this machine") and < MachineType_base_level("next highest machine")
-  int vecIndex(MachineID m) const {
-    int vec_index = MachineType_base_level(m.type);
-    assert(vec_index < m_bits.size());
-    return vec_index;
-  }
-
-  NodeID bitIndex(NodeID index) const {
-    return index;
-  }
-
-  // Data Members (m_ prefix)
-  Vector < Set > m_bits;  // a Vector of bit vectors - i.e. Sets
+#include "mem/ruby/common/Set.hh"
+#include "mem/ruby/common/MachineID.hh"
 
+class NetDest
+{
+  public:
+    // Constructors
+    // creates and empty set
+    NetDest();
+    explicit NetDest(int bit_size);
+
+    NetDest& operator=(const Set& obj);
+
+    ~NetDest()
+    { }
+
+    void add(MachineID newElement);
+    void addNetDest(const NetDest& netDest);
+    void setNetDest(MachineType machine, const Set& set);
+    void remove(MachineID oldElement);
+    void removeNetDest(const NetDest& netDest);
+    void clear();
+    void broadcast();
+    void broadcast(MachineType machine);
+    int count() const;
+    bool isEqual(const NetDest& netDest) const;
+
+    // return the logical OR of this netDest and orNetDest
+    NetDest OR(const NetDest& orNetDest) const;
+
+    // return the logical AND of this netDest and andNetDest
+    NetDest AND(const NetDest& andNetDest) const;
+
+    // Returns true if the intersection of the two netDests is non-empty
+    bool intersectionIsNotEmpty(const NetDest& other_netDest) const;
+
+    // Returns true if the intersection of the two netDests is empty
+    bool intersectionIsEmpty(const NetDest& other_netDest) const;
+
+    bool isSuperset(const NetDest& test) const;
+    bool isSubset(const NetDest& test) const { return test.isSuperset(*this); }
+    bool isElement(MachineID element) const;
+    bool isBroadcast() const;
+    bool isEmpty() const;
+
+    // For Princeton Network
+    std::vector<NodeID> getAllDest();
+
+    MachineID smallestElement() const;
+    MachineID smallestElement(MachineType machine) const;
+
+    void resize();
+    int getSize() const { return m_bits.size(); }
+
+    // get element for a index
+    NodeID elementAt(MachineID index);
+
+    void print(std::ostream& out) const;
+
+  private:
+    // returns a value >= MachineType_base_level("this machine")
+    // and < MachineType_base_level("next highest machine")
+    int
+    vecIndex(MachineID m) const
+    {
+        int vec_index = MachineType_base_level(m.type);
+        assert(vec_index < m_bits.size());
+        return vec_index;
+    }
+
+    NodeID bitIndex(NodeID index) const { return index; }
+
+    std::vector<Set> m_bits;  // a vector of bit vectors - i.e. Sets
 };
 
-// Output operator declaration
-ostream& operator<<(ostream& out, const NetDest& obj);
-
-// ******************* Definitions *******************
-
-// Output operator definition
-extern inline
-ostream& operator<<(ostream& out, const NetDest& obj)
+inline std::ostream&
+operator<<(std::ostream& out, const NetDest& obj)
 {
-  obj.print(out);
-  out << flush;
-  return out;
+    obj.print(out);
+    out << std::flush;
+    return out;
 }
 
-#endif //NETDEST_H
-
+#endif // __MEM_RUBY_COMMON_NETDEST_HH__