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

C++ Discussion :

Luabind et std::vector/list


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Par défaut Luabind et std::vector/list
    Bonjour,

    Je dois creer un jeux videos pour mon ecole et avec mon groupe nous avons decide de developper les IA en Lua.

    On a trouve plusieurs solutions pour appeler du Lua depuis le C++, et la meilleur est d'utiliser Luabind.
    On arrive a creer une instance d'une classe dans le C++ et l'envoyer au Lua (avec luabind::module pour definir la classe et luabind::globals pour envoyer l'instance).

    Notre probleme c'est qu'on arrive pas a envoyer/parcourir un std::vector ou un std::list en Lua.
    Sur la doc, il y a ceci : http://www.rasterbar.com/products/lu...n-stl-iterator

    Cela ne fonctionne pas.

    Nous avons aussi essayer de redefinir la std::list pour la lua :
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    luabind::module(L)
    [
    	luabind::class_< std::list<int> >("list")
    	.def(luabind::constructor<>())
    	.def("size", &std::list<int>::size)
    	.def("push_back", &std::list<int>::push_back)
    ];

    Et en lua, on arrive a utiliser size(), push_back() mais on voit pas du tout comment on peut parcourir la list.

    Est ce que quelqu'un a deja reussi a envoyer des conteneur de la STL au lua avec luabind ??

    Merci d'avance pour vos reponses.
    (desole pour les accents mais je suis en qwerty)

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2007
    Messages : 373
    Par défaut
    Qu'est ce qui ne fonctionne pas avec luabind::return_stl_iterator?

    L'exemple qui est donné dans la documentation de luabind::return_stl_iterator permet d'exposer dans Lua un std::vector/std::list qui serait membre d'une classe.

    Tu peux peut-être t'en inspirer pour faire un truc du genre (pas du tout testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    std::list<int>& list_iterate(std::list<int>* v) {
        return *v;
    }
     
    luabind::module(L)
    [
    	luabind::class_< std::list<int> >("list")
    	.def(luabind::constructor<>())
    	.def("size", &std::list<int>::size)
    	.def("push_back", &std::list<int>::push_back)
    	.def("data", &list_iterate, luabind::return_stl_iterator)
    ];
    Code lua : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    v = list()
    for i in v.data() do
        -- ...
    end

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Kalith a donné la bonne façon de faire.

    Pour parcourir le vector, il faut ensuite en LUA utiliser la syntaxe for item in p.data
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. std::list ou std::vector comme argument de template
    Par epsilon68 dans le forum C++
    Réponses: 11
    Dernier message: 01/03/2011, 23h34
  2. Réponses: 2
    Dernier message: 18/09/2010, 22h33
  3. Rapidité std::vector contre liste perso
    Par henrygoland dans le forum SL & STL
    Réponses: 22
    Dernier message: 01/12/2008, 19h13
  4. [Tuto] Recherche de tutoriel sur std::list et std::vector
    Par pegase06 dans le forum SL & STL
    Réponses: 27
    Dernier message: 24/07/2007, 16h23
  5. std::list, std::vector et allocation mémoire
    Par buzzkaido dans le forum SL & STL
    Réponses: 20
    Dernier message: 15/06/2007, 15h58

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