Moka kernel
|
#include <dart.hh>
Public Member Functions | |
CDart () | |
CDart (const CDart &ADart) | |
CDart (const std::bitset< NB_MARKS > &AMarks) | |
~CDart () | |
Utilisation des champs direct-info | |
Une information directe est un pointeur vers une structure de données quelconque. Le nombre d'informations par brin est fixé par la macro NB_DIRECT_INFO (voir fichier kernel-types.hh). Ceci permet un accès aux informations plus rapide qu'en passant par les attributs et les embeddings mais plus coûteux en place mémoire. | |
void * | getDirectInfo (int ADirectIndex) const |
void | setDirectInfo (int ADirectIndex, void *AValue) |
CEmbedding * | getFirstEmbedding () const |
void | setFirstEmbedding (CEmbedding *AEmbedding) |
CEmbedding * | getEmbedding (TOrbit AOrbit) const |
void | addEmbedding (CEmbedding *AEmbedding) |
CEmbedding * | removeEmbedding (CEmbedding *AEmbedding) |
CEmbedding * | removeEmbedding (TOrbit AOrbit) |
void | deleteEmbedding (CEmbedding *AEmbedding) |
void | deleteEmbedding (TOrbit AOrbit) |
void | mergeEmbedding (CEmbedding *AEmbedding) |
CAttribute * | getAttribute (TOrbit AOrbit, TAttributeId AAttribType) const |
void | addAttribute (TOrbit AOrbit, CAttribute *AAttribute) |
CAttribute * | removeAttribute (TOrbit AOrbit, TAttributeId AAttribType) |
void | deleteAttribute (TOrbit AOrbit, TAttributeId AAttribType) |
void | setOrbitUsed (TOrbit AOrbit) |
bool | isOrbitUsed (TOrbit AOrbit) const |
void | unsetOrbitUsed (TOrbit AOrbit) |
CDart * | getNext () const |
CDart * | getPrev () const |
void | setNext (CDart *ADart) |
void | setPrev (CDart *ADart) |
CDart * | getAlpha0 () const |
CDart * | getAlpha1 () const |
CDart * | getAlpha2 () const |
CDart * | getAlpha3 () const |
CDart * | getAlpha (int ADimension) const |
void | setAlpha0 (CDart *ADart) |
void | setAlpha1 (CDart *ADart) |
void | setAlpha2 (CDart *ADart) |
void | setAlpha3 (CDart *ADart) |
void | setAlpha (CDart *ADart, int ADimension) |
bool | isFree0 () const |
bool | isFree1 () const |
bool | isFree2 () const |
bool | isFree3 () const |
bool | isFree (int ADimension) const |
void | setFree0 () |
void | setFree1 () |
void | setFree2 () |
void | setFree3 () |
void | setFree (int ADimension) |
bool | getMark (int AMarkNumber) const |
void | setMark (int AMarkNumber, bool AValue) |
std::bitset< NB_MARKS > | getMarks () const |
void | setMarks (const std::bitset< NB_MARKS > &AMarks) |
Brin d'une 3-G-Carte.
Cette classe contient entre autres les fonctions de manipulation bas niveau des alphas, ainsi que celles de gestion des attributs (classe CEmbedding). Ses méthodes ne doivent pas être directement appelées par un utilisateur lambda : la manipulation des brins se fait toujours à l'aide de la classe de la carte généralisée (CGMapBasic / CGMap).
INLINE GMap3d::CDart::CDart | ( | ) |
Constructeur avec marquage
Construit un nouveau brin marqué selon la suite de marques AMarks, et dont les alphas sont initialisés à l'identité. Ce constructeur ne doit être appelé que par des utilisateurs avertis (préférer la méthode d'ajout de brin de la classe CGMap).
AMarks | Un tableau de marques à appliquer au brin créé |
INLINE GMap3d::CDart::~CDart | ( | ) |
INLINE void GMap3d::CDart::addAttribute | ( | TOrbit | AOrbit, |
CAttribute * | AAttribute | ||
) |
Ajout d'un attribut sur une orbite donnée
Cette méthode recherche dans la liste des "CEmbedding" la liste d'attributs qui correspond à l'orbite orbit. Si elle est trouvée, l'attribut data y est ajouté. Sinon une liste d'attributs contenant data est créé pour cette orbite.
orbit | l'orbite de plongement de l'attribut à ajouter |
data | l'attribut l'attribut data ne peut être nul |
INLINE void GMap3d::CDart::addEmbedding | ( | CEmbedding * | AEmbedding | ) |
Ajout d'une liste d'attributs à l'instance
Cette méthode ajoute la liste AEmbedding à la liste des "CEmbedding".
AEmbedding | une liste d'attributs La liste AEmbedding n'est pas vide et aucune liste de même orbite n'existe sur le brin instancié. les champs prev et next de AEmbedding sont a NULL |
INLINE void GMap3d::CDart::deleteAttribute | ( | TOrbit | AOrbit, |
TAttributeId | AAttribType | ||
) |
Suppression et destruction d'un attribut sur une orbite donnée
Cette méthode supprime l'attribut, de type AAttrType, de la liste des attributs de l'orbite AOrbit, puis le détruit.
AOrbit | l'orbite de plongement de l'attribut à supprimer |
AAttrType | le numéro d'identifiant de son type |
INLINE void GMap3d::CDart::deleteEmbedding | ( | CEmbedding * | AEmbedding | ) |
Suppression puis destruction de la liste d'attributs correspondant à une orbite donnée
Cette méthode recherche la liste d'attributs correspondant à l'orbite AOrbit, la retire de la liste des "CEmbedding", et enfin la détruit.
AOrbit | l'orbite de la liste à détruire |
Accesseur de l'involution alpha0
Cette méthode renvoie le brin qui est cousu par alpha0 à l'instance. Si cette instance n'est pas cousue à un autre brin, la méthode rentourne l'instance elle-même. Préférer tout de même la méthode de même nom de la classe CGMapBasic/CGMap.
INLINE CAttribute * GMap3d::CDart::getAttribute | ( | TOrbit | AOrbit, |
TAttributeId | AAttribType | ||
) | const |
Récupération d'un attribut plongé sur une orbite donnée
Cette méthode trouve dans la liste des "CEmbedding" la liste d'attributs qui correspond à l'orbite orbit, puis y recherche l'attribut de type AAttribType.
AOrbit | l'orbite de plongement de l'attribut recherché |
AAttribType | le numéro d'identifiant de son type |
INLINE void * GMap3d::CDart::getDirectInfo | ( | int | ADirectIndex | ) | const |
AIndice | Le numéro de l'information directe à récupérer. L'information directe permet de simuler une orbite vide (ORBIT_SELF) de manière plus rapide mais il n'y a aucune vérification. |
0 <= AIndice < NB_DIRECT_INFO
INLINE CEmbedding * GMap3d::CDart::getEmbedding | ( | TOrbit | AOrbit | ) | const |
Récupération de la liste d'attributs plongés sur une orbite donnée
Cette méthode recherche dans la liste des "CEmbedding" celui qui correspond à l'orbite orbit.
AOrbit | l'orbite correspondant à la liste d'attributs recherchés |
INLINE CEmbedding * GMap3d::CDart::getFirstEmbedding | ( | ) | const |
Récupération du premier élément de la liste des "CEmbedding"
Un "CEmbedding" est une liste d'attributs appartenant à une même orbite, dont le brin est propriétaire (voir de plus amples explications avec la clase CEmbedding). Chaque liste d'attributs d'une même orbite est elle-même chaînée avec les autres listes d'un même brin. Cette méthode retourne le premier élément (un "CEmbedding") de la liste chaînée des listes d'attributs.
INLINE bool GMap3d::CDart::getMark | ( | int | AMarkNumber | ) | const |
Test permettant de savoir si un brin est marqué.
Cette méthode renvoie VRAI si le brin possède la marque i. Le nombre de marques par brin est fixé par la variable NB_MARKS du fichier dart.hpp.
i | Le numéro de la marque à tester (entre 0 et NB_MARKS-1). |
Récupération du brin suivant dans la liste
La liste chaînée de brins permet à la carte généralisée de passer en revue l'ensemble des brins qu'elle contient. Cette méthode permet de se déplacer au prochain brin. Elle ne doit pas être utilisé par un utilisateur non averti (préférer un parcours : dynamic ou static CCoverageAll).
INLINE bool GMap3d::CDart::isFree | ( | int | ADimension | ) | const |
Test permettant de savoir si un brin est libre (non cousu) par alphaI.
Cette méthode teste si l'instance est cousu à lui-même par alphaI, avec i la dimension de la liaison à regarder. Elle renvoie VRAI si c'est le cas, FAUX si l'instance est cousu à un autre brin.
ADimension | la dimension de la liaison à tester. |
INLINE bool GMap3d::CDart::isFree0 | ( | ) | const |
Test permettant de savoir si un brin est libre (non cousu) par alpha0.
Cette méthode teste si l'instance est cousu à lui-même par alpha0. Elle renvoie VRAI si c'est le cas, FAUX si le brin instancié est cousu à un autre brin.
INLINE bool GMap3d::CDart::isFree1 | ( | ) | const |
INLINE bool GMap3d::CDart::isFree2 | ( | ) | const |
INLINE bool GMap3d::CDart::isFree3 | ( | ) | const |
INLINE void GMap3d::CDart::mergeEmbedding | ( | CEmbedding * | AEmbedding | ) |
Ajout, avec fusion le cas échéant, d'une liste d'attributs à l'instance
Cette méthode vérifie si une liste d'attributs de même orbite existe déjà sur le brin instancié. Si ce n'est pas le cas, la liste E est simplement ajoutée. Sinon les attributs de E sont ajoutés à la liste déjà présente.
AEmbedding n'est pas vide
INLINE CAttribute * GMap3d::CDart::removeAttribute | ( | TOrbit | AOrbit, |
TAttributeId | AAttribType | ||
) |
Suppression d'un attribut de la liste des attributs d'une orbite donnée
Cette méthode recherche la liste d'attributs correspondant à l'orbite orbit, et si elle existe, enlève l'attribut de type typeAttr qu'elle contient. Si la liste d'attributs est alors vide, elle est supprimée de la liste des "CEmbedding".
orbit | l'orbite de plongement de l'attribut à supprimer |
attrType | le numéro d'identifiant de son type |
INLINE CEmbedding * GMap3d::CDart::removeEmbedding | ( | CEmbedding * | AEmbedding | ) |
Suppression d'une liste d'attributs donnée dans la liste des "CEmbedding" de l'instance
Cette méthode ote la liste d'attributs E de la liste des "CEmbedding".
AEmbedding | la liste d'attributs à enlever |
AEmbedding n'est pas vide
INLINE CEmbedding * GMap3d::CDart::removeEmbedding | ( | TOrbit | AOrbit | ) |
Suppression de la liste d'attributs correspondant à une orbite donnée dans les "CEmbedding"
Cette méthode recherche la liste d'attributs correspondant à l'orbite orbit, et la supprime de la liste des "CEmbedding".
AOrbit | l'orbite de la liste à enlever |
Définition de l'involution alpha0
Cette méthode permet de lier un brin à l'instance par alpha0. Seule la classe CGMapBasic/CGMap peut l'utiliser (préférer pour les coutures les méthodes * de la classe CGMapBasic/CGMap telles que sew0, voire dartSew0 ou topoSew0, et en dernière solution linkAlpha0).
le | brin à lier par alpha0 à l'instance. |
INLINE void GMap3d::CDart::setDirectInfo | ( | int | ADirectIndex, |
void * | AValue | ||
) |
INLINE void GMap3d::CDart::setFirstEmbedding | ( | CEmbedding * | AEmbedding | ) |
Définition du premier élément de la liste des "CEmbedding"
Cette méthode pose un "CEmbedding" comme étant le premier élément de la liste des "CEmbedding", sans aucune vérification d'existence du premier "CEmbedding". Cette méthode ne doit être utilisée que par la carte généralisée.
AEmbedding | la liste d'attributs à placer en première position. |
INLINE void GMap3d::CDart::setFree | ( | int | ADimension | ) |
Libération pour le brin instancié de son involution alphaI
Cette méthode coud pour alphaI l'instance à elle-même. Le brin devient libre par alphaI, mais aucune vérification de la cohérence de la carte généralisée n'est faite. Préférer donc les méthodes de la classe CGMapBasic/CGMap telles que unsew, voire dartUnsew ou topoUnsew, et en dernier ressort unlinkAlpha.
ADimension | le dimension de la liaison alphaI à considérer. |
INLINE void GMap3d::CDart::setFree0 | ( | ) |
Libération de l'involution alpha0 de l'instance.
Cette méthode coud pour alpha0 l'instance à elle-même. Le brin devient libre par alpha0, mais aucune vérification de la cohérence de la carte généralisée n'est faite. Préférer donc les méthodes de la classe CGMapBasic/CGMap telles que unsew0, voire dartUnsew0 ou topoUnsew0, et en dernier ressort unlinkAlpha0.
INLINE void GMap3d::CDart::setFree1 | ( | ) |
INLINE void GMap3d::CDart::setFree2 | ( | ) |
INLINE void GMap3d::CDart::setFree3 | ( | ) |
INLINE void GMap3d::CDart::setMark | ( | int | AMarkNumber, |
bool | AValue | ||
) |
Méthode définissant si un brin est marqué ou non.
Cette méthode définit la i-ème marque selon le booléen value. Si value est à VRAI, le brin sera marqué par la marque i.
i | Le numéro de la marque à changer (entre 0 et NB_MARKS-1). |
value | La valeur booléenne de la marque. 0 <= i < NB_MARKS |
Définition du brin suivant dans la liste
Cette méthode permet de définir quel est le brin suivant l'instance dans la liste. Cette méthode ne doit pas être directement utilisée, elle permet à la carte généralisée d'ajouter un brin dans la liste (préférer addMapDart de la classe CGMapBasic).
le | brin de la liste chaînée qui suit l'instance. |
Méthode précisant que la présence d'une orbite donnée dans la liste des "CEmbedding" de l'instance.
Cette méthode définit comme utilisée l'orbite orbit sur le brin. Aucune vérification supplémentaire n'est effectué sur la cohérence des plongements, cette méthode étant une méthode de premier niveau.
AOrbit | l'orbite à utiliser ORBIT_SELF <= AOrbit <= ORBIT0123 |