c880e7d69d
either changing assert(...) or BOOST_ASSERT(...) to BOOST_TEST (in my code only) or adding "return boost::report_errors();" where it was clearly missing (and a pure bug, in anyone's code). or changing BOOST_TEST to BOOST_CHECK where the integer library was clearly using Boost.Test and not returning report_errors(). [SVN r37063]
92 lines
1.8 KiB
C++
92 lines
1.8 KiB
C++
// Copyright David Abrahams 2004. Distributed under the Boost
|
|
// Software License, Version 1.0. (See accompanying
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
#include <boost/python/module.hpp>
|
|
#define BOOST_ENABLE_ASSERT_HANDLER
|
|
#include <boost/assert.hpp>
|
|
|
|
#include <boost/python/def.hpp>
|
|
#include <boost/python/class.hpp>
|
|
#include <boost/python/dict.hpp>
|
|
#include <exception>
|
|
#include <string>
|
|
|
|
using namespace boost::python;
|
|
|
|
object new_dict()
|
|
{
|
|
return dict();
|
|
}
|
|
|
|
object data_dict()
|
|
{
|
|
dict tmp1;
|
|
tmp1["key1"] = "value1";
|
|
|
|
dict tmp2;
|
|
tmp2["key2"] = "value2";
|
|
tmp1[1] = tmp2;
|
|
return tmp1;
|
|
}
|
|
|
|
object dict_from_sequence(object sequence)
|
|
{
|
|
return dict(sequence);
|
|
}
|
|
|
|
object dict_keys(dict data)
|
|
{
|
|
return data.keys();
|
|
}
|
|
|
|
object dict_values(dict data)
|
|
{
|
|
return data.values();
|
|
}
|
|
|
|
object dict_items(dict data)
|
|
{
|
|
return data.items();
|
|
}
|
|
|
|
void work_with_dict(dict data1, dict data2)
|
|
{
|
|
if (!data1.has_key("k1")) {
|
|
throw std::runtime_error("dict does not have key 'k1'");
|
|
}
|
|
data1.update(data2);
|
|
}
|
|
|
|
void test_templates(object print)
|
|
{
|
|
std::string key = "key";
|
|
|
|
dict tmp;
|
|
tmp[1] = "a test string";
|
|
print(tmp.get(1));
|
|
//print(tmp[1]);
|
|
tmp[1.5] = 13;
|
|
print(tmp.get(1.5));
|
|
print(tmp.get(44));
|
|
print(tmp);
|
|
print(tmp.get(2,"default"));
|
|
print(tmp.setdefault(3,"default"));
|
|
|
|
BOOST_ASSERT(!tmp.has_key(key));
|
|
//print(tmp[3]);
|
|
}
|
|
|
|
BOOST_PYTHON_MODULE(dict_ext)
|
|
{
|
|
def("new_dict", new_dict);
|
|
def("data_dict", data_dict);
|
|
def("dict_keys", dict_keys);
|
|
def("dict_values", dict_values);
|
|
def("dict_items", dict_items);
|
|
def("dict_from_sequence", dict_from_sequence);
|
|
def("work_with_dict", work_with_dict);
|
|
def("test_templates", test_templates);
|
|
}
|
|
|
|
#include "module_tail.cpp"
|