sc_object.cc (12940:f191f383f3bf) | sc_object.cc (12950:af1f0b5e8dfb) |
---|---|
1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright --- 13 unchanged lines hidden (view full) --- 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 * Authors: Gabe Black 28 */ 29 | 1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright --- 13 unchanged lines hidden (view full) --- 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * 27 * Authors: Gabe Black 28 */ 29 |
30#include <vector> 31 |
|
30#include "base/logging.hh" | 32#include "base/logging.hh" |
33#include "systemc/core/object.hh" |
|
31#include "systemc/ext/core/sc_object.hh" 32 33namespace sc_core 34{ 35 | 34#include "systemc/ext/core/sc_object.hh" 35 36namespace sc_core 37{ 38 |
39namespace 40{ 41 42std::vector<sc_object *> top_level_objects; 43 44} // anonymous namespace 45 |
|
36const char * 37sc_object::name() const 38{ | 46const char * 47sc_object::name() const 48{ |
39 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 40 return "sc_object"; | 49 return _gem5_object->name(); |
41} 42 43const char * 44sc_object::basename() const 45{ | 50} 51 52const char * 53sc_object::basename() const 54{ |
46 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 47 return "sc_object"; | 55 return _gem5_object->basename(); |
48} 49 | 56} 57 |
50const char * 51sc_object::kind() const 52{ 53 return "sc_object"; 54} 55 | |
56void 57sc_object::print(std::ostream &out) const 58{ | 58void 59sc_object::print(std::ostream &out) const 60{ |
59 warn("%s not implemented.\n", __PRETTY_FUNCTION__); | 61 _gem5_object->print(out); |
60} 61 62void 63sc_object::dump(std::ostream &out) const 64{ | 62} 63 64void 65sc_object::dump(std::ostream &out) const 66{ |
65 warn("%s not implemented.\n", __PRETTY_FUNCTION__); | 67 _gem5_object->dump(out); |
66} 67 68const std::vector<sc_object *> & 69sc_object::get_child_objects() const 70{ | 68} 69 70const std::vector<sc_object *> & 71sc_object::get_child_objects() const 72{ |
71 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 72 return *(const std::vector<sc_object *> *)nullptr; | 73 return _gem5_object->get_child_objects(); |
73} 74 75const std::vector<sc_event *> & 76sc_object::get_child_events() const 77{ | 74} 75 76const std::vector<sc_event *> & 77sc_object::get_child_events() const 78{ |
78 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 79 return *(const std::vector<sc_event *> *)nullptr; | 79 return _gem5_object->get_child_events(); |
80} 81 82sc_object * 83sc_object::get_parent_object() const 84{ | 80} 81 82sc_object * 83sc_object::get_parent_object() const 84{ |
85 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 86 return NULL; | 85 return _gem5_object->get_parent_object(); |
87} 88 89bool | 86} 87 88bool |
90sc_object::add_attribute(sc_attr_base &) | 89sc_object::add_attribute(sc_attr_base &attr) |
91{ | 90{ |
92 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 93 return false; | 91 return _gem5_object->add_attribute(attr); |
94} 95 96sc_attr_base * | 92} 93 94sc_attr_base * |
97sc_object::get_attribute(const std::string &) | 95sc_object::get_attribute(const std::string &name) |
98{ | 96{ |
99 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 100 return NULL; | 97 return _gem5_object->get_attribute(name); |
101} 102 103sc_attr_base * | 98} 99 100sc_attr_base * |
104sc_object::remove_attribute(const std::string &) | 101sc_object::remove_attribute(const std::string &name) |
105{ | 102{ |
106 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 107 return NULL; | 103 return _gem5_object->remove_attribute(name); |
108} 109 110void 111sc_object::remove_all_attributes() 112{ | 104} 105 106void 107sc_object::remove_all_attributes() 108{ |
113 warn("%s not implemented.\n", __PRETTY_FUNCTION__); | 109 return _gem5_object->remove_all_attributes(); |
114} 115 116int 117sc_object::num_attributes() const 118{ | 110} 111 112int 113sc_object::num_attributes() const 114{ |
119 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 120 return 0; | 115 return _gem5_object->num_attributes(); |
121} 122 123sc_attr_cltn & 124sc_object::attr_cltn() 125{ | 116} 117 118sc_attr_cltn & 119sc_object::attr_cltn() 120{ |
126 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 127 return *(sc_attr_cltn *)NULL; | 121 return _gem5_object->attr_cltn(); |
128} 129 130const sc_attr_cltn & 131sc_object::attr_cltn() const 132{ | 122} 123 124const sc_attr_cltn & 125sc_object::attr_cltn() const 126{ |
133 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 134 return *(sc_attr_cltn *)NULL; | 127 return _gem5_object->attr_cltn(); |
135} 136 137sc_simcontext * 138sc_object::simcontext() const 139{ | 128} 129 130sc_simcontext * 131sc_object::simcontext() const 132{ |
140 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 141 return nullptr; | 133 return _gem5_object->simcontext(); |
142} 143 144sc_object::sc_object() 145{ | 134} 135 136sc_object::sc_object() 137{ |
146 warn("%s not implemented.\n", __PRETTY_FUNCTION__); | 138 _gem5_object = new sc_gem5::Object(this); |
147} 148 149sc_object::sc_object(const char *name) 150{ | 139} 140 141sc_object::sc_object(const char *name) 142{ |
151 warn("%s not implemented.\n", __PRETTY_FUNCTION__); | 143 _gem5_object = new sc_gem5::Object(this, name); |
152} 153 | 144} 145 |
154sc_object::sc_object(const sc_object &arg) | 146sc_object::sc_object(const sc_object &other) |
155{ | 147{ |
156 warn("%s not implemented.\n", __PRETTY_FUNCTION__); | 148 _gem5_object = new sc_gem5::Object(this, *other._gem5_object); |
157} 158 159sc_object & | 149} 150 151sc_object & |
160sc_object::operator = (const sc_object &) | 152sc_object::operator = (const sc_object &other) |
161{ | 153{ |
154 *_gem5_object = *other._gem5_object; |
|
162 return *this; 163} 164 165sc_object::~sc_object() 166{ | 155 return *this; 156} 157 158sc_object::~sc_object() 159{ |
167 warn("%s not implemented.\n", __PRETTY_FUNCTION__); | 160 delete _gem5_object; |
168} 169 170const std::vector<sc_object *> & 171sc_get_top_level_objects() 172{ | 161} 162 163const std::vector<sc_object *> & 164sc_get_top_level_objects() 165{ |
173 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 174 return *(const std::vector<sc_object *> *)nullptr; | 166 return sc_gem5::topLevelObjects; |
175} 176 177sc_object * | 167} 168 169sc_object * |
178sc_find_object(const char *) | 170sc_find_object(const char *name) |
179{ | 171{ |
180 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 181 return NULL; | 172 return sc_gem5::findObject(name); |
182} 183 184} // namespace sc_core | 173} 174 175} // namespace sc_core |