IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

[Boost.Python] conversions automatique des templates


Sujet :

Boost C++

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 60
    Points : 71
    Points
    71
    Par défaut [Boost.Python] conversions automatique des templates
    Bonjour,
    Je voudrais exporter la classe template vector3d vers python:
    • j'ai traduit le code de la classe en python
    • Je voudrais rendre le classe python convertible en classe C++ et vice-versa
    en C++ et je voudrais la faire convertible en liste python (et vice-versa).
    Je sais comment rendre une classe basiques convertible mais j'ai un problème avec lec templates.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /* simplifié : */
    template<class T>
    class vector3d
    {
    public:
        T X, Y, Z;
     
        vector3d(): X(0), Y(0), Z(0) {}
     
        ~vector3d() {}
     
        T getLength()
        {
            return std::sqrt(X*X+Y*Y+Z*Z);
        }
    };
    et en python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class vector3d
    	def __init__(self):
    		self.X = self.Y = self.Z = 0
     
    	def getLength(self):
    		return math.sqrt(self.X**2 + self.Y**2 + self.Z**2)
    Je voudrais que le boost.python reconnaisse la classe python et la convertisse automatiquement selon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    template<class T>
    vector3d<T> &from_python(boost::python::object &obj)
    {
    	namespace bp = boost::python;
    	vector3d<T> vec;
    	vec.X = bp::extract<T>(obj.attr("X"))();
    	vec.Y = bp::extract<T>(obj.attr("Y"))();
    	vec.Z = bp::extract<T>(obj.attr("Z"))();
    	return vec;
    }
    Merci.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 60
    Points : 71
    Points
    71
    Par défaut
    Finalement,
    boost.python ne gère pas les templates, il faut énumérer les types un à un.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boost.python : générer les conversions to_python pour des classes abstraites
    Par Blustuff dans le forum Interfaçage autre langage
    Réponses: 2
    Dernier message: 02/08/2011, 11h08
  2. Réponses: 0
    Dernier message: 02/04/2011, 14h04
  3. Réponses: 3
    Dernier message: 21/10/2009, 19h28
  4. Saisie des prix HT conversion automatique et vice et versa
    Par marcandre dans le forum Développement
    Réponses: 1
    Dernier message: 31/03/2009, 10h58
  5. Conversion automatique de tiffs en jpg/gif
    Par Davenico dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/07/2003, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo