Message.hh (7002:48a19d52d939) | Message.hh (7039:bc0b6ea676b5) |
---|---|
1 | |
2/* 3 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer; --- 12 unchanged lines hidden (view full) --- 22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 | 1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 12 unchanged lines hidden (view full) --- 21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 |
30/* 31 * $Id$ 32 */ | 29#ifndef __MEM_RUBY_SLICC_INTERFACE_MESSAGE_HH__ 30#define __MEM_RUBY_SLICC_INTERFACE_MESSAGE_HH__ |
33 | 31 |
34#ifndef MESSAGE_H 35#define MESSAGE_H 36 | |
37#include <iostream> 38 | 32#include <iostream> 33 |
39#include "mem/ruby/common/Global.hh" | |
40#include "mem/gems_common/RefCnt.hh" 41#include "mem/gems_common/RefCountable.hh" | 34#include "mem/gems_common/RefCnt.hh" 35#include "mem/gems_common/RefCountable.hh" |
36#include "mem/ruby/common/Global.hh" |
|
42#include "mem/ruby/eventqueue/RubyEventQueue.hh" 43 44class Message; 45typedef RefCnt<Message> MsgPtr; 46 | 37#include "mem/ruby/eventqueue/RubyEventQueue.hh" 38 39class Message; 40typedef RefCnt<Message> MsgPtr; 41 |
47class Message : public RefCountable { 48public: 49 // Constructors 50 Message() : RefCountable() { m_time = g_eventQueue_ptr->getTime(); m_LastEnqueueTime = g_eventQueue_ptr->getTime(); m_DelayedCycles = 0;} | 42class Message : public RefCountable 43{ 44 public: 45 Message() 46 : RefCountable() 47 { 48 m_time = g_eventQueue_ptr->getTime(); 49 m_LastEnqueueTime = g_eventQueue_ptr->getTime(); 50 m_DelayedCycles = 0; 51 } |
51 | 52 |
52 // Destructor 53 virtual ~Message() { } | 53 virtual ~Message() { } |
54 | 54 |
55 // Public Methods 56 virtual Message* clone() const = 0; 57 virtual void destroy() = 0; 58 virtual void print(std::ostream& out) const = 0; | 55 virtual Message* clone() const = 0; 56 virtual void destroy() = 0; 57 virtual void print(std::ostream& out) const = 0; |
59 | 58 |
60 void setDelayedCycles(const int& cycles) { m_DelayedCycles = cycles; } 61 const int& getDelayedCycles() const {return m_DelayedCycles;} 62 int& getDelayedCycles() {return m_DelayedCycles;} 63 void setLastEnqueueTime(const Time& time) { m_LastEnqueueTime = time; } 64 const Time& getLastEnqueueTime() const {return m_LastEnqueueTime;} 65 Time& getLastEnqueueTime() {return m_LastEnqueueTime;} | 59 void setDelayedCycles(const int& cycles) { m_DelayedCycles = cycles; } 60 const int& getDelayedCycles() const {return m_DelayedCycles;} 61 int& getDelayedCycles() {return m_DelayedCycles;} 62 void setLastEnqueueTime(const Time& time) { m_LastEnqueueTime = time; } 63 const Time& getLastEnqueueTime() const {return m_LastEnqueueTime;} 64 Time& getLastEnqueueTime() {return m_LastEnqueueTime;} |
66 | 65 |
67 const Time& getTime() const { return m_time; } 68 void setTime(const Time& new_time) { m_time = new_time; } 69private: 70 // Private Methods | 66 const Time& getTime() const { return m_time; } 67 void setTime(const Time& new_time) { m_time = new_time; } |
71 | 68 |
72 // Data Members (m_ prefix) 73 Time m_time; 74 Time m_LastEnqueueTime; // my last enqueue time 75 int m_DelayedCycles; // my delayed cycles 76 | 69 private: 70 Time m_time; 71 Time m_LastEnqueueTime; // my last enqueue time 72 int m_DelayedCycles; // my delayed cycles |
77}; 78 | 73}; 74 |
79// Output operator declaration 80std::ostream& operator<<(std::ostream& out, const Message& obj); 81 82// ******************* Definitions ******************* 83 84// Output operator definition 85extern inline 86std::ostream& operator<<(std::ostream& out, const Message& obj) | 75inline std::ostream& 76operator<<(std::ostream& out, const Message& obj) |
87{ | 77{ |
88 obj.print(out); 89 out << std::flush; 90 return out; | 78 obj.print(out); 79 out << std::flush; 80 return out; |
91} 92 | 81} 82 |
93#endif //MESSAGE_H | 83#endif // __MEM_RUBY_SLICC_INTERFACE_MESSAGE_HH__ |