AbstractEntry.hh (6882:898047a3672c) AbstractEntry.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#ifndef AbstractEntry_H
31#define AbstractEntry_H
29#ifndef __MEM_RUBY_SLICC_INTERFACE_ABSTRACTENTRY_HH__
30#define __MEM_RUBY_SLICC_INTERFACE_ABSTRACTENTRY_HH__
32
31
33#include "mem/ruby/common/Global.hh"
34#include "mem/ruby/common/Address.hh"
32#include "mem/ruby/common/Address.hh"
33#include "mem/ruby/common/Global.hh"
35#include "mem/protocol/AccessPermission.hh"
36
37class DataBlock;
38
34#include "mem/protocol/AccessPermission.hh"
35
36class DataBlock;
37
39class AbstractEntry {
40public:
41 // Constructors
42 AbstractEntry();
38class AbstractEntry
39{
40 public:
41 AbstractEntry();
42 virtual ~AbstractEntry() = 0;
43
43
44 // Destructor, prevent it from instantiation
45 virtual ~AbstractEntry() = 0;
44 // The methods below are those called by ruby runtime, add when it
45 // is absolutely necessary and should all be virtual function.
46 virtual DataBlock& getDataBlk() = 0;
46
47
47 // Public Methods
48
49 // The methods below are those called by ruby runtime, add when it is
50 // absolutely necessary and should all be virtual function.
51 virtual DataBlock& getDataBlk() = 0;
52
53
54 virtual void print(ostream& out) const = 0;
55
48 virtual void print(ostream& out) const = 0;
56};
57
49};
50
58// Output operator declaration
59ostream& operator<<(ostream& out, const AbstractEntry& obj);
60
61// ******************* Definitions *******************
62
63// Output operator definition
64extern inline
65ostream& operator<<(ostream& out, const AbstractEntry& obj)
51inline ostream&
52operator<<(ostream& out, const AbstractEntry& obj)
66{
53{
67 obj.print(out);
68 out << flush;
69 return out;
54 obj.print(out);
55 out << flush;
56 return out;
70}
71
57}
58
72#endif //AbstractEntry_H
59#endif // __MEM_RUBY_SLICC_INTERFACE_ABSTRACTENTRY_HH__
73
60