Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/python/test/dict.cpp @ 29

Last change on this file since 29 was 29, checked in by landauf, 16 years ago

updated boost from 1_33_1 to 1_34_1

File size: 1.8 KB
Line 
1// Copyright David Abrahams 2004. Distributed under the Boost
2// Software License, Version 1.0. (See accompanying
3// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4#include <boost/python/module.hpp>
5#define BOOST_ENABLE_ASSERT_HANDLER
6#include <boost/assert.hpp>
7
8#include <boost/python/def.hpp>
9#include <boost/python/class.hpp>
10#include <boost/python/dict.hpp>
11#include <exception>
12#include <string>
13
14using namespace boost::python;
15
16object new_dict()
17{
18    return dict();
19}
20
21object data_dict()
22{
23    dict tmp1;
24    tmp1["key1"] = "value1";
25
26    dict tmp2;
27    tmp2["key2"] = "value2";
28    tmp1[1] = tmp2;
29    return tmp1;
30}
31
32object dict_from_sequence(object sequence)
33{
34    return dict(sequence);
35}
36
37object dict_keys(dict data)
38{
39    return data.keys();
40}
41
42object dict_values(dict data)
43{
44    return data.values();
45}
46
47object dict_items(dict data)
48{
49    return data.items();
50}
51
52void work_with_dict(dict data1, dict data2)
53{
54    if (!data1.has_key("k1")) {
55        throw std::runtime_error("dict does not have key 'k1'");
56    }
57    data1.update(data2);
58}
59
60void test_templates(object print)
61{
62    std::string key = "key";
63   
64    dict tmp;
65    tmp[1] = "a test string";
66    print(tmp.get(1));
67    //print(tmp[1]);
68    tmp[1.5] = 13;
69    print(tmp.get(1.5));
70    print(tmp.get(44));
71    print(tmp);
72    print(tmp.get(2,"default"));
73    print(tmp.setdefault(3,"default"));
74
75    BOOST_ASSERT(!tmp.has_key(key));
76    //print(tmp[3]);
77}
78   
79BOOST_PYTHON_MODULE(dict_ext)
80{
81    def("new_dict", new_dict);
82    def("data_dict", data_dict);
83    def("dict_keys", dict_keys);
84    def("dict_values", dict_values);
85    def("dict_items", dict_items);
86    def("dict_from_sequence", dict_from_sequence);
87    def("work_with_dict", work_with_dict);
88    def("test_templates", test_templates);
89}
90
91#include "module_tail.cpp"
Note: See TracBrowser for help on using the repository browser.