summaryrefslogtreecommitdiff
path: root/project2/common/variables-modparam.cpp
blob: f17cae52aec236a8bf08b8a2010bc21bde294722 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <pch.hpp>
#include "variables.h"
#include "xmlObjectLoader.h"
#include "xmlStorage.h"
#include "appEngine.h"

/// Variable implementation to access call parameters
class VariableParam : public VariableImplDyn {
	public:
		VariableParam(ScriptNodePtr e) :
			VariableImplDyn(e),
			name(e->value("name").as<Glib::ustring>())
		{
		}
		VariableType value() const
		{
			try {
				return ApplicationEngine::getCurrent()->env()->getParamQuery(name);
			}
			catch (ParamNotFound) {
				if (!defaultValue) {
					throw;
				}
				return (*defaultValue)();
			}
		}
	private:
		const Glib::ustring name;
};
DECLARE_COMPONENT_LOADER("param", VariableParam, VariableLoader);