aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-01-06 18:48:16 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-01-06 18:48:16 +0200
commitc8fee3d4172f39da5bb05077a57a57284825007e (patch)
tree32584247a6818f58b126b347624752f118e13a50
parentb9f3ab1c4865f9cba3923b661d999ad75d60d3ee (diff)
downloadmeson-c8fee3d4172f39da5bb05077a57a57284825007e.zip
meson-c8fee3d4172f39da5bb05077a57a57284825007e.tar.gz
meson-c8fee3d4172f39da5bb05077a57a57284825007e.tar.bz2
Call functions through dictionary rather than if/else maze.
-rwxr-xr-xinterpreter.py27
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)