dict.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 92 行

CPP
92
字号
// 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"

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?