diff options
author | Brad Beckmann <Brad.Beckmann@amd.com> | 2015-07-20 09:15:18 -0500 |
---|---|---|
committer | Brad Beckmann <Brad.Beckmann@amd.com> | 2015-07-20 09:15:18 -0500 |
commit | 8a54adc2a55c9858cb536fac3a9cd92bc47ce778 (patch) | |
tree | ad482d891914407192f8aa568711baecfe92e83c /src/mem/slicc/ast/StateDeclAST.py | |
parent | 0d00cbc97b47344e12e9eb943efb9ca29db66898 (diff) | |
download | gem5-8a54adc2a55c9858cb536fac3a9cd92bc47ce778.tar.xz |
slicc: enable overloading in functions not in classes
For many years the slicc symbol table has supported overloaded functions in
external classes. This patch extends that support to functions that are not
part of classes (a.k.a. no parent). For example, this support allows slicc
to understand that mapAddressToRange is overloaded and the NodeID is an
optional parameter.
Diffstat (limited to 'src/mem/slicc/ast/StateDeclAST.py')
-rw-r--r-- | src/mem/slicc/ast/StateDeclAST.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mem/slicc/ast/StateDeclAST.py b/src/mem/slicc/ast/StateDeclAST.py index 2bca54d09..f0a0b97d3 100644 --- a/src/mem/slicc/ast/StateDeclAST.py +++ b/src/mem/slicc/ast/StateDeclAST.py @@ -64,7 +64,8 @@ class StateDeclAST(DeclAST): func_id = "%s_to_string" % t.c_ident pairs = { "external" : "yes" } - func = Func(self.symtab, func_id, self.location, + func = Func(self.symtab, func_id + "_" + + t.ident, func_id, self.location, self.symtab.find("std::string", Type), [ t ], [], "", pairs) self.symtab.newSymbol(func) @@ -73,7 +74,8 @@ class StateDeclAST(DeclAST): func_id = "%s_to_permission" % t.c_ident pairs = { "external" : "yes" } - func = Func(self.symtab, func_id, self.location, + func = Func(self.symtab, func_id + "_" + + t.ident, func_id, self.location, self.symtab.find("AccessPermission", Type), [ t ], [], "", pairs) self.symtab.newSymbol(func) |