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.

#1401 Le 16/11/2010, à 19:12

Steap

Re : /* Topic des codeurs couche-tard [2] */

The Uploader a écrit :

yikes la réponse rapide!
Merci. wink
Mhh, en fait que ce soit 24 ou 32 c'est sûr cette ligne que j'ai un Seg. Fault:

SDL_SetColorKey(sprites,SDL_SRCALPHA,SDL_SRCCOLORKEY);

désolé! >_<

"sprites" est sans doute NULL.

Tu devrais vérifier le retour de SDL_LoadBMP() :-p


GNU Guix, un gestionnaire de paquets fonctionnel.

Hors ligne

#1402 Le 16/11/2010, à 19:30

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [2] */

Scores totaux, depuis le début :

1) 1862    nesthib
2) 1786    samuncle
3) 1504    Pylade
4) 1125    Кຼزດ
5) 929    cm-t
6) 794+5  grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
7) 682    \\Ouranos//
8) 680    Р☢w ! ✰ :mad: ✰ (эй !)
9) 637    helly
10) 391    Lagierl
11) 374    gnuuat
12) 274    tshirtman
13) 186    Askelon
14) 167    Kanor
15) 142    nathéo
16) 121    ǤƦƯƝƬ
17) 93    petifrancais
18) 78    edge_one
19) 70    gulp
20) 68    pierguiard
21) 59    kamui57
21) 59    The Uploader
23) 37    ilagas
24) 30    keny
25) 27    Le Rouge
26) 25    GentooUser
27) 24    ไ୦บเઢ'
28) 20    Morgiver
28) 20    CROWD
30) 19    xapantu
31) 18    Ph3nix_
32) 15    timsy
33) 14    kouskous
34) 12    stratoboy
34) 12    sailing
36) 11    alexises
36) 11    Crocoii
38) 10    Toineo
38) 10    NutMotion
38) 10    pseudovingtcinqcaracteres
38) 10    pfriedZ
42) 8    Mornagest
43) 7    Vista
44) 6    Zeibux
44) 6    ubuntlin
44) 6    asma.geek
47) 5    tendances-tdct
48) 4    danychou56
48) 4    Neros
48) 4    Biaise
48) 4    totoflute
48) 4    pinballyoda ㋛
53) 2    SoJaS
53) 2    ceric
55) 1    geenux

chart?chs=675x280&cht=p3&chco=d80020,d88000,ffd840,20d820,2080ff,101080,a020d8&chf=bg,s,fbf9f4&chl=00h%20-%2000h59|01h%20-%2001h59|02h%20-%2002h59|03h%20-%2003h59|07h%20-%2007h59|09h%20-%2009h59|10h%20-%2010h59|13h%20-%2013h59|14h%20-%2014h59|15h%20-%2015h59|18h%20-%2018h59|21h%20-%2021h59&chd=t:3,2,2,2,2,1,1,1,1,2,6,1&chp=1.6&chtt=R%C3%A9partition%20des%20posts&chts=606060,16chart?chs=675x250&cht=bvs&chxt=x,y&chds=0,10&chxr=1,0,10&chf=b0,lg,0,803000,0,ffc080,1|bg,s,fbf9f4&chxl=0:|05h|06h|07h|08h|09h|10h|11h|12h|13h|14h|15h|16h|17h|18h|19h|20h|21h|22h|23h|00h|01h|02h|03h|04h&chxp=0,0.7,4.9,9.1,13.2,17.3,21.5,25.6,29.8,33.9,38,42.2,46.3,50.5,54.6,58.8,62.9,67,71.2,75.3,79.4,83.6,87.7,91.8,96&chd=t:0,0,2,0,1,1,0,0,1,1,2,0,0,6,0,0,1,0,0,3,2,2,2,0&chm=N,803000,0,-1,12&chtt=|Nombre%20de%20posts%20par%20heure&chts=606060,16


Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#1403 Le 16/11/2010, à 19:31

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [2] */

Scores de la période en cours :

1) 141    nesthib
2) 126    samuncle
3) 116    grim7reaper
4) 110    nathéo
5) 102    Кຼزດ
6) 85    gnuuat
7) 83    cm-t
8) 69    Pylade
9) 56    Askelon
10) 31    Lagierl
11) 28    \\Ouranos//
12) 18    tshirtman
13) 9    The Uploader
14) 4    Р☢w ! ✰ :mad: ✰ (эй !)
15) 3    Kanor
16) 2    pierguiard
17) 1    xapantu
17) 1    helly

Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#1404 Le 16/11/2010, à 19:40

helly

Re : /* Topic des codeurs couche-tard [2] */

grim7reaper a écrit :

Il a un comportement bizarre sur les entrées hmm.
Soit la division

#!/home/grim7reaper/bin/pbfi
,>,,>++++++[#-<--------<-------->>] Store 2 numbers from keyboard in (0) and (1); and subtract 48 from each
<<[                               This is the main loop which continues until the dividend in (0) is zero
>[->+>+<<]                        Destructively copy the divisor from (1) to (2) and (3); setting (1) to zero
>[-<<-                            Subtract the divisor in (2) from the dividend in (0); the difference is stored in (0) and (2) is cleared
[>]>>>[<[>>>-<<<[-]]>>]<<]        If the dividend in (0) is zero; exit the loop
>>>+                              Add one to the quotient in (5)
<<[-<<+>>]                        Destructively copy the divisor in (3) to (1)
<<<]                              Move the stack pointer to (0) and go back to the start of the main loop
>[-]>>>>[-<<<<<+>>>>>]            Destructively copy the quotient in (5) to (0) (not necessary; but cleaner)
<<<<++++++[-<++++++++>]<.         Add 48 and print result

Avec mon interpréteur je rentre

8/2

puis entrée et ça roule
avec le tien il faut taper

8
/
2

Oui, ça fait partie des trucs que je dois arranger ^^.
Mais ça marche quoi.


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#1405 Le 16/11/2010, à 20:02

Pylades

Re : /* Topic des codeurs couche-tard [2] */

Ben ça ne marche pas, donc ! tongue


Bon, je viens de découvrir que mon .profile n'est pas sourcé ! yikes
OMFG, comment vais-je faire ?


“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

#1406 Le 16/11/2010, à 20:04

helly

Re : /* Topic des codeurs couche-tard [2] */

Pylade a écrit :

Ben ça ne marche pas, donc ! tongue


Bon, je viens de découvrir que mon .profile n'est pas sourcé ! yikes
OMFG, comment vais-je faire ?

Si.
Tu t'y connais en java toi ?


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#1407 Le 16/11/2010, à 20:08

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

@helly : toi tu as le même problème que tshirtman en Python quand il a voulu faire son interpréteur Brainfuck => pas d'équivalent  à getc de base, rien de tout prêt, faut le coder soi-même quoi (du moins pour ce que j'en ai vu avec mon peu de recherche sur Java et Python + les recherches de tshirtman en ce qui concerne Python).
Et ça se veut langage sérieux et polyvalent alors que ça bloque sur un truc aussi basique que ça -_-".
Je rappelle que le C, qui à une lib standard minuscule, a getc de base quand même. On en concluera ce qu'on voudra…

Dernière modification par grim7reaper (Le 16/11/2010, à 20:14)

Hors ligne

#1408 Le 16/11/2010, à 20:18

helly

Re : /* Topic des codeurs couche-tard [2] */

Et ça se veut langage sérieux et polyvalent alors que ça bloque sur un truc aussi basique que ça -_-".

Jsais bien que java sapu, j'aime pas le java !
J'ai juste fait le code en java pour pratiquer mad.


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#1409 Le 16/11/2010, à 20:19

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Ma remarque ne portait pas que sur le Java smile

Hors ligne

#1410 Le 16/11/2010, à 20:23

helly

Re : /* Topic des codeurs couche-tard [2] */

J'aime pas le python non plus tongue.
(mais uniquement car je bloque (sans raison) sur son apprentissage).


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#1411 Le 16/11/2010, à 20:28

Кຼزດ

Re : /* Topic des codeurs couche-tard [2] */

grim7reaper a écrit :

@helly : toi tu as le même problème que tshirtman en Python quand il a voulu faire son interpréteur Brainfuck => pas d'équivalent  à getc de base, rien de tout prêt, faut le coder soi-même quoi (du moins pour ce que j'en ai vu avec mon peu de recherche sur Java et Python + les recherches de tshirtman en ce qui concerne Python).
Et ça se veut langage sérieux et polyvalent alors que ça bloque sur un truc aussi basique que ça -_-".
Je rappelle que le C, qui à une lib standard minuscule, a getc de base quand même. On en concluera ce qu'on voudra…

On a pas vraiment les mêmes usages du python que du C, en général. Perso, je conclus pas mal de choses du fait que tu n'évoques pas grand chose sur la lib standard python, qui permet de faire un nombre relativement important de choses très simplement sans se prendre la tête…
Je ne dis pas que getc n'est pas un manque, je dis juste que tes conclusions m'ont l'air assez peu objectives tongue


dou

Hors ligne

#1412 Le 16/11/2010, à 20:35

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

helly a écrit :

J'aime pas le python non plus .
(mais uniquement car je bloque (sans raison) sur son apprentissage).

Moi c'est pire, je bloque à sa vue tongue
(Oui, je trolle je sais c'est pas bien).

Essaye un autre langage : Ruby, Scheme, Perl, COBOL, Haskell, Visual Basic, OCaml…
C'est pas les langages qui manque (attention, il y a des pièges dans la liste précédente big_smile).

Nan, sérieux si tu as un moment jette un œil à la programmation fonctionnelle. C'est vraiment déroutant au départ car c'est une tout autre façon d'aborder la prog (pas d'effets de bord par exemple).
D'ailleurs, la première fois que j'en ai fait (sous la contrainte et sous Emacs -_-) j'ai détesté, mais je m'y suis remis durant l'été (avec un autre langage) et franchement ça vaut le détour.
C'est assez enrichissant de voir une autre manière de programmer et ce n'est pas dénué d'avantages (transparence référentielle, curryfication, fonctions d'ordre supérieur, …)


@Кຼزດ : je sais, mais j'aime bien exagérer (et oui, mes conclusions ne sont pas objectives, mais de toute manière on est jamais objectif même si là j'avoue que je force le trait tongue).
Mais à titre d'exemple, Ruby (que je connais assez peu) possède getc alors qu'il est du même niveau d'abstraction que Python.

Hors ligne

#1413 Le 16/11/2010, à 20:41

helly

Re : /* Topic des codeurs couche-tard [2] */

Et tu me conseille quoi comme langage de prog fonctionnelle ?
J'ai vite fait un tour sur wiki, j'ai pas trop compris le principe…


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#1414 Le 16/11/2010, à 20:55

Кຼزດ

Re : /* Topic des codeurs couche-tard [2] */

M'enfin à part ça, je vois que mon IUT Info ne contient pas de morceau de programme sur le C (et à peine un module C++), et ça me désole un peu…
Déjà que les profs disent que « la mémoire on s'en fout », que même pour du java, on fait des trucs crados, et que le seul intérêt qu'ils ont vu au python était les module os et sys pour les cours de système…


dou

Hors ligne

#1415 Le 16/11/2010, à 20:56

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

helly a écrit :

Et tu me conseille quoi comme langage de prog fonctionnelle ?
J'ai vite fait un tour sur wiki, j'ai pas trop compris le principe…

Il y a 2 écoles :
- les descendants de Lisp (dont la syntaxe me fit vomir), typage faible et dynamique
- les descendants de Miranda, typage statique en général (parfois couplé à l'inférence de type).

Perso je ne suis pas fan des Lisp-like donc je ne peux pas te dire grand-chose sur eux (j'ai juste fait un peu de Scheme hmm).
Sinon, j'entends beaucoup de bien d'OCaml (développé par l'INRIA, multi-paradigme).C'est un langage interprété ou compilé, au choix. D'ailleurs, sur certains codes il est plus rapide que le C et sinon il se défend bien en général.

Perso j'utilise Haskell (fonctionnel pur), mais je suis encore en apprentissage hein, il y des trucs un peu dur à intégrer à certains moment.
Typage statique couplé à l'inférence de type (la système de type dans Haskell est très puissant), évaluation paresseuse, curryfication, monade et flèches (les trucs auxquels j'en suis, pas simple à comprendre mais super puissant),…
Niveau perf, c'est plus ou moins la même histoire que OCaml (un mec à codé un FPS en Haskell pour sa thèse il me semble)

Erlang serait plutôt bon aussi…

Après il y en a plein d'autres, à toi de chercher et de te faire ton avis.

Quelque soit le langage que tu choisis, essaye de trouver un tuto qui s'adresse à des gens qui on un passé "prog impérative" sinon c'est assez casse-gueule (trop de concepts nouveau d'un coup sans aucun lien avec ce que tu connais déjà, plutôt hard comme transition).

Si tu veux un ptit topo/résumé, tu peux lire les 2 premières parties de cette intro.


@Кຼزດ : pas de C et peu de C++ ?
C'est quoi cet IUT… Ce sont quand même, que l'on aime ou pas, des langages assez incontournable (avec le Java…).
Vous faites quoi du coup ?

Dernière modification par grim7reaper (Le 16/11/2010, à 21:01)

Hors ligne

#1416 Le 16/11/2010, à 21:05

Кຼزດ

Re : /* Topic des codeurs couche-tard [2] */

grim7reaper a écrit :

@Кຼزດ : pas de C et peu de C++ ?
C'est quoi cet IUT… Ce sont quand même, que l'on aime ou pas, des langages assez incontournable (avec le Java…).
Vous faites quoi du coup ?

Du java. Des interfaces graphiques en java. Des structures de données en java. Des sockets en java.
Je te laisse rêver.


dou

Hors ligne

#1417 Le 16/11/2010, à 21:09

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Je compatis.
Je conçoit qu'il faille faire du Java (vu que il y a de grosses chances de tomber sur du code Java), mais de là à ne faire presque que ça…

↓↓↓↓↓ @helly : lol ↓↓↓↓↓

Dernière modification par grim7reaper (Le 16/11/2010, à 21:10)

Hors ligne

#1418 Le 16/11/2010, à 21:09

helly

Re : /* Topic des codeurs couche-tard [2] */

Кຼزດ a écrit :
grim7reaper a écrit :

@Кຼزດ : pas de C et peu de C++ ?
C'est quoi cet IUT… Ce sont quand même, que l'on aime ou pas, des langages assez incontournable (avec le Java…).
Vous faites quoi du coup ?

Du java. Des interfaces graphiques en java. Des structures de données en java. Des sockets en java.
Je te laisse rêver.

Et des getc en java, vous en faites ?


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#1419 Le 16/11/2010, à 21:20

Кຼزດ

Re : /* Topic des codeurs couche-tard [2] */

lol Non
Mais j'imagine qu'en manipulant des Streams à la con ça devrait pouvoir se faire


dou

Hors ligne

#1420 Le 16/11/2010, à 21:31

helly

Re : /* Topic des codeurs couche-tard [2] */

Ouais, je planche dessus, mais je maîtrise pas encore trop bien le java…
Par contre, toi qui fais que ça, c'est honteux que tu saches pas mad !


Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.

Hors ligne

#1421 Le 16/11/2010, à 21:37

Кຼزດ

Re : /* Topic des codeurs couche-tard [2] */

helly a écrit :

Ouais, je planche dessus, mais je maîtrise pas encore trop bien le java…
Par contre, toi qui fais que ça, c'est honteux que tu saches pas mad !

Tu pioches là-dedans

% grep "Stream" /usr/share/doc/java/api/allclasses-frame.html | sed -s 's/<[^>]*>//g'
AccessibleStreamable
AudioInputStream
BufferedInputStream
BufferedOutputStream
ByteArrayInputStream
ByteArrayOutputStream
CheckedInputStream
CheckedOutputStream
CipherInputStream
CipherOutputStream
DataInputStream
DataInputStream
DataOutputStream
DataOutputStream
DeflaterInputStream
DeflaterOutputStream
DigestInputStream
DigestOutputStream
FileCacheImageInputStream
FileCacheImageOutputStream
FileImageInputStream
FileImageOutputStream
FileInputStream
FileOutputStream
FilterInputStream
FilterOutputStream
GZIPInputStream
GZIPOutputStream
ImageInputStream
ImageInputStreamImpl
ImageInputStreamSpi
ImageOutputStream
ImageOutputStreamImpl
ImageOutputStreamSpi
InflaterInputStream
InflaterOutputStream
InputStream
InputStream
InputStream
InputStreamReader
JarInputStream
JarOutputStream
LineNumberInputStream
LogStream
MemoryCacheImageInputStream
MemoryCacheImageOutputStream
ObjectInputStream
ObjectInputStream.GetField
ObjectOutputStream
ObjectOutputStream.PutField
ObjectStreamClass
ObjectStreamConstants
ObjectStreamException
ObjectStreamField
OctetStreamData
OutputStream
OutputStream
OutputStream
OutputStreamWriter
PipedInputStream
PipedOutputStream
PrintStream
ProgressMonitorInputStream
PushbackInputStream
RMICustomMaxStreamFormat
SequenceInputStream
Streamable
StreamableValue
StreamCorruptedException
StreamFilter
StreamHandler
StreamPrintService
StreamPrintServiceFactory
StreamReaderDelegate
StreamResult
StreamSource
StreamTokenizer
StringBufferInputStream
URLStreamHandler
URLStreamHandlerFactory
ValueInputStream
ValueOutputStream
XMLStreamConstants
XMLStreamException
XMLStreamReader
XMLStreamWriter
ZipInputStream
ZipOutputStream

Amuse toi smile
C'est pas parce que je ne fais que ça en cours que j'aime ça, ni même que ça m'intéresse.


dou

Hors ligne

#1422 Le 16/11/2010, à 21:43

grim7reaper

Re : /* Topic des codeurs couche-tard [2] */

Un truc qui montre à quel point Java est mal foutu, c'est que pour modifier une chaîne de caractère de manière « efficace » (pour autant que Java puisse l'être) il faut passer par les StringBuilder (ouais, les String c'est pas fait pour être modifié en fait).
Instinctif n'est-ce pas…

Hors ligne

#1423 Le 16/11/2010, à 22:30

tshirtman

Re : /* Topic des codeurs couche-tard [2] */

bon, j'ai  bien fait de tenter de compiler les classes que je produisait, j'ai tendance a pythonifier le java quand je l'écrit de tête >_<

Hors ligne

#1424 Le 17/11/2010, à 00:23

Pylades

Re : /* Topic des codeurs couche-tard [2] */

helly a écrit :
Pylade a écrit :

Ben ça ne marche pas, donc ! tongue


Bon, je viens de découvrir que mon .profile n'est pas sourcé ! yikes
OMFG, comment vais-je faire ?

Si.
Tu t'y connais en java toi ?

Je suis fier d'être pur sur ce point. smile


grim7reaper a écrit :

[…]
Essaye un autre langage : Ruby, Scheme, Perl, COBOL, Haskell, Visual Basic, OCaml…
C'est pas les langages qui manque (attention, il y a des pièges dans la liste précédente big_smile).
[…]

Alors, au hasard… COBOL et Visual Basic (voire Scheme, vu ton aversion pour les parenthèses) ? ^^


“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

#1425 Le 17/11/2010, à 00:24

tshirtman

Re : /* Topic des codeurs couche-tard [2] */

!/usr/bin/env python
# * coding:utf-8
# 16/11/2010
# GPLV3

# Le sujet ne précise nul part qu'il faut écrire le programme générateur en
# Java ou un quelconque autre langage, j'ai donc choisit d'implémenter la
# solution en python, l'API DOM étant fournis dans le langage.

from xml.etree import ElementTree
import os
xs="{http://www.w3.org/2001/XMLSchema}"

def get_shema(filename):
    return (ElementTree.parse(open(os.path.join(filename))))

def iter_entities(tree):
    for i in tree.getiterator(xs+"element"):
        if i.get('name'): yield i

def iter_entity_attributes(tree, name):
    for i in iter_entities(tree):
        if i.get('name') == name:
            for j in i.getiterator(xs+"element"):
                if j.get('ref'):
                    yield j

def create_class(tree, element):
    name = element.get('name')
    file = open(os.path.join("tests",name.capitalize()+".java"),'w')
    file.write(
"""
import java.util.ArrayList;
import java.util.Iterator;
import java.lang.Class;
import java.lang.reflect.Method;

public class """+name.capitalize()+"{\n"
    )
    if element.get('type'):
        file.write(
            "\tString value=\"\";\n"
            )
    else:
        for i in iter_entity_attributes(tree, name):
            if i.get("maxOccurs"):
                file.write(
                    "\tprivate ArrayList<"+i.get('ref').capitalize()+
                    "> "+i.get('ref')+"s = new ArrayList<"
                    +i.get('ref').capitalize()+">();\n"
                    )
            else:
                file.write(
                "\tprivate "+i.get('ref').capitalize()+' '+i.get('ref')+';\n'
                    )

        file.write("\n")
        for i in iter_entity_attributes(tree, name):
            at = i.get('ref')
            atClass = at.capitalize()

            if i.get("maxOccurs"):
                file.write(
                    "\tpublic void add"+atClass+ "("+
                    atClass+" type){\n"
                    )
                if i.get("maxOccurs") and i.get("maxOccurs") != "unbounded":
                    file.write(
                        "\t\tif ("+at+"s.size()<"+
                        i.get("maxOccurs")+"){\n\t\t\t"+at+
                        "s.add(type);\n\t\t}\n\t}\n"
                    )
                else:
                    file.write("\t\t"+at+"s.add(type);\n\t}\n")
                file.write(
                    "\tpublic void del"+atClass+"("+atClass+" type){\n"
                    )
                file.write(
                    "\t\tif ("+at+"s.size()>"
                    +(i.get("minOccurs") or '0')+"){\n"
                    )
                file.write("\t\t\t"+at+"s.remove(type);\n")
                file.write("\t\t}\n")
                file.write("\t}\n")
            else:
                file.write("\tpublic void set"+atClass+"("+atClass+" type){\n")
                file.write("\t\t"+at+" = type;\n\t}\n")
                file.write(
                    "\tpublic "+atClass+" get"+atClass+"("+atClass+" type){\n"
                    )
                file.write("\t\t"+at+" = type;\n\t}\n")
            file.write("\n")

        file.write(
    """
    public String save() {
        String result = "";
        result += "<"+this.getClass().getName().toLowerCase()+">\\n";
        try {
            // is this just a value
            this.getClass().getField("value");
        }
        catch (NoSuchFieldException e) {
            // no, then recurse on each values, deduced from get methods
            Method[] methods = this.getClass().getMethods();
            for (int i=0; i < methods.length(); i++){
                String name = methods[i].getName();
                }
        }
        result += "</"+this.getClass().getName().toLowerCase()+">\\n";
    }
    """
    )
    file.write('}\n')
    file.close()

if __name__ == "__main__":
    tree = get_shema('tests/example.xsd')
    for i in iter_entities(tree):
        create_class(tree, i)

bon vu que je parle très mal java il reste une erreur sur la manipulation du résultat de getMethods() dans la fonction save (qui du coup n'est pas finis de coder), mais sinon ça marche plutot bien.

fichier de test xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="bibliotheque">
<xs:complexType>
<xs:sequence>
<xs:element ref="livre" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="livre">
<xs:complexType>
<xs:sequence>
<xs:element ref="titre"/>
<xs:element ref="auteur"/>
<xs:element ref="editeur"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="titre" type="xs:string"/>
<xs:element name="auteur" type="xs:string"/>
<xs:element name="editeur" type="xs:string"/>
</xs:schema>

j'ai rendu comme ça, la deadline était à 23h55

Hors ligne