Documentation XML pour le code C++

De RAD Studio
Aller à : navigation, rechercher

Remonter à Sortie XML du compilateur


Les compilateurs C++ de précédente génération peuvent générer un fichier XML avec les déclarations d'un fichier source C++ et les en-têtes inclus. Ces informations générées sont similaires aux informations affichées par l'explorateur de classes C++, dans le sens où les deux affichent les informations de la table de symboles du compilateur.

Par activer cette fonctionnalité, sélectionnez Projet > Options > Compilateur C++ > Avancées puis, sous Autres options, ajoutez l'une des options de la ligne de commande listée ci-dessous à l'option "Autres options à transmettre au compilateur".
Pour activer cette fonctionnalisé sur la ligne de commande, exécutez le compilateur en ligne de commande en utilisant l'une des options de ligne de commande listées ci-dessous.

Le format (schéma) du fichier XML est décrit dans Déclarations globales de sortie du compilateur XML.

Options de commande pour la sortie XML

-Zx - Générer la sortie XML

L'option -Zx invite le compilateur à générer un fichier XML des symboles rencontrés lors du traitement d'un fichier source C++ et de ses en-têtes. Par exemple, avec le fichier source suivant (test.cpp), l'option -Zx produit le fichier XML test.xml présenté ci-dessous :

test.cpp :

class TBase {
  int id;
};

class TDerived : public TBase {
  char *name;
};

test.xml :

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

Vous pouvez ajouter toute combinaison des sous-options suivantes à l'option -Zx pour modifier son comportement :

  • f : ignorer les membres type de base.
  • m : émettre les macros.
  • p : émettre le fichier et la position de la ligne.

-Zxf - Ignorer les informations des ancêtres

Lors du traitement d'une classe pour la sortie XML par défaut, le compilateur génère des informations sur les membres des types de base (ancêtres) de cette classe. La sous-option f indique au compilateur de ne pas générer des informations pour les types de base. Le tableau suivant illustre comment la sous-option f change le .xml généré pour le fichier test.cpp.

test.xml sans la sous-option f :

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

test.xml avec la sous-option f :

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

-Zxp - Générer les informations de position

La sous-option p indique au compilateur d'inclure les attributs décrivant le fichier et la ligne de chaque déclaration. Le tableau suivant illustre test.xml avec la sous-option p activée.

test.xml avec la sous-option p :

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public" file="test.cpp" line="1">
        <members>
            <field name="id" type="int" visibility="private" file="test.cpp" line="2" />
        </members>
    </class>
    <class name="TDerived" visibility="public" file="test.cpp" line="5">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" file="test.cpp" line="6" />
        </members>
    </class>
</file>

Voir aussi