Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 06-03-2013 15:21:57

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Connaissez-vous FastFuncs?

FastFuncs est un projet de Jeremy Lakeman (un hacker PB confirmé semble-t-il) permettant de compiler une dll (qui n'est pas une extension PBNI) utilisable depuis PB (via quelques fonctions globales permettant le wrapping des fonctions de la dll) et permettant quelques innovations comme :
- fonctions rapides de manipulation de blob (blob_extract, blob_mid, blob_import, et blob_alloc permettant d'allouer un blob sans mettre quelques chose dedans, utile pour appeler l'API sans perdre du temps à remplir des espaces)
- fonctions rapide de manipulation de bits (and, or)
- fonctions rapides de concaténation, remplacement, découpage de string et pos() rapide
- tri de tableaux
- interrogation de la pile d'appel je ne résiste pas à vous montrer une image de notre intégration de fastfuncs pour la gestion des erreurs : ce qui est en jaune on arrivait à l'avoir précédemment avec l'objet Error, mais stack_trace() permet d'obtenir ce qui est en rouge, soit la pile d'appel complète (les méthodes avec un '+' sont des évènements) :

http://i.imgur.com/12pjauE.png

Vous pourrez remarquer, dans le code des external functions déclarées dans les fonctions globales d'interfaçage, l'usage du mot-clé interne "system" :

Code: pb

global function blob blob_alloc (unsignedlong length) system library "fastfuncs115.dll" alias for 'Blob_Alloc'

En fait ces fonctions de dll sont appelées directement par PB sans passer par la glu PBNI et elles reçoivent un accès direct à la machine virtuelle PB, permettant un tas de chose intéressantes. D'ailleurs la lecture du code des fastfuncs est également fort intéressant

Pour vous situer le personnage, en dehors de ce projet public il a bien exploré les entrailles de PB puisqu'il s'est fait un désassembleur PB (qu'il garde jalousement pour lui) et il travaille sur un "transcodeur" basé sur llvm permettant de recoder des objets en bytecode PB vers du code natif. Une sorte de JIT pour PB. Encore un grand malade

Le projet permet de fabriquer la dll kivabien pour PB 10, 10.5, 11, 11.5, 12, 12.5.

Dernière modification par seki (06-03-2013 16:59:35)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#2 06-03-2013 17:05:10

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Salut Seki,

question de gros noob :

Comment on fait si on veut utiliser ces FastFuncs ?

si je vais télécharger le Zip sur le site je me retrouve avec un répertoire (par version de PB) avec des exports d'objets PB (genre  replace_all.srf) ça je comprends mais ces exports ne contiennent que la définition des fonctions externes  à utiliser et renvoient vers "fastfuncs100.dll" que je ne trouve nulle part dans le Zip

suis-je censé compiler la dll moi-même ? Si oui comment ?

Qu'est ce qu'on est censé faire du contenu du répertoire libs et de tous les autres fichiers à la racine du zip ( ".gitignore",  "fastfuncs.vcproj" etc ) ?


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#3 07-03-2013 09:22:53

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Alors si tu prends le .zip sur github, tu te retrouves avec les sources MS Visual C du projet pour faire la dll toi-même.
- fastfuncs.vcproj c'est le projet C et fastfuncs.sln la "solution" Visual studio (qui veut mini du MSVC9, soit Visual Studio 2008) mais en bricolant le vcproj j'ai pu refaire le projet pour VS2005
- .gitignore c'est un fichier permettant de lister ce qui ne doit pas être traité par le suivi de version git
- le répertoire libs permet de fabriquer des bibiothèques d'import permettant au code du projet de pouvoir appeler des fonctions dans les dll pbvmxxx et pvshrxxx correspondant à ta version PB, ça utilise l'outil lib qui fait partie de MSVC
- les différents répertoires fastfuncs100..125 contiennent les sources des différentes fonctions globales permettant d'appeler les fast funcs
- le répertoire build contient la dll résultat

Si tu es en 11.5 je peux mettre à disposition la dll et la pbl permettant de l'utiliser. Si j'ai le temps et si vous êtes sage, j'essaie de faire les autres aussi. Mais je n'ai pas 12 ou 12.5 pour le moment.

Dernière modification par seki (07-03-2013 09:25:27)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#4 07-03-2013 09:33:02

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Ah ok, dommage qu'il donne pas les dll directement.

merci pour la proposition mais je ne travaille pas en PB11.5 personnellement.


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#5 07-03-2013 09:53:55

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

rincevent a écrit:

Ah ok, dommage qu'il donne pas les dll directement.

merci pour la proposition mais je ne travaille pas en PB11.5 personnellement.

T'es avec quelle version ?


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#6 07-03-2013 09:56:25

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

10.2.0 Build 8100


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#7 07-03-2013 10:07:00

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Mmh. J'ai 10.2.1.9948. Tu peux peut-être tenter ta chance...


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#8 07-03-2013 10:08:22

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#9 07-03-2013 10:45:07

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Bon, les libs pré-compilées pour 10.2, 10.5 et 11.5 sont chez moi .

Un exemple d'utilisation : la fonction GetCallStack() (j'itère sur un élément de moins de la callstack pour ne pas voir la fonction elle-même):

Code: pb

global type getcallstack from function_object
end type

forward prototypes
global function string getcallstack ()
end prototypes

global function string getcallstack ();
string frames[], msg
int i

stack_trace(ref frames[])

msg = "Stack trace:~r~n"
for i = upperbound(frames[]) - 1 to 1 step -1
  msg += frames[i] + '~r~n'
next

return msg

end function


Une remarque : ne pas essayer d'ouvrir les fonctions globales de la pbl qui comportent des arguments variables (...) : avec PB11.5 on voit un argument avec un nom en chinois, mais en PB10.2 ça plante lamentablement, juste après un message indiquant "functions with a var list argument cannot be overridden"

Dernière modification par seki (07-03-2013 10:48:30)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#10 07-03-2013 12:45:24

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Seki si tu n'existais pas faudrait t'inventer

merci, je testerai ça plus tard et je viendrai dire ce que ça a donné.


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#11 16-04-2013 14:39:31

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

J'ai fait un petit test chez nous de stack_trace sous PB12.1 build 6875 et c'est bien sympa.

Je vais l'utiliser dans une fenêtre d'erreur de notre progiciel proche de celle du premier screen de Seki.
Je vous ferais un retour une fois fait.

Si quelqu'un en a besoin je peux fournir la dll pour pb12 (Éventuellement si Seki veut bien on pourrait le rajouter à son pack).
Je n'ai pas fait de pbl avec les appels external functions par contre, je peux également le faire si ça intéresse quelqu'un.


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#12 16-04-2013 15:07:35

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Pas encore eu le temps de tester mais je perds pas espoir


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#13 16-04-2013 15:16:40

Ben53  
Membre Geek
Date d'inscription: 18-02-2010
Messages: 46
Pépites: 184
Banque: 0

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Van a écrit:

J'ai fait un petit test chez nous de stack_trace sous PB12.1 build 6875 et c'est bien sympa.

Je vais l'utiliser dans une fenêtre d'erreur de notre progiciel proche de celle du premier screen de Seki.
Je vous ferais un retour une fois fait.

Si quelqu'un en a besoin je peux fournir la dll pour pb12 (Éventuellement si Seki veut bien on pourrait le rajouter à son pack).
Je n'ai pas fait de pbl avec les appels external functions par contre, je peux également le faire si ça intéresse quelqu'un.

Je serai intéressé par les versions pour PB12 voir PB12.5 !

merci d'avance

Hors ligne

 

#14 16-04-2013 15:47:50

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

J'ai pas de PB12.5 mais voilà la dll pour PB12  http://dl.free.fr/rU9zRcXXD


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#15 17-04-2013 07:21:37

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Van a écrit:

J'ai pas de PB12.5 mais voilà la dll pour PB12

Merci, je vais tâcher d'ajouter dans le .zip chez moi.
Je pensais aussi qu'on pourrait le mettre dans les téléchargements du forum (j'ai la possibilité de la faire) ?


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#16 17-04-2013 08:50:13

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

seki a écrit:

Je pensais aussi qu'on pourrait le mettre dans les téléchargements du forum (j'ai la possibilité de la faire) ?

Il faut être admin.
Tu peux me l'envoyer par mail.


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#17 17-04-2013 11:25:48

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

erasorz a écrit:

Il faut être admin.

J'ai l'impression que je suis modo++, (j'ai accès à la partie partage des fichiers, sans pour autant avoir accès à d'autres parties comme la gestion des users)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#18 17-04-2013 11:36:43

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

my bad... je pensais que tu avais essayé sans succès
ça fait tellement longtemps que j'avais paramétré ça :

http://img341.imageshack.us/img341/8172/permissionsg.png

Pour info les permissions du forum et du portail sont gérées séparément.

Bah du coup tu pourras l'uploader et mettre le lien dans le premier message du fil


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#19 24-04-2013 11:34:57

_francois_  
Bienfaiteur du site
Lieu: TOULOUSE
Date d'inscription: 25-03-2010
Messages: 151
Pépites: 178,983,268,111
Banque: 9,223,372,036,854,776,000

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

La version pb12.5 si il y a des intéressés

http://dl.free.fr/pR4vYzhgr

Par contre d'après la documentation:

In PowerBuilder 8 and later, if an error occurs that is not caught by the exception handling mechanism or by an Error or ExternalException event, the script terminates and the call stack is unwound. If the error occurs as the result of a Triggerevent call in a script, the calling script terminates and the call stack is unwound. In most cases, the SystemError event is not triggered until the call stack becomes empty. If an event of a response window caused the error, the SystemError event is triggered as soon as the response window event completes.

Du coup si j'appelle le stack_trace depuis l'event systemerror de l'application mon call stack est vide une astuce quelque part ?

merci

Hors ligne

 

#20 24-04-2013 13:19:37

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

_francois_ a écrit:

La version pb12.5 si il y a des intéressés

Merci !

_francois_ a écrit:

Du coup si j'appelle le stack_trace depuis l'event systemerror de l'application mon call stack est vide une astuce quelque part ?

Dans mon exemple, j'affiche un dialogue d'erreur mais c'est au cours d'une exécution normale du code où le développeur demande à un objet  de faire un truc impossible. D'où le message pour indiquer au dev qu'il existe parfois un cas foireux.

Dans le cas d'un plantage de l'application, il semble en effet que ce soit trop tard et que la call stack ait été vidée par PB avant de donner la main dans systemerror (mais pourquoi ??)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#21 06-05-2013 07:58:19

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

En encadrant sont code par try/catch tu récupéré ton erreur comme il faut.

Code: pb

try
        //code
        //......
        //......
  dw_test.getitemstring(0,'champ_inconnu') //line xx
        

        //code
        //......
        //......
  
catch (runtimeerror e)
  messagebox("text", e.text)  // retourne le text erreur "Invalid DataWindow row/colomwn specified line xx function uf_test of object uo_object."
  messagebox('stack', f_getcallstacktrace(50, is_test)) //la pile est identique à ce qu'elle était avant l'erreur
end try

Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#22 06-05-2013 10:34:07

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Je crois que le problème de _francois_ c'est pour faire un attrapeur d'erreur général dans l'évènement systemError() : quand on arrive dans système error, la pile est vide.

Effectivement si ponctuellement on veut pouvoir attraper une exception en sachant où elle risque de se produire, on peut utiliser try..catch. (Attention tout de même si on est dans une boucle rapide cela peut ralentir beaucoup l'exécution).


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#23 06-05-2013 12:20:35

_francois_  
Bienfaiteur du site
Lieu: TOULOUSE
Date d'inscription: 25-03-2010
Messages: 151
Pépites: 178,983,268,111
Banque: 9,223,372,036,854,776,000

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

oui je connais le try catch que j'utilise d'ailleurs
seki a bien compris ma "problématique" qui était de faire un attrapeur général pour m'aider dans une application qui a été codée de manière très spéciale, enfin ça ne m'empêche pas dormir la nuit je voulais juste savoir si il y avat une "astuce" que j'aurais loupé
mais merci quand même

Hors ligne

 

#24 06-05-2013 12:35:34

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Je ne connais pas (c'est un tord, je l'avoue) l'impact en terme de temps d'exécution d'un try/catch.

Mais supposons que tu ai une fonction avec un try en tout début de code, l'ensemble de ta fonctionalité contenant ou pas de boucles rapides et en fin de code le catch.

Depuis le catch tu appel un fenêtre tel que tu l'as montré en début du topic. Après ça tu peux quitter ta fenêtre/traitement/etc ou simplement fermé l'application.

Ca serait envisageable ou le temps d'excécution en prendrait pour cher?


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#25 17-12-2013 13:14:29

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: FastFuncs : extension non-PNBI pour appels de fonctions "natives"

Salut , je reviens un peu sur ce sujet car j'ai un peu de temps libre mais malheureusement la plupart des liens de téléchargement ne sont plus valides et je ne trouve pas dans la section téléchargement du site. (ni sur le site de Seki)

c'est moi qui regarde mal ou bien ?  ( je cherche la dll pour la version 12.0 )

en attendant je vais tester un peu avec les versions pour PB 10.0 parceque bon, une fois qu'on est en Unicode un pos() devrait pas changer fondamentalement entre 10 et 12 si ?

Du coup je me dis si c'est juste à quoi ça sers de faire 50 versions des dll alors qu'une version ANSI et une version Unicode suffiraient ? Bon j'vais faire mes tests avant d'aller plus loin mais il me semble que niveau facilité d'utilisation ça aurait pu être bcp plus simple.


Edit : Bon ben ça marche pas, j'essaye avec PB 12.0 et fastfuncs115.dll et j'obtiens une erreur "error opening dll library fastfuncs115.dll..."

Edit 2 : pffff, je chipote un peu en PB 10 aussi, j'inclus fastfuncs100.pbl à mon projet, je regarde dedans, des fonctions globales, j'essaye d'en ouvrir une, vide..., j'essaye ça plante aussi bien sûr.

Edit 3 : ha par contre c'est dispo ici maintenant : http://geni.embeddingperl.com/index.php … cs-patched vais retester avec fastfuncs120.dll mais je le sens mal... (c'est quoi dans ce genre d'outils ces pbl's impossibles à ouvrir ou ces pbd qu'on peut pas ouvrir ni modifier non plus ? pas pratique pour inclure dans un projet tout ça. )

Edit 4 : ha ben  finalement si il doit y avoir des différrences entre les différentes versions des dll parceque avec fastfuncs120.dll ça fonctionne


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22