diff options
author | Josh Blum <josh@joshknows.com> | 2010-03-11 18:37:34 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-03-11 18:37:34 -0800 |
commit | daed43a8a873ad5cc16ac8a3eb6db5a8fe126fa5 (patch) | |
tree | 72286b6649af0bf99e84edca08b584cb2e6af6ae /host/lib/wax.cpp | |
parent | 9c0fb5e15da3c8ccbc1c8537671703411b210fcf (diff) | |
download | uhd-daed43a8a873ad5cc16ac8a3eb6db5a8fe126fa5.tar.gz uhd-daed43a8a873ad5cc16ac8a3eb6db5a8fe126fa5.tar.bz2 uhd-daed43a8a873ad5cc16ac8a3eb6db5a8fe126fa5.zip |
Cleaned up the gain handler (thing that gets and sets wildcard gains)
and made use of it in the dboard manager so it intercepts the sets and gets.
While doing this, fixed something with nested links in wax obj.
Added some useful macros and templates to the utils.
Diffstat (limited to 'host/lib/wax.cpp')
-rw-r--r-- | host/lib/wax.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/host/lib/wax.cpp b/host/lib/wax.cpp index c08398c50..0348d9a66 100644 --- a/host/lib/wax.cpp +++ b/host/lib/wax.cpp @@ -36,7 +36,11 @@ public: link_args_t(const wax::obj *obj_ptr) : _obj_ptr(obj_ptr){ /* NOP */ } - wax::obj & operator()(void){ + wax::obj & operator()(void) const{ + //recursively resolve link args to get at original pointer + if (_obj_ptr->type() == typeid(link_args_t)){ + return wax::cast<link_args_t>(*_obj_ptr)(); + } return *const_cast<wax::obj *>(_obj_ptr); } private: @@ -56,10 +60,10 @@ public: proxy_args_t(const wax::obj *obj_ptr, const wax::obj &key) : _key(key){ _obj_link = obj_ptr->get_link(); } - wax::obj & operator()(void){ + wax::obj & operator()(void) const{ return wax::cast<link_args_t>(_obj_link)(); } - const wax::obj & key(void){ + const wax::obj & key(void) const{ return _key; } private: |