Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

boost/python/enum.hpp

Boost , Boost.Python Reference Manual , Chapter 2. High Level Components

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

определяет интерфейс, через который пользователи выставляют свои типы перечисления C++ на Python. Он объявляет шаблон класса<enum_>, который параметризуется по типу перечисления, подвергаемому воздействию.

Создает класс Python, полученный из типа Python<int>, который связан с типом C++, переданным в качестве его первого параметра.

namespace boost { namespace python
{
  template <class T>
  class enum_ : public object
  {
    enum_(char const* name, char const* doc = 0);
    enum_<T>& value(char const* name, T);
    enum_<T>& export_values();
  };
}}
enum_(char const* name, char const* doc=0);

Requires

Оригинальное название:ntbs, что соответствует правилам именования идентификаторов Python.

Effects

Конструирует<enum_>объект, содержащий тип расширения Python, полученный из<int>, который называется<name>. Названный атрибуттекущего объемасвязан с новым типом расширения.

enum_<T>& value(char const* name, T x);

Requires

Оригинальное название:ntbs, что соответствует правилам именования идентификаторов Python.

Effects

Добавляет экземпляр обернутого типа перечисления со значением x в словарь типа в качестве названного атрибута.

Returns

<*this>

enum_<T>& export_values();

Effects

Устанавливает атрибуты втекущем объемес теми же именами и значениями, что и все значения перечисления, выставленные до сих пор путем вызова значения ().

Returns

<*this>

Определение модуля C++

#include <boost/python/enum.hpp>
#include <boost/python/def.hpp>
#include <boost/python/module.hpp>
using namespace boost::python;
enum color { red = 1, green = 2, blue = 4 };
color identity_(color x) { return x; }
BOOST_PYTHON_MODULE(enums)
{
  enum_<color>("color")
    .value("red", red)
    .value("green", green)
    .export_values()
    .value("blue", blue)
    ;
  def("identity", identity_);
}

Интерактивный Python:

>>> from enums import *
>>> identity(red)
enums.color.red
>>> identity(color.red)
enums.color.red
>>> identity(green)
enums.color.green
>>> identity(color.green)
enums.color.green
>>> identity(blue)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
NameError: name 'blue' is not defined
>>> identity(color.blue)
enums.color.blue
>>> identity(color(1))
enums.color.red
>>> identity(color(2))
enums.color.green
>>> identity(color(3))
enums.color(3)
>>> identity(color(4))
enums.color.blue
>>> identity(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: bad argument type for built-in operation

PrevUpHomeNext

Статья boost/python/enum.hpp раздела Boost.Python Reference Manual Chapter 2. High Level Components может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 2. High Level Components ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 23:50:13/0.0063209533691406/0