summaryrefslogtreecommitdiff
path: root/src/mem/slicc/symbols/Type.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/slicc/symbols/Type.py')
-rw-r--r--src/mem/slicc/symbols/Type.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/mem/slicc/symbols/Type.py b/src/mem/slicc/symbols/Type.py
index d9bd85c01..2afd9958c 100644
--- a/src/mem/slicc/symbols/Type.py
+++ b/src/mem/slicc/symbols/Type.py
@@ -283,7 +283,16 @@ $klass ${{self.c_ident}}$parent
code('}')
# create a clone member
- code('''
+ if self.isMessage:
+ code('''
+MsgPtr
+clone() const
+{
+ return std::shared_ptr<Message>(new ${{self.c_ident}}(*this));
+}
+''')
+ else:
+ code('''
${{self.c_ident}}*
clone() const
{
@@ -391,6 +400,7 @@ operator<<(std::ostream& out, const ${{self.c_ident}}& obj)
*/
#include <iostream>
+#include <memory>
#include "mem/protocol/${{self.c_ident}}.hh"
#include "mem/ruby/common/Global.hh"