Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1551 Le 20/07/2012, à 23:12

Rolinh

Re : /* Topic des codeurs [7] */

tshirtman a écrit :

du c++ en français, avec des templates, en camelcase inconsistent, et indenté avec une truelle ?

lol
Mais oui, ça résume bien le fond de mes pensées... Et encore, je ne parle même pas l'organisation des fichiers, des répétitions de codes quasi identiques dans plusieurs fichiers différents (ouais, DRY ça ne veut rien dire pour certain), des typedef sur tous et n'importe quoi... J'ai des jours à passer là-dessus, j'explique même pas l'état de mes nerfs... Bon, je finis par en rire tellement c'est désespérant.

EDIT: bon, au moins c'est très verbeux: hop, un morceau de header pour la route :] :

class        LangueSyntaxeFR;
typedef    LangueSyntaxeFR        * LangueSyntaxeFRPTR;

class LangueSyntaxeFR : public LangueSyntaxe
    {
public:
                                        LangueSyntaxeFR ();

    virtual                            ~ LangueSyntaxeFR ();


    //    Syntaxe
    // -------------------------------------------------------------------------

    Chaine                            ErreurSyntaxique ();

    Chaine                            FormatTerminalAttendu ();

    Chaine                            Expression ();
    // MODIFICATION    
    Chaine                            ExpressionListe ();        
    // MODIFICATION        
    Chaine                            Terme ();
    Chaine                            Facteur ();
    Chaine                            FacteurMalForme ();

    Chaine                            VirguleAttendueApresConditionDUnSi ();
    Chaine                            VirguleAttendueApresPartieAlorsDUnSi ();
    Chaine                            FormatVirguleAttendueDansUneSequence ();

    Chaine                            IdentOuInterrogeAttendu ();
    Chaine                            IdentAttenduCommeNomDeFonction ();
    Chaine                            EgaleAttenduApresEnteteDeFonction ();
    Chaine                            IdentAttenduCommeParametreDeFonction ();
    Chaine                            PointVirguleAttenduApresUneDefinitionDeFonction ();
    Chaine                            FormatPointVirguleAttenduApresUneDefinitionDeFonction ();

    Chaine                            TraceDUneDefinitionDeFonction ();
    Chaine                            FormatTraceDUneDefinitionDeFonction ();
    Chaine                            FormatTraceDUneEvaluation ();

    Chaine                            ParentheseAttendueApresDesParametres ();
    Chaine                            ArgumentsSuperflusPourUneNonFonction ();
    Chaine                            ListeDeParametresInconnus ();
    Chaine                            ApresUneListeDArgumentsSuperflus ();

    Chaine                            PointVirguleAttenduApresUneEvaluation ();
    Chaine                            TraceDUneEvaluation ();
    Chaine                            ParentheseAttendueApresExpressionParenthesee ();

    Chaine                            VirguleAttendueDansUneIteration ();
    Chaine                            ParentheseAttendueApresUneIteration ();

    Chaine                            ParentheseInattendueDansAppelDeFonctionNonParametree ();
    Chaine                            FormatParentheseAttendueAvantUnAppelDeFonctionPredefinie ();
    Chaine                            FormatArgumentsAttendusDansAppelDeFonction ();
    Chaine                            ParentheseAttendueApresUnAppelDeFonction ();
    Chaine                            FormatParentheseAttendueApresUnAppelDeFonction ();
    Chaine                            FormatVirguleAttendueApresUnArgumentDAppel ();

    Chaine                            ParentheseAttendueApresUneSequence ();

    Chaine                            SequenceDExpressionsAEvaluer ();

    Chaine                            CodeSyntaxiquementCorrect ();
    Chaine                            CodeSyntaxiquementIncorrect ();

    };    //    LangueSyntaxeFR

Dernière modification par Rolinh (Le 20/07/2012, à 23:21)

Hors ligne

#1552 Le 20/07/2012, à 23:27

maxpoulin64

Re : /* Topic des codeurs [7] */

Rolinh a écrit :
tshirtman a écrit :

du c++ en français, avec des templates, en camelcase inconsistent, et indenté avec une truelle ?

lol
Mais oui, ça résume bien le fond de mes pensées... Et encore, je ne parle même pas l'organisation des fichiers, des répétitions de codes quasi identiques dans plusieurs fichiers différents (ouais, DRY ça ne veut rien dire pour certain), des typedef sur tous et n'importe quoi... J'ai des jours à passer là-dessus, j'explique même pas l'état de mes nerfs... Bon, je finis par en rire tellement c'est désespérant.

EDIT: bon, au moins c'est très verbeux: hop, un morceau de header pour la route :] :

class        LangueSyntaxeFR;
typedef    LangueSyntaxeFR        * LangueSyntaxeFRPTR;

class LangueSyntaxeFR : public LangueSyntaxe
    {
public:
                                        LangueSyntaxeFR ();

    virtual                            ~ LangueSyntaxeFR ();


    //    Syntaxe
    // -------------------------------------------------------------------------

    Chaine                            ErreurSyntaxique ();

    Chaine                            FormatTerminalAttendu ();

    Chaine                            Expression ();
    // MODIFICATION    
    Chaine                            ExpressionListe ();        
    // MODIFICATION        
    Chaine                            Terme ();
    Chaine                            Facteur ();
    Chaine                            FacteurMalForme ();

    Chaine                            VirguleAttendueApresConditionDUnSi ();
    Chaine                            VirguleAttendueApresPartieAlorsDUnSi ();
    Chaine                            FormatVirguleAttendueDansUneSequence ();

    Chaine                            IdentOuInterrogeAttendu ();
    Chaine                            IdentAttenduCommeNomDeFonction ();
    Chaine                            EgaleAttenduApresEnteteDeFonction ();
    Chaine                            IdentAttenduCommeParametreDeFonction ();
    Chaine                            PointVirguleAttenduApresUneDefinitionDeFonction ();
    Chaine                            FormatPointVirguleAttenduApresUneDefinitionDeFonction ();

    Chaine                            TraceDUneDefinitionDeFonction ();
    Chaine                            FormatTraceDUneDefinitionDeFonction ();
    Chaine                            FormatTraceDUneEvaluation ();

    Chaine                            ParentheseAttendueApresDesParametres ();
    Chaine                            ArgumentsSuperflusPourUneNonFonction ();
    Chaine                            ListeDeParametresInconnus ();
    Chaine                            ApresUneListeDArgumentsSuperflus ();

    Chaine                            PointVirguleAttenduApresUneEvaluation ();
    Chaine                            TraceDUneEvaluation ();
    Chaine                            ParentheseAttendueApresExpressionParenthesee ();

    Chaine                            VirguleAttendueDansUneIteration ();
    Chaine                            ParentheseAttendueApresUneIteration ();

    Chaine                            ParentheseInattendueDansAppelDeFonctionNonParametree ();
    Chaine                            FormatParentheseAttendueAvantUnAppelDeFonctionPredefinie ();
    Chaine                            FormatArgumentsAttendusDansAppelDeFonction ();
    Chaine                            ParentheseAttendueApresUnAppelDeFonction ();
    Chaine                            FormatParentheseAttendueApresUnAppelDeFonction ();
    Chaine                            FormatVirguleAttendueApresUnArgumentDAppel ();

    Chaine                            ParentheseAttendueApresUneSequence ();

    Chaine                            SequenceDExpressionsAEvaluer ();

    Chaine                            CodeSyntaxiquementCorrect ();
    Chaine                            CodeSyntaxiquementIncorrect ();

    };    //    LangueSyntaxeFR

O_O

Par curiosité, Chaine c'est une classe au moins? Ou un typedef sur std::string ?

Hors ligne

#1553 Le 20/07/2012, à 23:35

Pylades

Re : /* Topic des codeurs [7] */

Je penche pour un typedef sur char*big_smile


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1554 Le 20/07/2012, à 23:49

Rolinh

Re : /* Topic des codeurs [7] */

typedef std::string Chaine;

:[

Hors ligne

#1555 Le 21/07/2012, à 01:22

Pylades

Re : /* Topic des codeurs [7] */

Dommage, char* aurait été plus fun. tongue

Sinon, suis-je le seul à trouver que la classe présentée ici est buggée (le timer n’est pas stoppé si l’appel à self._timer.cancel se fait entre l’appel à self._run et l’instanciation du nouveau threading.Timer) ?
Bon, heureusement, ce n’est pas bien compliqué à corriger :

class Timeout:
    def __init__(self, delay, target, args=(), kwargs={}):
        self._target = target
        self._args = args
        self._kwargs = kwargs
        self._delay = delay
        self._alive = True

    def _run(self):
        if self._alive:
            self._timer = Timer(self._delay, self._run)
            self._timer.start()
            self._target(*self._args, **self._kwargs)

    def start(self):
        self._timer = Timer(self._delay, self._run)
        self._timer.start()

    def stop(self):
        self._alive = False
        self._timer.cancel()

“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1556 Le 21/07/2012, à 02:31

Pylades

Re : /* Topic des codeurs [7] */

Tiens, sinon, le goto existe, en Python. Faut juste redéfinir frame.f_trace pour qu’il modifie frame.f_lineno comme nécessaire. Bon, après, faut réussir à se procurer un objet frame, ce qui n’est pas une mince affaire. tongue


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1557 Le 21/07/2012, à 08:27

The Uploader

Re : /* Topic des codeurs [7] */

Rolinh a écrit :
typedef std::string Chaine;

:[

Euh c'est vraiment débile... hmm


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#1558 Le 21/07/2012, à 08:52

grim7reaper

Re : /* Topic des codeurs [7] */

Rolinh a écrit :

Et je tiens à préciser: c'est vraiment indenté comme ça partout...

Si mes souvenirs sont exact, sous Vim un coup de "gg=G" devrait débroussailler un peu l’indentation.



Πυλάδης a écrit :

Sinon, suis-je le seul à trouver que la classe présentée ici est buggée (le timer n’est pas stoppé si l’appel à self._timer.cancel se fait entre l’appel à self._run et l’instanciation du nouveau threading.Timer) ?
Bon, heureusement, ce n’est pas bien compliqué à corriger

C’est surtout que tu n’as rien corrigé du tout (si problème il y a) :]



The Uploader a écrit :
Rolinh a écrit :
typedef std::string Chaine;

:[

Euh c'est vraiment débile... hmm

Y’a peut-être un en-tête cpp_to_fr.h blindé de define et typedef pour franciser un maximum le langage…

Dernière modification par grim7reaper (Le 21/07/2012, à 08:58)

Hors ligne

#1559 Le 21/07/2012, à 08:57

Rolinh

Re : /* Topic des codeurs [7] */

The Uploader a écrit :

Euh c'est vraiment débile... hmm

Personne ici ne le conteste hein ^^

Et au fait, Pylade, t'avait pas complètement tort puisqu'il y a bien, en plus de l'autre, quelque chose comme tu le pensais:

typedef char * CharPTR;

Et d'ailleurs, maintenant que j'y pense, tous les pointeurs se font typedefinir en xPTR à la manière du CharPTR  >_<
En fait, il y a quand même une guideline:

    - *PTR pour les types pointeurs
    - *REF pour les types pointeurs sur des pointeurs
    - *PFM pour les types pointeurs sur des fonctions membres de classes

1260528522_itcrowd-facepalm.gif

Hors ligne

#1560 Le 21/07/2012, à 09:05

Rolinh

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :

Si mes souvenirs sont exact, sous Vim un coup de "gg=G" devrait débroussailler un peu l’indentation.

J'y allais à coup de ggVG= mais bon, ça aide mais ne fait pas tout, loin de là.

grim7reaper a écrit :

Y’a peut-être un en-tête cpp_to_fr.h blindé de define et typedef pour franciser un maximum le langage…

En fait nan, il y a des typedef qui traînent un peu partout, pas simplement un fichier d'en-tête qui contient tous les typedef, ça serait trop facile >_<

Exemple d'un morceau sur lequel je viens de tomber:

typedef    LanguePredefinis        * LanguePredefinisPTR;

typedef Chaine                        (LanguePredefinis :: * ChaineLanguePredefinisPFM) ();

Hors ligne

#1561 Le 21/07/2012, à 09:10

grim7reaper

Re : /* Topic des codeurs [7] */

oO
Putain mais c’est à vomir ce code. Faut le brûler. C’est de l'obfuscation à ce niveau-là…

Tiens une question : en français, comment vous traduiriez "Lock Contention" ?

Dernière modification par grim7reaper (Le 21/07/2012, à 09:11)

Hors ligne

#1562 Le 21/07/2012, à 09:16

Rolinh

Re : /* Topic des codeurs [7] */

Pas pour rien que je passe des heures à faire le moindre petit changement...

Sinon, "conflit de verrou" ou "verrouillage concurrent" ?

Hors ligne

#1563 Le 21/07/2012, à 09:24

grim7reaper

Re : /* Topic des codeurs [7] */

Rolinh a écrit :

Sinon, "conflit de verrou" ou "verrouillage concurrent" ?

Yep, mais "Contention" implique que ça arrive fréquemment, il faudrait qu’on retrouve cette idée dans la traduction.
Au pire je vais mettre « fréquent conflits de verrou », ça manque de vocabulaire le français parfois (ou c’est moi qui en manque à force de lire des trucs en anglais…) :-/

Dernière modification par grim7reaper (Le 21/07/2012, à 09:24)

Hors ligne

#1564 Le 21/07/2012, à 09:35

Rolinh

Re : /* Topic des codeurs [7] */

Le français possède plus de mots que l'anglais wink
Et sinon, "conflits de verrous fréquents" plutôt ^^

Hors ligne

#1565 Le 21/07/2012, à 10:22

Pylades

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :

C’est surtout que tu n’as rien corrigé du tout (si problème il y a) :]

Euh, tu peux détailler ?
Parce que j’ai l’impression que je garantis que dès lors que l’on appelle stop, la fonction ne sera plus appelée, et qu’aucun autre Timer ne sera créé…
Certes, il se peut qu’un Timer survive et prolonge le Timeout d’une itération, mais il sera tout de même stoppé (d’ailleurs, il suffit de rajouter deux lignes pour corriger ça).

Dernière modification par Πυλάδης (Le 21/07/2012, à 10:26)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1566 Le 21/07/2012, à 10:42

grim7reaper

Re : /* Topic des codeurs [7] */

Rolinh a écrit :

Le français possède plus de mots que l'anglais wink

Ça dépend dans quel domaine, et là je parle d’info donc pas dans ce cas :-p

Rolinh a écrit :

Et sinon, "conflits de verrous fréquents" plutôt ^^

Non, dans ma phrase ça sonnait mieux dans l’autre sens. Mais bon, finalement j’ai reformulé ^^



Πυλάδης a écrit :
grim7reaper a écrit :

C’est surtout que tu n’as rien corrigé du tout (si problème il y a) :]

Euh, tu peux détailler ?

Tu dis : « le timer n’est pas stoppé si l’appel à self._timer.cancel se fait entre l’appel à self._run et l’instanciation du nouveau threading.Timer »
Pour que ça arrive, faudrait que le timer expire, fasse donc appel à self._run, là il est interrompu, un autre thread appelle cancel sur le timer, self._run continue alors son exécution et instancie un nouveau timer : ça repart, tu n’as rien arrêté du tout (ça se trouve c’est même pas possible ça, je ne sais pas comment Python gère ses threads).
C’est ça le problème que tu soulevais et que tu veux résoudre ?
Si oui, c’est pas résolu.
Si non, j’ai pas compris ce que tu cherches à résoudre.

Πυλάδης a écrit :

Parce que j’ai l’impression que je garantis que dès lors que l’on appelle stop, la fonction ne sera plus appelée, et qu’aucun autre Timer ne sera créé…

Bah on avait un super Timer qu’on pouvait arrêter et relancer à volonté, après ta modif’ on peut plus…
De mon point de vue, tu as plus pété le truc que fait une amélioration…

Dernière modification par grim7reaper (Le 21/07/2012, à 10:43)

Hors ligne

#1567 Le 21/07/2012, à 11:00

Rolinh

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :

Ça dépend dans quel domaine, et là je parle d’info donc pas dans ce cas :-p

Tu marques un point là wink
Pour ça (entre autre bien sûr) que, si je le peux, je ne fais jamais de rapport, document ou autre sur un sujet informatique en français.

Hors ligne

#1568 Le 21/07/2012, à 11:07

Pylades

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :

Pour que ça arrive, faudrait que le timer expire, fasse donc appel à self._run, là il est interrompu, un autre thread appelle cancel sur le timer, self._run continue alors son exécution et instancie un nouveau timer : ça repart, tu n’as rien arrêté du tout (ça se trouve c’est même pas possible ça, je ne sais pas comment Python gère ses threads).
C’est ça le problème que tu soulevais et que tu veux résoudre ?
Si oui, c’est pas résolu.

Hum, pourtant comme on met _alive à False, on est certain que l’on stoppe la succession d’appels, non ? Après, il se peut que l’on ait toujours un Timer qui reste actif, mais qui un fois expiré ne fera rien. D’ailleurs on peut même l’annuler immédiatement ainsi :

    def _run(self):
        if self._alive:
            self._timer = Timer(self._delay, self._run)
            self._timer.start()
            self._target(*self._args, **self._kwargs)
        if not self._alive:
            self._timer.cancel()
grim7reaper a écrit :

Bah on avait un super Timer qu’on pouvait arrêter et relancer à volonté, après ta modif’ on peut plus…
De mon point de vue, tu as plus pété le truc que fait une amélioration…

Ça, c’est parce que je n’ai personnellement pas besoin de le relancer, mais si l’on veut on peut toujours déplacer le self._alive = True de __init__ vers start.


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1569 Le 21/07/2012, à 11:17

grim7reaper

Re : /* Topic des codeurs [7] */

Πυλάδης a écrit :
grim7reaper a écrit :

Pour que ça arrive, faudrait que le timer expire, fasse donc appel à self._run, là il est interrompu, un autre thread appelle cancel sur le timer, self._run continue alors son exécution et instancie un nouveau timer : ça repart, tu n’as rien arrêté du tout (ça se trouve c’est même pas possible ça, je ne sais pas comment Python gère ses threads).
C’est ça le problème que tu soulevais et que tu veux résoudre ?
Si oui, c’est pas résolu.

Hum, pourtant comme on met _alive à False, on est certain que l’on stoppe la succession d’appels, non ?

Non (là encore, pour savoir si ce que je dis est valable il faudrait savoir comment Python gère ses threads, comment il interrompt/préempte, …)
Avec ta version, on peut avoir l'exécution suivante :
Le timer expire, il fait donc appel à self._run, exécute le if: self._alive vaut True.
Là il est interrompu, un autre thread appelle cancel sur le timer, self._alive passe à False.
self._run continue alors son exécution (il a déjà fait le test, et est donc dans la première branche) et instancie un nouveau timer : ça repart, tu n’as rien arrêté du tout.
Donc rien n’est résolu (’fin ça améliore un peu, mais ça résoud pas complétement le problème non plus).

Πυλάδης a écrit :

Après, il se peut que l’on ait toujours un Timer qui reste actif, mais qui un fois expiré ne fera rien.

Pourquoi il fera rien ?

Πυλάδης a écrit :
grim7reaper a écrit :

Bah on avait un super Timer qu’on pouvait arrêter et relancer à volonté, après ta modif’ on peut plus…
De mon point de vue, tu as plus pété le truc que fait une amélioration…

Ça, c’est parce que je n’ai personnellement pas besoin de le relancer, mais si l’on veut on peut toujours déplacer le self._alive = True de __init__ vers start.

C’est ce que je me suis dit.
Mais si tu as ce besoin, tu peux ajouter une méthode (genre disarm) au lieu de modifier celle qui existe.
Comme ça tu en a une pour stopper le timer et une autre pour le désarmer définitivement.

Dernière modification par grim7reaper (Le 21/07/2012, à 11:20)

Hors ligne

#1570 Le 21/07/2012, à 11:35

Pylades

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :

self._run continue alors son exécution (il a déjà fait le test, et est donc dans la première branche) et instancie un nouveau timer : ça repart, tu n’as rien arrêté du tout.

Certes, mais d’une part on peut annuler immédiatement après le nouveau Timer, et d’autre part :

grim7reaper a écrit :

Pourquoi il fera rien ?

Parce que dès qu’il expirera, il appellera self._run, qui comme self._alive sera à False ne fera rien.

grim7reaper a écrit :

Mais si tu as ce besoin, tu peux ajouter une méthode (genre disarm) au lieu de modifier celle qui existe.
Comme ça tu en a une pour stopper le timer et une autre pour le désarmer définitivement.

Bah, comme la méthode qui existe avait comme problème de ne potentiellement pas stopper le Timeout, c’est quand même bien de la modifier, non ? ^^
Sinon, j’ai du mal à voir l’intérêt d’une méthode disarm. Si l’on veut que le Timeout ne serve plus, il suffit de ne plus l’utiliser, non ?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#1571 Le 21/07/2012, à 11:52

grim7reaper

Re : /* Topic des codeurs [7] */

Πυλάδης a écrit :
grim7reaper a écrit :

self._run continue alors son exécution (il a déjà fait le test, et est donc dans la première branche) et instancie un nouveau timer : ça repart, tu n’as rien arrêté du tout.

Certes, mais d’une part on peut annuler immédiatement après le nouveau Timer, et d’autre part :

grim7reaper a écrit :

Pourquoi il fera rien ?

Parce que dès qu’il expirera, il appellera self._run, qui comme self._alive sera à False ne fera rien.

Yep, en effet.
Donc en fait ça va, ta solution est ok smile

Πυλάδης a écrit :

Sinon, j’ai du mal à voir l’intérêt d’une méthode disarm. Si l’on veut que le Timeout ne serve plus, il suffit de ne plus l’utiliser, non ?

En effet…

Hors ligne

#1572 Le 21/07/2012, à 12:19

Rolinh

Re : /* Topic des codeurs [7] */

Surcharge? Même pas peur:

    Chaine
MiseEnForme (
        Chaine    leFormat,
        int        lEntier )
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        double    leFlottant )
{
    return
        _mise_en_forme_ (
                leFormat,
                leFlottant );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    chaine1,
        Chaine    chaine2 )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) chaine1.c_str (),
                (CharPTR) chaine2.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    chaine1,
        Chaine    chaine2,
        Chaine    chaine3 )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) chaine1.c_str (),
                (CharPTR) chaine2.c_str (),
                (CharPTR) chaine3.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    chaine1,
        Chaine    chaine2,
        Chaine    chaine3,
        Chaine    chaine4 )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) chaine1.c_str (),
                (CharPTR) chaine2.c_str (),
                (CharPTR) chaine3.c_str (),
                (CharPTR) chaine4.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    chaine1,
        Chaine    chaine2,
        Chaine    chaine3,
        Chaine    chaine4,
        Chaine    chaine5 )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) chaine1.c_str (),
                (CharPTR) chaine2.c_str (),
                (CharPTR) chaine3.c_str (),
                (CharPTR) chaine4.c_str (),
                (CharPTR) chaine5.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    chaine1,
        Chaine    chaine2,
        Chaine    chaine3,
        int        lEntier )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) chaine1.c_str (),
                (CharPTR) chaine2.c_str (),
                (CharPTR) chaine3.c_str (),
                lEntier );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine,
        int        lEntier1,
        int        lEntier2,
        double    leFlottant)
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine.c_str (),
                lEntier1,
                lEntier2,
                leFlottant );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine,
        int        lEntier)
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine.c_str (),
                lEntier );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine,
        int        lEntier1,
        int        lEntier2)
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine.c_str (),
                lEntier1,
                lEntier2 );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        int        lEntier1,
        int        lEntier2)
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier1,
                lEntier2 );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        long        lEntier)
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    chaine1,
        int        lEntier,
        Chaine    chaine2,
        Chaine    chaine3 )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) chaine1.c_str (),
                lEntier,
                (CharPTR) chaine2.c_str (),
                (CharPTR) chaine3.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        int        lEntier1,
        int        lEntier2,
        double    leFlottant)
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier1,
                lEntier2,
                leFlottant );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine1,
        Chaine    laChaine2,
        int        lEntier1,
        int        lEntier2,
        int        lEntier3,
        int        lEntier4)
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine1.c_str (),
                (CharPTR) laChaine2.c_str (),
                lEntier1,
                lEntier2,
                lEntier3,
                lEntier4 );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine1,
        Chaine    laChaine2,
        int        lEntier1,
        int        lEntier2,
        int        lEntier3,
        int        lEntier4,
        int        lEntier5)
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine1.c_str (),
                (CharPTR) laChaine2.c_str (),
                lEntier1,
                lEntier2,
                lEntier3,
                lEntier4,
                lEntier5 );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine,
        int        lEntier1,
        int        lEntier2,
        int        lEntier3,
        int        lEntier4)
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine.c_str (),
                lEntier1,
                lEntier2,
                lEntier3,
                lEntier4 );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine1,
        int        lEntier1,
        int        lEntier2,
        Chaine    laChaine2 )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine1.c_str (),
                lEntier1,
                lEntier2,
                (CharPTR) laChaine2.c_str () );
}

    Chaine
MiseEnForme (
        Chaine        leFormat,
        int            lEntier1,
        int            lEntier2,
        char            leCaractere1,
        char            leCaractere2,
        Chaine        laChaine1,
        CharPTR        laChaine2,
        Chaine        laChaine3 )
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier1,
                lEntier2,
                leCaractere1,
                leCaractere2,
                (CharPTR) laChaine1.c_str (),
                laChaine2,
                (CharPTR) laChaine3.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        int        lEntier,
        Chaine    laChaine1,
        Chaine    laChaine2,
        Chaine    laChaine3 )
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier,
                (CharPTR) laChaine1.c_str (),
                (CharPTR) laChaine2.c_str (),
                (CharPTR) laChaine3.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        int        lEntier,
        Chaine    laChaine1,
        Chaine    laChaine2 )
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier,
                (CharPTR) laChaine1.c_str (),
                (CharPTR) laChaine2.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        int        lEntier,
        Chaine    laChaine)
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier,
                (CharPTR) laChaine.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    laChaine1,
        int        lEntier,
        Chaine    laChaine2 )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) laChaine1.c_str (),
                lEntier,
                (CharPTR) laChaine2.c_str () );
}

    Chaine
MiseEnForme (
        Chaine    leFormat,
        long        lEntier,
        Chaine    laChaine)
{
    return
        _mise_en_forme_ (
                leFormat,
                lEntier,
                (CharPTR) laChaine.c_str () );
}


    Chaine
MiseEnForme (
        Chaine    leFormat,
        Chaine    chaine1,
        Chaine    chaine2,
        Chaine    chaine3,
        int        lEntier1,
        int        lEntier2 )
{
    return
        _mise_en_forme_ (
                leFormat,
                (CharPTR) chaine1.c_str (),
                (CharPTR) chaine2.c_str (),
                (CharPTR) chaine3.c_str (),
                lEntier1,
                lEntier2 );
}

26x donc...

Je vais finir fou...O_O
(mais je vais arrêter de vous spammer avec ça parce qu'à chaque fichier que j'ouvre, je frise la syncope et il y aurait beaucoup à dire...)

Hors ligne

#1573 Le 21/07/2012, à 12:25

tshirtman

Re : /* Topic des codeurs [7] */

Πυλάδης a écrit :

Tiens, sinon, le goto existe, en Python. Faut juste redéfinir frame.f_trace pour qu’il modifie frame.f_lineno comme nécessaire. Bon, après, faut réussir à se procurer un objet frame, ce qui n’est pas une mince affaire. tongue

http://entrian.com/goto/
la flemme de regarder comment il l'a fait, mais il l'a fait ^^

Hors ligne

#1574 Le 21/07/2012, à 12:43

grim7reaper

Re : /* Topic des codeurs [7] */

@Rolinh : je trouve pas les mots pour décrire ça o_o
Qui à pondu un code pareil ? Me dit pas que c’est un prof’ ?
C’est du code généré automatiquement ou quoi ? Je ne vois que ça comme explication rationnelle là…


@tshirtman : Il fait comme Πυλάδης le dit.

Dernière modification par grim7reaper (Le 21/07/2012, à 12:53)

Hors ligne

#1575 Le 21/07/2012, à 12:56

Rolinh

Re : /* Topic des codeurs [7] */

Oui, c'est un prof qui enseigne en plus dans une autre école (EPFL) bien plus renommée que la mienne.
Et non, ce n'est pas généré automatiquement. Ne cherche pas d'explication rationnelle, je ne crois pas qu'il y en ait.
Ben si tu veux te rendre compte de l'ampleur du truc, voilà les sources. Il y a environ 50'000 lignes de code dans le genre.

Hors ligne