Bonjour,
Suite a un projet java, je me suis constitué une petite biblioteque personnelle et maintenant je me met au C++ et je me suis dit que ca serait pratique d'avoir mes objet independants de ces deux languages.
D'ou mon post que je vais tout de suite illustrer avec un exemple qui me sert a develloper mon idée :
Objet sous forme de fichier XML :
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 <?xml version="1.0" ?> <obj name='test' > <member scope='public' name='id' type='int' value='0'> <attr value='static' /> <attr value='const' /> </member> <member name='x' type='int' value='0' /> <member name='y' type='int' value='0' /> <method return='int' name='getX' param='none' /> <method return='int' name='getY' param='none' /> </obj>
et feuille xsl pour obtenir un fichier cpp ( je ferais pour java plus tard, c'est le principe qui compte pour l'instant ^^) :
testé avec xalan (xalan.jar
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match='obj'> class <xsl:value-of select='@name' /> { public: <xsl:text> </xsl:text> <xsl:apply-templates select='member[@scope="public"]'/> <xsl:text> </xsl:text> <xsl:apply-templates select='method' /> private: <xsl:text> </xsl:text> <xsl:apply-templates select='member[not(@scope)or(@scope="private")]' /> } </xsl:template> <xsl:template match='member'> <xsl:text> </xsl:text> <xsl:for-each select='attr'> <xsl:value-of select='@value' /> <xsl:text> </xsl:text> </xsl:for-each> <xsl:value-of select='@type' /> <xsl:text> </xsl:text> <xsl:value-of select='@name' /> <xsl:if test='@value'> <xsl:text> = </xsl:text> <xsl:value-of select='@value' /> </xsl:if> <xsl:text>; </xsl:text> </xsl:template> <xsl:template match='method'> <xsl:text> </xsl:text> <xsl:if test='not(@return)'> <xsl:text>void </xsl:text> </xsl:if> <xsl:value-of select='@return' /> <xsl:text> </xsl:text> <xsl:value-of select='@name' /> <xsl:text>(</xsl:text> <xsl:text>); </xsl:text> </xsl:template> <xsl:template match='text()' /> </xsl:stylesheet>)
et ca fonctionne !
edit : le rendu :
Question simple : qu'en pensez-vous ?
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 class test { public: static const int id = 0; int getX(); int getY(); private: int x = 0; int y = 0; }
Partager