8 #ifndef PARAM_PYBIND_HH_ 9 #define PARAM_PYBIND_HH_ 25 if( isinstance< none >( an_object ) )
29 else if( isinstance< bool_ >( an_object ) )
33 else if( isinstance< int_ >( an_object ) )
37 else if( isinstance< float_ >( an_object ) )
41 else if( isinstance< str >( an_object ) )
45 else if( isinstance< list >( an_object ) )
49 for(
auto an_item = an_object.
begin(); an_item != an_object.
end(); ++an_item )
55 else if( isinstance< dict >( an_object ) )
59 const dict& a_dict =
static_cast< const dict&
>( an_object );
60 for(
auto an_item = a_dict.
begin(); an_item != a_dict.
end(); ++an_item )
69 std::replace( new_key.begin(), new_key.end(),
'_',
'-' );
71 the_return_arr.
add( new_key,
to_param( static_cast< const object& >(an_item->second) ) );
75 throw scarab::error() <<
"Unknown python type cannot be converted to param";
101 to_return.append(
to_python( *an_item ) );
111 std::string new_key = an_item.name();
112 if ( underscore_keys )
114 std::replace( new_key.begin(), new_key.end(),
'-',
'_' );
116 to_return[ new_key.c_str() ] =
to_python( *an_item );
120 throw scarab::error() <<
"Unknown param type cannot be converted to Python";
125 std::list< std::string > all_members;
127 all_members.push_back(
"to_param" );
132 "Convert native python types to a param structure." );
135 all_members.push_back(
"Param" );
137 .def( pybind11::init< >() )
138 .def( pybind11::init< scarab::param_value >() )
152 "returns Param object as a ParamArray" )
156 "returns Param object as ParamNode" )
160 "returns Param object as ParamValue" )
165 "recursively converts param object to native python data structure" )
iterator end() const
Return a sentinel which ends iteration.
virtual bool is_value() const
bool isinstance< object >(handle obj)
pybind11::object to_python(const scarab::param &a_param, bool underscore_keys=false)
glibc defines I as a macro which breaks things, e.g., boost template names
boost::indirect_iterator< param_array_contents::const_iterator, const param > param_array_const_iterator
std::list< std::string > export_param(pybind11::module &mod)
Wrapper for Python extension modules.
virtual bool is_null() const
detail::dict_iterator end() const
virtual bool is_array() const
scarab::param_ptr_t to_param(const pybind11::object &an_object, bool hyphenate_keys=false)
virtual bool is_node() const
std::unique_ptr< param > param_ptr_t
detail::enable_if_t<!detail::move_never< T >::value, T > move(object &&obj)
virtual std::string to_string() const
T cast(const handle &handle)
void push_back(const param &a_value)
bool add(const std::string &a_name, const param &a_value)
std::string as_string() const
detail::dict_iterator begin() const
bool typename Extra class_ & def(const char *name_, Func &&f, const Extra &... extra)