Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmg-direct-info.hh File Reference

Go to the source code of this file.

Functions

void allocMemoryToDirectInfo (int AMarkNumber, int ADirectInfoIndex, int ABytes, TOrbit AOrbitUsed=ORBIT_NONE)
 
void allocMemoryToDirectInfo (CDart *ADart, TOrbit AOrbit, int ADirectInfoIndex, int ABytes, TOrbit AOrbitUsed=ORBIT_NONE)
 
void freeMemoryFromDirectInfo (int AMarkNumber, int ADirectInfoIndex, TOrbit AOrbitUsed=ORBIT_NONE)
 
void freeMemoryFromDirectInfo (CDart *ADart, TOrbit AOrbit, int ADirectInfoIndex, TOrbit AOrbitUsed=ORBIT_NONE)
 
void saveAlphaInDirectInfo (int AAlphaIndex, int ADirectInfoIndex)
 
void initUnionFindTrees (int AIndex, TOrbit AOrbit)
 
void initTwoUnionFindTrees (int AIndex1, TOrbit AOrbit1, int AIndex2, TOrbit AOrbit2)
 
void initUnionFindTreesFaceVolume (int AIndexFace, int AIndexVol)
 
void initUnionFindTreesVerticesEdges (int AIndexVertex, int AIndexEdge)
 
CDart * findUnionFindTrees (CDart *ADart, int AIndex)
 
void mergeUnionFindTrees (CDart *ADart1, CDart *ADart2, int AIndex)
 

Function Documentation

void allocMemoryToDirectInfo ( int  AMarkNumber,
int  ADirectInfoIndex,
int  ABytes,
TOrbit  AOrbitUsed = ORBIT_NONE 
)

Alloue ABytes octets au champ directInfo[ADirectInfoIndex] des brins marqués avec la marque AMarkNumber.

Si AOrbitUsed est différent de ORBIT_NONE, l'allocation n'est faite que pour le brin porteur du plongement AOrbitUsed de chaque cellule d'orbite AOrbitUsed dont un brin au moins est marqué.

Parameters
AMarkNumberUn numéro de marque
ADirectInfoIndexL'indice du champ directInfo à utiliser
ABytesLe nombre d'octets à allouer
AOrbitUsedUne orbite quelconque
void allocMemoryToDirectInfo ( CDart *  ADart,
TOrbit  AOrbit,
int  ADirectInfoIndex,
int  ABytes,
TOrbit  AOrbitUsed = ORBIT_NONE 
)

Alloue ABytes octets au champ directInfo[ADirectInfoIndex] des brins correspondant à l'orbite donnée par le couple (ADart, AOrbit).

Si AOrbitUsed est différent de ORBIT_NONE, l'allocation n'est faite que pour le brin porteur du plongement AOrbitUsed de chaque cellule d'orbite AOrbitUsed dont un brin au moins est sur l'orbite (ADart, AOrbit).

Parameters
ADartUn brin quelconque de la carte
AOrbitUne orbite
ADirectInfoIndexL'indice du champ directInfo à utiliser
ABytesLe nombre d'octets à allouer
AOrbitUsedUne orbite quelconque
CDart* findUnionFindTrees ( CDart *  ADart,
int  AIndex 
)

Return the root of the uf-tree containing ADart.

Parameters
ADartthe dart to find the root.
AIndexthe direct info index to use.
void freeMemoryFromDirectInfo ( int  AMarkNumber,
int  ADirectInfoIndex,
TOrbit  AOrbitUsed = ORBIT_NONE 
)

Libère l'espace mémoire affecté au champ directInfo[ADirectInfoIndex] des brins marqués avec la marque AMarkNumber.

Si AOrbitUsed est différent de ORBIT_NONE, l'allocation n'est faite que pour le brin porteur du plongement AOrbitUsed de chaque cellule d'orbite AOrbitUsed dont un brin au moins est marqué.

Parameters
AMarkNumberUn numéro de marque
ADirectInfoIndexL'indice du champ directInfo à utiliser
AOrbitUsedUne orbite quelconque
void freeMemoryFromDirectInfo ( CDart *  ADart,
TOrbit  AOrbit,
int  ADirectInfoIndex,
TOrbit  AOrbitUsed = ORBIT_NONE 
)

Libère l'espace mémoire affecté au champ directInfo[ADirectInfoIndex] des brins marqués avec la marque AMarkNumber.

Si AOrbitUsed est différent de ORBIT_NONE, la libération n'est faite que pour le brin porteur du plongement AOrbitUsed de chaque cellule d'orbite AOrbitUsed dont un brin au moins est marqué.

Parameters
ADartUn brin quelconque de la carte
AOrbitUne orbite
ADirectInfoIndexL'indice du champ directInfo à utiliser
AOrbitUsedUne orbite quelconque
void initTwoUnionFindTrees ( int  AIndex1,
TOrbit  AOrbit1,
int  AIndex2,
TOrbit  AOrbit2 
)

Init union find trees for two direct info, and two orbits.

Parameters
AIndex1the first direct info index to use.
AOrbit1the first orbit for which initialize union find trees.
AIndex2the second direct info index to use.
AOrbit2the second orbit for which initialize union find trees.
void initUnionFindTrees ( int  AIndex,
TOrbit  AOrbit 
)

Point each dart of a same AOrbit to the first dart of this orbit. This dart point to itself. Allows to use union-find trees on this orbit.

Parameters
AIndexthe direct info index to use.
AOrbitthe orbit for which initialize union find trees.
void initUnionFindTreesFaceVolume ( int  AIndexFace,
int  AIndexVol 
)

Init union find trees for two direct info, for faces and volumes. This method is equivalent to calling initTwoUnionFindTrees with ORBIT_FACE and ORBIT_VOLUME, but it is optimized.

Parameters
AIndexFacethe direct info index for faces.
AIndexVolthe direct info index for volumes.
void initUnionFindTreesVerticesEdges ( int  AIndexVertex,
int  AIndexEdge 
)

Init union find trees for two direct info, for vertices and edges. This method is equivalent to calling initTwoUnionFindTrees with ORBIT_VERTEX and ORBIT_EDGE, but it is optimized.

Parameters
AIndexVertexthe direct info index for vertices.
AIndexEdgethe direct info index for edges.
void mergeUnionFindTrees ( CDart *  ADart1,
CDart *  ADart2,
int  AIndex 
)

Merge the two uf-trees containing ADart1 and ADart2.

Parameters
ADart1the dart of a first uf-tree.
ADart2the dart of a second uf-tree.
AIndexthe direct info index to use.
Todo:
we can improve this by counting the size of the tree and putting the small one under the big one.
void saveAlphaInDirectInfo ( int  AAlphaIndex,
int  ADirectInfoIndex 
)

Pour chaque brin b de la carte, copie la valeur de l'image par alpha AAlphaIndex de b dans son champ direcInfo d'indice ADirectInfoIndex.

Remarque: La méthode 'getDirectInfoAsDart' permet de récupérer aisément les valeurs sauvées.

Parameters
AAlphaIndexUne dimension (0, 1, 2 ou 3)
ADirectInfoIndexUn indice de champ directInfo