Visualisation C++ - Notes sur l'édition

© Copyright International Business Machines Corporation 2006. All rights reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

Notes sur l'édition

1.0 Limitations
   1.1 Prise en charge de la spécialisation des modèles
   1.2 Modification des zones et des méthodes des types C++ anonymes
   1.3 Modification des zones et des méthodes des types C++ imbriqués
2.0 Problèmes connus et leurs solutions
   2.1 Définitions de type avec des noms qualifiés
   2.2 Régénération de diagrammes avec des modifications de code et des index

1.0 Limitations

1.1 Prise en charge de la spécialisation des modèles

Les modèles C++ normaux peuvent être visualisés et modifiés. Cependant, les spécialisations et les spécialisations partielles des modèles ne sont pas prises en charge en raison de l'absence de prise en charge dans CDT. L'interface utilisateur actuelle ne désactive pas les entrées de visualisation pour les spécialisations complètes et partielles. Par exemple :
template <class T> class MyVec {
 T* data;
 int length;
}; 

Il s'agit d'un modèle normal. La visualisation réussira pour celui-ci.

template <> class MyVec<bool> {
 unsigned int * data;
 int length;
}; 

Il s'agit d'une spécialisation de modèle. La visualisation échouera pour celle-ci.

1.2 Modification des zones et des méthodes des types C++ anonymes

La modification de zones et de méthodes n'est pas prise en charge pour les types C++ anonymes. Par exemple :
class c1 {
   class {int j;} abc;    // Le type du membre abc est un type anonyme car la classe de définition n'a donné aucun nom de type
};

Ici, le type de la zone abc est une classe anonyme.

Actuellement, la visualisation C++ n'a pas la capacité de gérer les deltas de modification pour les types anonymes quand des opérations de modification, telles que l'ajout ou la suppression de zones, de méthodes et de littéraux d'énumération, sont effectuées sur le diagramme. Par conséquent, les fonctionnalités de modification de la visualisation C++ sont désactivées pour les types anonymes. Une recommandation générale est de travailler autant que possible avec des types nommés de façon à ce que les fonctions de modification soient disponibles. Si ce n'est pas possible, le code doit être modifié directement.

1.3 Modification de zones et de méthodes des types C++ imbriqués

La modification de zones et de méthodes des types C++ nommés qui sont imbriqués dans des espaces de nom anonymes n'est pas prise en charge. Par exemple :

namespace {   // espace de nom anonyme
    class c1 {};
}

Ici, la classe c1 est un type nommé imbriqué dans un espace de nom anonyme.

Actuellement, la visualisation C++ n'a pas la capacité de gérer les modifications apportées aux types nommés imbriqués dans des espaces de nom anonymes quand des opérations de modification, telles que l'ajout ou la suppression de zones, de méthodes et de littéraux d'énumération sont effectuées sur le diagramme. Par conséquent, les fonctions de modification de la visualisation C++ sont désactivées pour les types de nom imbriqués dans des espaces de nom anonymes. Il est donc généralement recommandé d'utiliser autant que possible des espaces de nom nommés pour que les fonctions de modification soient disponibles. Si ce n'est pas possible, le code doit être modifié directement.

2.0 Problèmes connus et leurs solutions

2.1 Définitions de types avec des noms qualifiés

Les définitions de types avec des noms qualifiés ne sont pas prises en charge pour la visualisation C++. Par exemple :

namespace n1 {
   class c1;    // Déclaration anticipée de la classe c1
}
class n1::c1{ int i;};   //  Définition de la classe c1 à l'aide du nom qualifié complet.

La visualisation C++ ne peut pas traiter les définitions ci-dessus et la visualisation de la classe c1 échoue.

Solution : Utilisez l'équivalent suivant du code ci-dessus :

namespace n1 {
 class c1{ int i;};
}

2.2 Régénération de diagrammes avec des modifications de code et des index

Parfois, des modifications apportées au code, notamment le changement de nom d'éléments ou l'ajout/suppression de membres dans des types, peuvent ne pas être reflétés dans les diagrammes de la visualisation. Les causes les plus courantes de ceci sont l'inadéquation ou l'absence de notifications en provenance du CDT.

Solution : Effectuez de fausses modifications sur un fichier et enregistrez à nouveau le code. De plus, "l'index C/C++" créé par CDT peut parfois ne pas être cohérent avec le code. Une vérification rapide de l'index C/C++ (Afficher vue > Autre > C/C++ > Index C/C++) pour voir si certaines entrées sont manquantes peut donner une indication de ce que la mise à jour de l'index est un problème. Dans de tels cas, la reconstitution de l'index sur le projet peut être utile. Cependant, cette reconstitution peut être longue pour des gros projets et doit être utilisée avec précaution. Si vous voulez afficher les éléments concernés dans un diagramme, sélectionnez l'option Indexeur C/C++ complet.