SWIG - конвертировать перечисление C ++ в перечисление Python

Я работаю, чтобы перевести перечисление класса C ++ в перечисление python с помощью swig. У меня есть следующая реализация в файле example.h.

namespace colors{ 
 enum class Color{
    RED = 0,
    BLUE = 1,
    GREEN = 2
 };
}

Мой интерфейсный файл Swig

    %module api
%{
#include "example.h"
%}
%include "example.h"

Но после использования инструмента Swig интерфейс обеспечивает следующее использование

import pywarp_example as impl 
impl.RED

Возникает вопрос: можно ли получить доступ к enum, как показано ниже, как мы используем в python?

impl.Color.RED Or impl.Color.RED.value
4 голоса | спросил Arslan 15 Maypm18 2018, 18:02:32

2 ответа


0
В отличие от вашего примера, SWIG 3.0.12 обернул бы ваш ---- +: = 0 =: + ---- пример как ---- +: = 1 =: + ---- , ---- +: =2 =: + ---- и ---- +: = 3 =: + ---- .Вот пример, который добавляет некоторый дополнительный код Python для переназначения этого шаблона в ---- +: = 4 =: + ---- , ---- +: = 5 =: + ---- , и ---- +: = 6 =: + ---- :---- +: = 7 =: + ---- добавляется в часть Python оболочки SWIG.После загрузки расширения Python этот код запускается.Он собирает и удаляет переменные, начиная с префикса_ , переименовывает их без префикса_ , затем создает класс с именем префикс с новыми переменными в качестве переменных класса.Пример использования:
ответил Mark Tolonen 15 Maypm18 2018, 20:24:01
0
C ++ Enum может быть преобразован в Python Enum с помощью этого скрипта.
ответил Arslan 16 Mayam18 2018, 10:44:22

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132