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 :

Critique d'un système evenementiel


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Par défaut Critique d'un système evenementiel
    Bonjour à tous. J'ai voulu écrire une GUI pour la SFML. Je me suis tout d'abord attaqué au système évènementiel. Il respecte les conventions de codage de la SFML et non du standard (choix volontaire). De plus, il ne gère pas encore les cas multithread.

    Juste une présentation brève de la bibliothèque :

    -Elle est entièrement basée sur c++0x et elle compile sur gcc4.5.
    ATTENTION : Puisque auto pose quelques problèmes, j'ai du mettre en dur le type de retour de std:::bind. Il n'est donc valide que pour gcc (mais il suffit de changer le typedef ResultFunctorType (dans Binding.hpp) pour qu'il marche sur les autres.

    -Elle est, j'espère, facilement utilisable.

    -Elle est en état de fonctionnement.

    -Il y a des commentaires dans les headers (je crois que certains sont en anglais, d'autres en français).


    J'ai quand même fait un main.cpp qui montre comment l'utiliser de manière simple.

    Le voici :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <iostream>
    #include <EventSystem/EventSystem.hpp>
    #include <ctime>
     
    using namespace std;
    using namespace ES;
    class Test : public Emittable<Test>//Sert juste à montrer comment on est sensé hériter.
    {
    };
     
    struct A
    {
        int b;
        void ShowBandC(int c, int d)
        {
            std::cout<<"\nCeci est un test. Voici b qui devrait avoir une valeur indefinie. B="<<b<<"\nc qui devrait etre egal a 3. C="<<c<<"\net d qui est le temps mis pour taper la chaine. D="<<d;
        }
    };
     
    int main()
    {
        std::cout<<"\nCe programme vous affichera le temps mis a taper la chaine de caractere avec un systeme evenementiel.";
        unsigned c=clock();
        std::string nesersarien;
        cin>>nesersarien;
        Test t;
        A a;
        t.Connect("truc",Event<int>::MakeCallback(MakeMember(a, &A::ShowBandC), 3, placeholders::_1));
        c=(clock()-c)/CLOCKS_PER_SEC;
        t.Emit("truc", Event<int>(c));
        return 0;
    }
    C'est ma première bibliothèque et je serais donc ravi si :

    -Vous me donniez des avis positif/négatif
    -Vous me disiez ce que je pourrais améliorer.
    -Vous me disiez si je ne respecte pas "le langage" (const correctness et autre).
    -Vous me disiez si je ne me sers pas de tous les avantages du langage (par exemple move_semantic à laquelle je n'ai rien compris).
    -La séparation inl/hpp est déconseillée dans ce cas.
    -Vous me disiez si vous l'utiliseriez dans un de vos projet.
    -Vous me donniez des pistes quant-à la rendre multithread : suffit de mettre un mutex à Emit ?
    -...

    Merci à tous pour votre temps.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/10/2010, 00h06

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