summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-11-07 16:53:47 -0800
committerJosh Blum <josh@joshknows.com>2011-11-07 16:53:47 -0800
commit902818f50bbd486138a7d4cd2ce9ba3661f4a732 (patch)
treecec3681c04d5acc3e74924e4c255f1ea81201d81
parent9d4350d74ea926999780ded0016c5ad51874ebec (diff)
downloaduhd-902818f50bbd486138a7d4cd2ce9ba3661f4a732.tar.gz
uhd-902818f50bbd486138a7d4cd2ce9ba3661f4a732.tar.bz2
uhd-902818f50bbd486138a7d4cd2ce9ba3661f4a732.zip
uhd: removed wax and props utils
-rw-r--r--host/include/uhd/CMakeLists.txt1
-rw-r--r--host/include/uhd/deprecated.hpp170
-rw-r--r--host/include/uhd/utils/CMakeLists.txt1
-rw-r--r--host/include/uhd/utils/props.hpp81
-rw-r--r--host/include/uhd/wax.hpp2
-rw-r--r--host/lib/deprecated.cpp152
-rw-r--r--host/lib/usrp/dboard/db_wbx_common.hpp1
-rw-r--r--host/lib/usrp/dboard/db_wbx_simple.cpp4
-rw-r--r--host/lib/usrp/gps_ctrl.cpp3
-rw-r--r--host/lib/utils/CMakeLists.txt1
-rw-r--r--host/lib/utils/props.cpp40
11 files changed, 3 insertions, 453 deletions
diff --git a/host/include/uhd/CMakeLists.txt b/host/include/uhd/CMakeLists.txt
index 2b0c6ec14..1df04d577 100644
--- a/host/include/uhd/CMakeLists.txt
+++ b/host/include/uhd/CMakeLists.txt
@@ -32,7 +32,6 @@ INSTALL(FILES
property_tree.hpp
stream.hpp
version.hpp
- wax.hpp
DESTINATION ${INCLUDE_DIR}/uhd
COMPONENT headers
)
diff --git a/host/include/uhd/deprecated.hpp b/host/include/uhd/deprecated.hpp
index d918836f1..95cce58e9 100644
--- a/host/include/uhd/deprecated.hpp
+++ b/host/include/uhd/deprecated.hpp
@@ -3,176 +3,6 @@
//----------------------------------------------------------------------
//
-// Copyright 2010-2011 Ettus Research LLC
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-
-#ifndef INCLUDED_WAX_HPP
-#define INCLUDED_WAX_HPP
-
-#include <uhd/config.hpp>
-#include <uhd/exception.hpp>
-#include <boost/any.hpp>
-#include <typeinfo>
-#include <string>
-
-/*!
- * WAX - it's a metaphor!
- *
- * The WAX framework allows an object to have generic/anyobj properties.
- * These properties can be addressed through generic/anyobj identifiers.
- *
- * The WAX object itself is an anytype container much like boost::any.
- * To retrieve the value of the appropriate type, use my_obj.as<type>().
- *
- * Proprties may be referenced though the [] overloaded operator.
- * The [] operator returns a special proxy that allows for assigment.
- * Also, the [] operators may be chained as in the folowing examples:
- * my_obj[prop1][prop2][prop3] = value;
- * value = my_obj[prop1][prop2][prop3].as<type>();
- *
- * Property nesting occurs when a WAX object gets another object's link.
- * This special link is obtained through a call to my_obj.get_link().
- *
- * Note: Do not put a class derived from wax::obj into an stl container.
- * MSVC will compile the code, but the binaries will crash at runtime.
- * Rather, use pointers or smart pointers to instances of the derived class.
- */
-
-namespace wax{
-
- /*!
- * WAX object base class:
- *
- * A wax obj has two major purposes:
- * 1) to act as a polymorphic container, just like boost any
- * 2) to provide a nested set/get properties interface
- *
- * Internally, the polymorphic container is handled by a boost any.
- * For properties, a subclass should override the set and get methods.
- * For property nesting, wax obj subclasses return special links
- * to other wax obj subclasses, and the api handles the magic.
- */
- class UHD_API obj{
- public:
-
- /*!
- * Default constructor:
- * The contents will be empty.
- */
- obj(void);
-
- /*!
- * Copy constructor:
- * The contents will be cloned.
- * \param o another wax::obj
- */
- obj(const obj &o);
-
- /*!
- * Templated any type constructor:
- * The contents can be anything.
- * Uses the boost::any to handle the magic.
- * \param o an object of any type
- */
- template<class T> obj(const T &o){
- _contents = o;
- }
-
- /*!
- * Destructor.
- */
- virtual ~obj(void);
-
- /*!
- * The chaining operator:
- * This operator allows access objs with properties.
- * A call to the [] operator will return a new proxy obj.
- * The proxy object is an obj with special proxy contents.
- * Assignment and casting can be used on this special object
- * to access the property referenced by the obj key.
- * \param key a key to identify a property within this obj
- * \return a special wax obj that proxies the obj and key
- */
- obj operator[](const obj &key);
-
- /*!
- * The assignment operator:
- * This operator allows for assignment of new contents.
- * In the special case where this obj contains a proxy,
- * the value will be set to the proxy's property reference.
- * \param val the new value to assign to the wax obj
- * \return a reference to this obj (*this)
- */
- obj & operator=(const obj &val);
-
- /*!
- * Get a link in the chain:
- * When a wax obj returns another wax obj as part of a get call,
- * the return value should be set to the result of this method.
- * Doing so will ensure chain-ability of the returned object.
- * \return an obj containing a valid link to a wax obj
- */
- obj get_link(void) const;
-
- /*!
- * Get the type of the contents of this obj.
- * \return a reference to the type_info
- */
- const std::type_info & type(void) const;
-
- /*!
- * Cast this obj into the desired type.
- * Usage: myobj.as<type>()
- *
- * \return an object of the desired type
- * \throw wax::bad_cast when the cast fails
- */
- template<class T> T as(void) const{
- try{
- return boost::any_cast<T>(resolve());
- }
- catch(const boost::bad_any_cast &e){
- throw uhd::type_error(std::string("") + "Cannot wax cast " + type().name() + " to " + typeid(T).name() + " " + e.what());
- }
- }
-
- private:
- //private interface (override in subclasses)
- virtual void get(const obj &, obj &);
- virtual void set(const obj &, const obj &);
-
- /*!
- * Resolve the contents of this obj.
- * In the case where this obj is a proxy,
- * the referenced property will be resolved.
- * Otherwise, just get the private contents.
- * \return a boost any type with contents
- */
- boost::any resolve(void) const;
-
- //private contents of this obj
- boost::any _contents;
-
- };
-
-} //namespace wax
-
-#endif /* INCLUDED_WAX_HPP */
-
-//
// Copyright 2010 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
diff --git a/host/include/uhd/utils/CMakeLists.txt b/host/include/uhd/utils/CMakeLists.txt
index 0bf98fb67..48b8db885 100644
--- a/host/include/uhd/utils/CMakeLists.txt
+++ b/host/include/uhd/utils/CMakeLists.txt
@@ -26,7 +26,6 @@ INSTALL(FILES
log.hpp
msg.hpp
pimpl.hpp
- props.hpp
safe_call.hpp
safe_main.hpp
static.hpp
diff --git a/host/include/uhd/utils/props.hpp b/host/include/uhd/utils/props.hpp
deleted file mode 100644
index 81737423a..000000000
--- a/host/include/uhd/utils/props.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// Copyright 2010-2011 Ettus Research LLC
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-
-#ifndef INCLUDED_UHD_UTILS_PROPS_HPP
-#define INCLUDED_UHD_UTILS_PROPS_HPP
-
-#include <uhd/config.hpp>
-#include <uhd/wax.hpp>
-#include <uhd/exception.hpp>
-#include <vector>
-#include <string>
-
-namespace uhd{
-
- //! The type for a vector of property names
- typedef std::vector<std::string> prop_names_t;
-
- /*!
- * A named prop struct holds a key and a name.
- * Allows properties to be sub-sectioned by name.
- */
- struct UHD_API named_prop_t{
- const wax::obj key;
- const std::string name;
-
- //! Convert the key to the specified type
- template<typename T> inline T as(void){
- return key.as<T>();
- }
-
- /*!
- * Utility function to convert generic key into a named prop.
- * If the key was already a named prop, the prop will be split.
- * Otherwise, the key will be the key, and the name will be used.
- * \param key a reference to the prop object
- * \param name a reference to the name object
- * \return a named property struct with key and name
- */
- static named_prop_t extract(
- const wax::obj &key, const std::string &name = ""
- );
-
- /*!
- * Create a new named prop from key and name.
- * \param key the property key
- * \param name the string name
- */
- named_prop_t(const wax::obj &key, const std::string &name);
- };
-
- /*!
- * Throw when getting a not-implemented or write-only property.
- * Throw-site information will be included with this error.
- */
- #define UHD_THROW_PROP_GET_ERROR() \
- throw uhd::key_error(UHD_THROW_SITE_INFO("cannot get this property"))
-
- /*!
- * Throw when setting a not-implemented or read-only property.
- * Throw-site information will be included with this error.
- */
- #define UHD_THROW_PROP_SET_ERROR() \
- throw uhd::key_error(UHD_THROW_SITE_INFO("cannot set this property"))
-
-} //namespace uhd
-
-#endif /* INCLUDED_UHD_UTILS_PROPS_HPP */
diff --git a/host/include/uhd/wax.hpp b/host/include/uhd/wax.hpp
deleted file mode 100644
index a55e5465d..000000000
--- a/host/include/uhd/wax.hpp
+++ /dev/null
@@ -1,2 +0,0 @@
-//The wax API has been deprecated in favor of the properties interface
-#include <uhd/deprecated.hpp>
diff --git a/host/lib/deprecated.cpp b/host/lib/deprecated.cpp
index b659d1be5..0fc751eeb 100644
--- a/host/lib/deprecated.cpp
+++ b/host/lib/deprecated.cpp
@@ -2,158 +2,6 @@
//-- deprecated interfaces below, to be removed when the API is changed
//----------------------------------------------------------------------
-//
-// Copyright 2010-2011 Ettus Research LLC
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-
-#include <uhd/wax.hpp>
-#include <uhd/exception.hpp>
-#include <boost/format.hpp>
-#include <stdexcept>
-
-/*!
- * The link args for internal use within this cpp file:
- *
- * It contains a link (in this case a pointer) to a wax object.
- * Only the methods in this file may create or parse link args.
- * The get_link method is the creator of a link args object.
- * The [] operator will resolve the link and make the [] call.
- *
- * TODO: register the link args with the wax obj that it links to.
- * That way, if the obj destructs, the link can be invalidated.
- * The operator() will throw, rather than dereferencing bad memory.
- */
-class link_args_t{
-public:
- link_args_t(const wax::obj *obj_ptr) : _obj_ptr(obj_ptr){
- /* NOP */
- }
- wax::obj & operator()(void) const{
- //recursively resolve link args to get at original pointer
- if (_obj_ptr->type() == typeid(link_args_t)){
- return _obj_ptr->as<link_args_t>()();
- }
- return *const_cast<wax::obj *>(_obj_ptr);
- }
-private:
- const wax::obj *_obj_ptr;
-};
-
-/*!
- * The proxy args for internal use within this cpp file:
- *
- * It contains a link and a key for setting/getting a property.
- * Only the methods in this file may create or parse proxy args.
- * Class methods have special handling for the case when the
- * wax obj contains an instance of the proxy args.
- */
-class proxy_args_t{
-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) const{
- return _obj_link.as<link_args_t>()();
- }
- const wax::obj & key(void) const{
- return _key;
- }
-private:
- wax::obj _obj_link;
- const wax::obj _key;
-};
-
-/***********************************************************************
- * Structors
- **********************************************************************/
-wax::obj::obj(void){
- /* NOP */
-}
-
-wax::obj::obj(const obj &o){
- _contents = o._contents;
-}
-
-wax::obj::~obj(void){
- /* NOP */
-}
-
-/***********************************************************************
- * Special Operators
- **********************************************************************/
-wax::obj wax::obj::operator[](const obj &key){
- if (_contents.type() == typeid(proxy_args_t)){
- obj val = resolve();
- //check if its a special link and call
- if (val.type() == typeid(link_args_t)){
- return val.as<link_args_t>()()[key];
- }
- //unknown obj
- throw uhd::type_error("cannot use [] on non wax::obj link");
- }
- else{
- return proxy_args_t(this, key);
- }
-}
-
-wax::obj & wax::obj::operator=(const obj &val){
- if (_contents.type() == typeid(proxy_args_t)){
- proxy_args_t proxy_args = boost::any_cast<proxy_args_t>(_contents);
- proxy_args().set(proxy_args.key(), val);
- }
- else{
- _contents = val._contents;
- }
- return *this;
-}
-
-/***********************************************************************
- * Public Methods
- **********************************************************************/
-wax::obj wax::obj::get_link(void) const{
- return link_args_t(this);
-}
-
-const std::type_info & wax::obj::type(void) const{
- return resolve().type();
-}
-
-/***********************************************************************
- * Private Methods
- **********************************************************************/
-boost::any wax::obj::resolve(void) const{
- if (_contents.type() == typeid(proxy_args_t)){
- obj val;
- proxy_args_t proxy_args = boost::any_cast<proxy_args_t>(_contents);
- proxy_args().get(proxy_args.key(), val);
- return val.resolve();
- }
- else{
- return _contents;
- }
-}
-
-void wax::obj::get(const obj &, obj &){
- throw uhd::type_error("Cannot call get on wax obj base class");
-}
-
-void wax::obj::set(const obj &, const obj &){
- throw uhd::type_error("Cannot call set on wax obj base class");
-}
-
#include <uhd/types/otw_type.hpp>
#include <uhd/types/io_type.hpp>
#include <boost/cstdint.hpp>
diff --git a/host/lib/usrp/dboard/db_wbx_common.hpp b/host/lib/usrp/dboard/db_wbx_common.hpp
index 3e41e04b7..e7eb3f31a 100644
--- a/host/lib/usrp/dboard/db_wbx_common.hpp
+++ b/host/lib/usrp/dboard/db_wbx_common.hpp
@@ -69,7 +69,6 @@
#include <uhd/types/ranges.hpp>
#include <uhd/types/sensors.hpp>
#include <uhd/utils/log.hpp>
-#include <uhd/utils/props.hpp>
#include <uhd/utils/static.hpp>
#include <uhd/usrp/dboard_base.hpp>
#include <boost/assign/list_of.hpp>
diff --git a/host/lib/usrp/dboard/db_wbx_simple.cpp b/host/lib/usrp/dboard/db_wbx_simple.cpp
index 1ac2a1704..f46ea70d1 100644
--- a/host/lib/usrp/dboard/db_wbx_simple.cpp
+++ b/host/lib/usrp/dboard/db_wbx_simple.cpp
@@ -36,9 +36,9 @@ using namespace boost::assign;
/***********************************************************************
* The WBX Simple dboard constants
**********************************************************************/
-static const prop_names_t wbx_tx_antennas = list_of("TX/RX");
+static const std::vector<std::string> wbx_tx_antennas = list_of("TX/RX");
-static const prop_names_t wbx_rx_antennas = list_of("TX/RX")("RX2");
+static const std::vector<std::string> wbx_rx_antennas = list_of("TX/RX")("RX2");
/***********************************************************************
* The WBX simple implementation
diff --git a/host/lib/usrp/gps_ctrl.cpp b/host/lib/usrp/gps_ctrl.cpp
index c645d2948..45fa1f39e 100644
--- a/host/lib/usrp/gps_ctrl.cpp
+++ b/host/lib/usrp/gps_ctrl.cpp
@@ -17,7 +17,6 @@
#include <uhd/usrp/gps_ctrl.hpp>
#include <uhd/utils/msg.hpp>
-#include <uhd/utils/props.hpp>
#include <uhd/exception.hpp>
#include <uhd/types/sensors.hpp>
#include <boost/algorithm/string.hpp>
@@ -121,7 +120,7 @@ public:
return sensor_value_t("GPS lock status", locked(), "locked", "unlocked");
}
else {
- UHD_THROW_PROP_GET_ERROR();
+ throw uhd::value_error("gps ctrl get_sensor unknown key: " + key);
}
}
diff --git a/host/lib/utils/CMakeLists.txt b/host/lib/utils/CMakeLists.txt
index fd3249099..19dde9a56 100644
--- a/host/lib/utils/CMakeLists.txt
+++ b/host/lib/utils/CMakeLists.txt
@@ -134,7 +134,6 @@ LIBUHD_APPEND_SOURCES(
${CMAKE_CURRENT_SOURCE_DIR}/log.cpp
${CMAKE_CURRENT_SOURCE_DIR}/msg.cpp
${CMAKE_CURRENT_SOURCE_DIR}/paths.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/props.cpp
${CMAKE_CURRENT_SOURCE_DIR}/static.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tasks.cpp
${CMAKE_CURRENT_SOURCE_DIR}/thread_priority.cpp
diff --git a/host/lib/utils/props.cpp b/host/lib/utils/props.cpp
deleted file mode 100644
index fc9f8e63f..000000000
--- a/host/lib/utils/props.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// Copyright 2010 Ettus Research LLC
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
-//
-
-#include <uhd/utils/props.hpp>
-
-using namespace uhd;
-
-named_prop_t::named_prop_t(
- const wax::obj &key,
- const std::string &name
-):
- key(key),
- name(name)
-{
- /* NOP */
-}
-
-named_prop_t named_prop_t::extract(
- const wax::obj &key,
- const std::string &name
-){
- if (key.type() == typeid(named_prop_t)){
- return key.as<named_prop_t>();
- }
- return named_prop_t(key, name);
-}