diff options
Diffstat (limited to 'interpreter.py')
-rwxr-xr-x | interpreter.py | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/interpreter.py b/interpreter.py index 82bcf52..cb9b4d2 100755 --- a/interpreter.py +++ b/interpreter.py @@ -114,6 +114,17 @@ class Interpreter(): self.variables = {} self.environment = environment self.static_linker = self.environment.detect_static_linker() + self.build_func_dict() + + def build_func_dict(self): + self.funcs = {'project' : self.func_project, + 'message' : self.func_message, + 'language': self.func_language, + 'executable': self.func_executable, + 'find_dep' : self.func_find_dep, + 'static_library' : self.func_static_lib, + 'shared_library' : self.func_shared_lib + } def get_project(self): return self.project @@ -222,20 +233,8 @@ class Interpreter(): def function_call(self, node): func_name = node.get_function_name() args = self.reduce_arguments(node.arguments) - if func_name == 'project': - return self.func_project(node, args) - elif func_name == 'message': - return self.func_message(node, args) - elif func_name == 'language': - return self.func_language(node, args) - elif func_name == 'executable': - return self.func_executable(node, args) - elif func_name == 'find_dep': - return self.func_find_dep(node, args) - elif func_name == 'static_library': - return self.func_static_lib(node, args) - elif func_name == 'shared_library': - return self.func_shared_lib(node, args) + if func_name in self.funcs: + return self.funcs[func_name](node, args) else: raise InvalidCode('Unknown function "%s".' % func_name) |