21-Fév-2005  
 

Rien

 

Uniformisation des macros pour les objets:

Pour rappel, ces macros permettent de définir une série de fonctions membres automatiquement. Par exemple, chaque objet possède une fonction statique className() qui permet de récupérer son nom (vu que l'implémentation des RTTI n'est pas identique sur toutes les plateformes).

J'ai viré GPSTATE_COMMON_H et REZONER_COMMON_H pour placer le constructeur virtuel (getClone()) au niveau de VirtualObject (objet de base). Ce constructeur par copie est utile pour un tas de classes qui définissent chacune une macro (ReZoner - Extractor - GpState - NumberedObject - License - Unknown - etc). Le problème vient des classes abstraites qui ne peuvent pas définir ce code (idem pour les classes dont la copie a été désactivée comme les éléments et les matériaux). J'ai donc créé une macro AOBJECT_COMMON_H (c'est l'ancien VOBJECT_COMMON_H) qui ne contient pas le constructeur virtuel. Par contre, la macro VOBJECT_COMMON_H la contient.

En résumé, une classe non virtuelle doit déclarer CLASSCOMMON_H. Une classe abstraite telle que MetaElement ou sans copie telle que VizWin doit déclarer AOBJECT_COMMON_H et, enfin, une classe "finale" (pouvant être instanciée et copiée) déclare VOBJECT_COMMON_H

Un petit tableau récapitulatif histoire d'avoir les idées claires:

macro type fonctions
CLASSCOMMON_H classe non virtuelle className() [statique]
AOBJECT_COMMON_H classe abstraite ou sans copie (A=abstract) id()
    getObjectName()
    sizeOf()
VOBJECT_COMMON_H classe virtuelle getClone()

Autres macros utiles:

macro type expl
DISABLE_COPY déclare les opérateurs de copies comme "privés" MetaElement
HASDRAWABLE ajoute une réf vers un Drawable (visualisation) Side
NUMBEREDOBJECT_COMMON_H ajoute la fonction getNumberedSetPo() pour récupérer le type de conteneur (CURVESET_ID pour Arc par exemple) Arc

Je pense qu'il sera aussi intéressant de fusionner NUMBEREDOBJECT_COMMON_H et VOBJECT_COMMON_H (quand ElementSet, MaterialSet, etc seront des NumberedObjectSet ...)

Fichiers ajoutés/supprimés:

R mtKernel/NumberedObject.inl
A mtElements/ContactConfigFlag.cpp

 

Back to Metafor web server
created :17-Fév-2005   modified : 21-Fév-2005
contact : r_boman_AT_yahoo.fr