12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // 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"
|