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 :
C'est ma première bibliothèque et je serais donc ravi si :
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; }
-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.
Partager