aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-10-05 20:47:17 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-10-14 19:10:22 +0300
commita16bea59386b8f10442333f55c8d511ca4b724d6 (patch)
tree28535ecacfaad37c77cde50aa8a629d65b2bba2a /interpreter.py
parentd952812b1bddd2e4a7c0dd60da5ac17757182cee (diff)
downloadmeson-a16bea59386b8f10442333f55c8d511ca4b724d6.zip
meson-a16bea59386b8f10442333f55c8d511ca4b724d6.tar.gz
meson-a16bea59386b8f10442333f55c8d511ca4b724d6.tar.bz2
More variable introspection.
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py
index 9885932..82fdb74 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -910,6 +910,8 @@ class Interpreter():
'pkgconfig_gen' : self.func_pkgconfig_gen,
'vcs_tag' : self.func_vcs_tag,
'set_variable' : self.func_set_variable,
+ 'is_variable' : self.func_is_variable,
+ 'get_variable' : self.func_get_variable,
'import' : self.func_import,
'files' : self.func_files,
'declare_dependency': self.func_declare_dependency,
@@ -1008,6 +1010,29 @@ class Interpreter():
value = self.to_native(args[1])
self.set_variable(varname, value)
+ @noKwargs
+ def func_get_variable(self, node, args, kwargs):
+ if len(args)<1 or len(args)>2:
+ raise InvalidCode('Get_variable takes one or two arguments.')
+ varname = args[0]
+ if not isinstance(varname, str):
+ raise InterpreterException('First argument must be a string.')
+ try:
+ return self.variables[varname]
+ except KeyError:
+ pass
+ if len(args) == 2:
+ return args[1]
+ raise InterpreterException('Tried to get unknown variable "%s".' % varname)
+
+ @stringArgs
+ @noKwargs
+ def func_is_variable(self, node, args, kwargs):
+ if len(args) != 1:
+ raise InvalidCode('Is_variable takes two arguments.')
+ varname = args[0]
+ return varname in self.variables
+
@stringArgs
@noKwargs
def func_import(self, node, args, kwargs):