Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
kernel-types.hh File Reference
#include "attributes-id.hh"
#include "alt-stdint.hh"
#include <bitset>
#include <string>

Go to the source code of this file.

Macros

Définition des types de base du noyau (orbites, involutions et

masques)

Author
MOKA TEAM
#define NB_MARKS   (32)
 
#define NB_DIRECT_INFO   (4)
 
Opérations sur les orbites.

Les différents identifiants des attributs sont définis dans le fichier attributes-id.hh

Une orbite est définie par un ensemble d'involutions. Une orbite peut donc être manipulée comme un ensemble.

#define NEG_ORBIT(O1)   (static_cast<TOrbit> (0xF ^ (static_cast<unsigned int>(O1))))
 
#define ADD_ORBIT(O1, O2)
 
#define AND_ORBIT(O1, O2)
 
#define SUB_ORBIT(O1, O2)
 
#define IS_ORBIT_INCLUDED(O1, O2)
 

Typedefs

typedef int8_t TOrbit
 Type Orbite.
 
typedef int TAttributeId
 

Enumerations

enum  {
  ORBIT_NONE = -1, ORBIT_SELF, ORBIT_0, ORBIT_1,
  ORBIT_01, ORBIT_2, ORBIT_02, ORBIT_12,
  ORBIT_012, ORBIT_3, ORBIT_03, ORBIT_13,
  ORBIT_013, ORBIT_23, ORBIT_023, ORBIT_123,
  ORBIT_0123, ORBIT_BORDER_0, ORBIT_BORDER_1, ORBIT_BORDER_2,
  ORBIT_BORDER_3
}
 

Variables

const TOrbit ORBIT_VERTEX = ORBIT_123
 
const TOrbit ORBIT_EDGE = ORBIT_023
 
const TOrbit ORBIT_FACE = ORBIT_013
 
const TOrbit ORBIT_VOLUME = ORBIT_012
 
const TOrbit ORBIT_CC = ORBIT_0123
 
const TOrbit ORBIT_INF [4]
 
const TOrbit ORBIT_CELL [5]
 Orbite cellule de dimension l'indice du tableau.
 
const TOrbit ORBIT_BORDER [4]
 Orbite bord de dimension l'indice du tableau.
 
const TOrbit ORBIT_I_IM1 [4]
 
const TOrbit ORBIT_I_IP1 [4]
 
const TOrbit ORBIT_INVO [4]
 
const TOrbit ORBIT_SEWS [4]
 Orbite qui est modifiée lors d'une couture par l'indice du tableau.
 
const TOrbit ORBIT_DIM [4]
 Orbite par l'involution d'indice celui du tableau.
 
enum  {
  OP_NONE = -1, OP_ALPHA0, OP_ALPHA1, OP_ALPHA2,
  OP_ALPHA3, OP_ALPHAI, OP_ALPHAJ, OP_ALPHAK,
  OP_JUMP, OP_TURN_AROUND, OP_END, OP_UNKNOWN
}
 
typedef int8_t TOperationState
 

Les masques

Les masques sont des tableaux de bits interprétés comme en valeur booléenne. L'indice du tableau correspond à l'indice de l'involution associée au booléen.

typedef std::bitset< 16 > TMask16
 Définition du type TMask16 pour les 16 orbites possibles.
 
const TMask16 MASK_FALSE ((unsigned int) 0x0000)
 Attention, les bits de poids fort sont à gauche.
 
const TMask16 MASK_TRUE ((unsigned int) 0xFFFF)
 Mask 'vrai'.
 
const TMask16 MASK0 ((unsigned int) 0xAAAA)
 
const TMask16 MASK1 ((unsigned int) 0xCCCC)
 
const TMask16 MASK2 ((unsigned int) 0xF0F0)
 
const TMask16 MASK3 ((unsigned int) 0xFF00)
 
const TMask16 MASK0M2 (MASK0 &~MASK2)
 Masques de toutes les orbites contenant alphai et pas alphaj :
 
const TMask16 MASK0M3 (MASK0 &~MASK3)
 
const TMask16 MASK1M3 (MASK1 &~MASK3)
 
const TMask16 MASK2M0 (MASK2 &~MASK0)
 
const TMask16 MASK3M0 (MASK3 &~MASK0)
 
const TMask16 MASK3M1 (MASK3 &~MASK1)
 

Type d'affichage éclaté.

enum  { FIRST_BURST_METHOD = 0, BURST_METHOD_SCALE = FIRST_BURST_METHOD, BURST_METHOD_SHIFT, LAST_BURST_METHOD }
 
typedef int8_t TBurstMethod
 

Macro Definition Documentation

#define ADD_ORBIT (   O1,
  O2 
)
Value:
(static_cast<TOrbit>( \
static_cast<unsigned int>(O1) | \
static_cast<unsigned int>(O2)))

Union de 2 orbites.

Parameters
O1Une orbite.
O2Une orbite.
Returns
L'orbite définie par l'union des ensembles d'involutions définissant O1 et O2.

Definition at line 126 of file kernel-types.hh.

#define AND_ORBIT (   O1,
  O2 
)
Value:
(static_cast<TOrbit>( \
static_cast<unsigned int>(O1) & \
static_cast<unsigned int>(O2)))

Intersection de 2 orbites.

Parameters
O1Une orbite.
O2Une orbite.
Returns
L'orbite définie par l'intersection des ensembles d'involutions définissant O1 et O2.

Definition at line 139 of file kernel-types.hh.

#define IS_ORBIT_INCLUDED (   O1,
  O2 
)
Value:
(static_cast<TOrbit>( \
static_cast<unsigned int>(O1) & \
static_cast<unsigned int>(O2)) == O1)

Test d'inclusion d'orbites.

Parameters
O1Une orbite.
O2Une orbite.
Returns
Un booléen indiquant si l'orbite O1 est incluse dans l'orbite O2.

Definition at line 164 of file kernel-types.hh.

#define NB_DIRECT_INFO   (4)

Nombre de champs direct-info associés aux brins.

Definition at line 53 of file kernel-types.hh.

#define NB_MARKS   (32)

Nombre de marques associées aux brins.

Definition at line 48 of file kernel-types.hh.

#define NEG_ORBIT (   O1)    (static_cast<TOrbit> (0xF ^ (static_cast<unsigned int>(O1))))

Complémentaire d'une orbite.

Parameters
O1Une orbite.
Returns
L'orbite définie par le complémentaire de l'ensemble d'involutions définissant O1.

Definition at line 115 of file kernel-types.hh.

#define SUB_ORBIT (   O1,
  O2 
)
Value:
(static_cast<TOrbit>( \
static_cast<unsigned int>(O1) & \
static_cast<unsigned int>(NEG_ORBIT(O2))))

Soustraction d'orbites.

Parameters
O1Une orbite.
O2Une orbite.
Returns
L'orbite définie par l'ensemble d'involutions définissant O1 privé de l'ensemble d'involutions définissant O2.

Definition at line 152 of file kernel-types.hh.

Typedef Documentation

typedef int TAttributeId

Definition at line 94 of file kernel-types.hh.

Ce type permet de spécifier quel type d'affichage éclatée on utilise.

Definition at line 341 of file kernel-types.hh.

typedef std::bitset<16> TMask16

Définition du type TMask16 pour les 16 orbites possibles.

Definition at line 296 of file kernel-types.hh.

Ce type permet, lors d'un parcours, de connaître quel est le type de la dernière opération

Definition at line 247 of file kernel-types.hh.

typedef int8_t TOrbit

Type Orbite.

Definition at line 59 of file kernel-types.hh.

Enumeration Type Documentation

anonymous enum
Enumerator:
ORBIT_NONE 
ORBIT_SELF 
ORBIT_0 
ORBIT_1 
ORBIT_01 
ORBIT_2 
ORBIT_02 
ORBIT_12 
ORBIT_012 
ORBIT_3 
ORBIT_03 
ORBIT_13 
ORBIT_013 
ORBIT_23 
ORBIT_023 
ORBIT_123 
ORBIT_0123 
ORBIT_BORDER_0 
ORBIT_BORDER_1 
ORBIT_BORDER_2 
ORBIT_BORDER_3 

Definition at line 63 of file kernel-types.hh.

anonymous enum
Enumerator:
OP_NONE 

Le parcours débute et il n'y a pas d'opération précédente (operator++).

OP_ALPHA0 

L'opération précédente était un operator++ de type alpha0.

OP_ALPHA1 

L'opération précédente était un operator++ de type alpha1.

OP_ALPHA2 

L'opération précédente était un operator++ de type alpha2.

OP_ALPHA3 

L'opération précédente était un operator++ de type alpha3.

OP_ALPHAI 

Pour les templates de parcours, les alpha relatifs utilisés sont alphai pour le premier,

OP_ALPHAJ 

alphaj pour le second.

OP_ALPHAK 

et alphak pour le troisième.

OP_JUMP 

Opération de saut (pour les parcours qui utilisent une pile)

OP_TURN_AROUND 

Pour un parcours de bord de dimension i, étape qui consiste à "tourner" autour d'une cellule à l'aide de l'involution alpha(i).alpha(i-1).

OP_END 

End of op ???....

OP_UNKNOWN 

Definition at line 249 of file kernel-types.hh.

anonymous enum
Enumerator:
FIRST_BURST_METHOD 
BURST_METHOD_SCALE 
BURST_METHOD_SHIFT 
LAST_BURST_METHOD 

Definition at line 343 of file kernel-types.hh.

Function Documentation

const TMask16 MASK0 ( (unsigned int)  0xAAAA)

Masque de toutes les orbites contenant l'involution alpha0 dans leur ensemble définition.

const TMask16 MASK0M2 ( MASK0 &~  MASK2)

Masques de toutes les orbites contenant alphai et pas alphaj :

const TMask16 MASK0M3 ( MASK0 &~  MASK3)
const TMask16 MASK1 ( (unsigned int)  0xCCCC)

Masque de toutes les orbites contenant l'involution alpha1 dans leur ensemble définition.

const TMask16 MASK1M3 ( MASK1 &~  MASK3)
const TMask16 MASK2 ( (unsigned int)  0xF0F0)

Masque de toutes les orbites contenant l'involution alpha2 dans leur ensemble définition.

const TMask16 MASK2M0 ( MASK2 &~  MASK0)
const TMask16 MASK3 ( (unsigned int)  0xFF00)

Masque de toutes les orbites contenant l'involution alpha3 dans leur ensemble définition.

const TMask16 MASK3M0 ( MASK3 &~  MASK0)
const TMask16 MASK3M1 ( MASK3 &~  MASK1)
const TMask16 MASK_FALSE ( (unsigned int)  0x0000)

Attention, les bits de poids fort sont à gauche.

Un masque est un tableau de 16 booléens utilisé principalement pour la mise à jour des plongements. En effet, lors d'une couture ou d'une décousure de dimension i, toutes les orbites ne contenant pas l'involution alphai peuvent nécessiter une modification de leurs plongements.Masque 'faux'.

const TMask16 MASK_TRUE ( (unsigned int)  0xFFFF)

Mask 'vrai'.

Variable Documentation

const TOrbit ORBIT_BORDER[4]
Initial value:

Orbite bord de dimension l'indice du tableau.

Definition at line 200 of file kernel-types.hh.

const TOrbit ORBIT_CC = ORBIT_0123

Definition at line 178 of file kernel-types.hh.

const TOrbit ORBIT_CELL[5]
Initial value:

Orbite cellule de dimension l'indice du tableau.

Definition at line 194 of file kernel-types.hh.

const TOrbit ORBIT_DIM[4]
Initial value:

Orbite par l'involution d'indice celui du tableau.

Definition at line 233 of file kernel-types.hh.

const TOrbit ORBIT_EDGE = ORBIT_023

Definition at line 175 of file kernel-types.hh.

const TOrbit ORBIT_FACE = ORBIT_013

Definition at line 176 of file kernel-types.hh.

const TOrbit ORBIT_I_IM1[4]
Initial value:

Orbite des deux involutions d'indice égal et immédiatement inférieur à l'indice du tableau.

Definition at line 207 of file kernel-types.hh.

const TOrbit ORBIT_I_IP1[4]
Initial value:

Orbite des deux involutions d'indice égal et immédiatement supérieur à l'indice du tableau.

Definition at line 214 of file kernel-types.hh.

const TOrbit ORBIT_INF[4]
Initial value:

Orbite de l'ensemble des involutions d'indice inférieur strict à l'indice du tableau.

Definition at line 188 of file kernel-types.hh.

const TOrbit ORBIT_INVO[4]
Initial value:

Orbite qui résulte en une involution lorsqu'elle est composée avec l'involution d'indice celui du tableau.

Definition at line 221 of file kernel-types.hh.

const TOrbit ORBIT_SEWS[4]
Initial value:

Orbite qui est modifiée lors d'une couture par l'indice du tableau.

Definition at line 227 of file kernel-types.hh.

const TOrbit ORBIT_VERTEX = ORBIT_123

Definition at line 174 of file kernel-types.hh.

const TOrbit ORBIT_VOLUME = ORBIT_012

Definition at line 177 of file kernel-types.hh.