Back to index

salome-kernel  6.5.0
Classes | Public Member Functions | Private Attributes
filtre_conversion Class Reference

#include <DataIdFilter.hxx>

Collaboration diagram for filtre_conversion:
Collaboration graph
[legend]

List of all members.

Classes

class  conversion_elementaire

Public Member Functions

 filtre_conversion ()
 ~filtre_conversion ()
bool config_elementaire (filtre_elementaire &_f)
bool config_elementaire (filtre_elementaire &_f, filtre_elementaire &_conv)
template<typename T >
applique_filtre_conversion (T valeur_initiale, std::vector< T > &liste_conversions) const

Private Attributes

std::vector
< conversion_elementaire
config

Detailed Description

Definition at line 152 of file DataIdFilter.hxx.


Constructor & Destructor Documentation

Definition at line 184 of file DataIdFilter.hxx.

{}

Definition at line 188 of file DataIdFilter.hxx.

    {
        std::vector<conversion_elementaire>::iterator i;
        for (i = this->config.begin(); i != this->config.end(); i ++)
        {
            delete (*i).p_convers;
        }
    }

Member Function Documentation

template<typename T >
T filtre_conversion::applique_filtre_conversion ( valeur_initiale,
std::vector< T > &  liste_conversions 
) const

Definition at line 281 of file DataIdFilter.hxx.

{
    // Part d'une liste vierge
    liste_conversions.clear();

//    cout << "config applique_filtre_conversion " << this << endl;
    
    // Balaye tous les éléments de configuration
    // et cherche pour chacun d'eux si la valeur initiale est présente parmi les valeurs filtrées

    // Pour tous les éléments de configuration du filtrage/conversion
    std::vector<conversion_elementaire>::const_iterator i;
    for (i = config.begin(); i != config.end(); i ++)
    {

//    cout << "config elem   " << endl;
//    cout << "filtre: len, debut, fin, pas " << (*i).filtre.len << " " << (*i).filtre.debut << " " << (*i).filtre.fin << " " << (*i).filtre.pas << endl;
    
        bool si_passe_filtre = false;

        // Si la longueur du filtre est 1
        if ((*i).filtre.len == 1) {
          // Si la valeur initiale correspond à la valeur du filtre
          if ((*i).filtre.debut == valeur_initiale)
            si_passe_filtre = true;
        } else  {
          // Si la valeur initiale est dans la séquence des valeurs du filtre
          //   la valeur est comprise dans les bornes [debut,fin]
          //   et sa distance du début de la séquence est modulo le pas
          if (  ((*i).filtre.fin - valeur_initiale >= 0) == (valeur_initiale - (*i).filtre.debut >= 0)
                &&  (valeur_initiale - (*i).filtre.debut) % (*i).filtre.pas == 0  ) {
            si_passe_filtre = true;
          }
        }

        // Si la valeur initiale passe le filtre
        if (si_passe_filtre) {
          //    cout << "config: filtre passe    " << endl;
            
          // Si il y a une conversion à effectuer
          if ((*i).p_convers != NULL) {

            // Si la longueur du filtre est 1
            if ((*i).filtre.len == 1) {

              // Si la longueur des paramètres de conversion est aussi 1
              if ((*i).p_convers->len == 1) {
                // Ajoute la valeur de conversion à la liste des valeurs après conversion
                liste_conversions.push_back ((*i).p_convers->debut);
              } else {
                // Ajoute la séquence de conversion à la liste des valeurs après conversion
                for (int s = (*i).p_convers->debut; s != (*i).p_convers->fin; s += (*i).p_convers->pas) {
                  liste_conversions.push_back (s);
                }
                liste_conversions.push_back ((*i).p_convers->fin);
              }

            } else {
              // Le filtre est une séquence qui est convertie en une autre séquence de même longueur
              // Choisit la valeur au rang désiré dans la séquence de conversion
              int rang = (valeur_initiale - (*i).filtre.debut) / (*i).filtre.pas;

              int valeur_convertie = (*i).p_convers->debut + rang * (*i).p_convers->pas;

              // Ajoute cette valeur à la liste des valeurs après conversion
              liste_conversions.push_back (valeur_convertie);
            }
          } else {
            // Ajoute la valeur initiale telle-quelle à la liste des valeurs après conversion
            liste_conversions.push_back (valeur_initiale);
          }
        }
    }

    return liste_conversions.size();
}

Here is the caller graph for this function:

Definition at line 198 of file DataIdFilter.hxx.

    {
//    cout << "ajout config_elementaire 1  " << this << endl;
        conversion_elementaire conv_elem;
        
        conv_elem.filtre = _f;
        conv_elem.p_convers = NULL;

        // Ajoute cette conversion/filtrage elementaire a la liste
        this->config.push_back (conv_elem);
    
//    vector<conversion_elementaire>::iterator i;
//    cout << "liste apres ajout:" << endl;
//    for (i = this->config.begin(); i != this->config.end(); i ++)
//    {
//        cout << "config elem   " << endl;
//        cout << "filtre: len, debut, fin, pas " << (*i).filtre.len << " " << (*i).filtre.debut << " " << (*i).filtre.fin << " " << (*i).filtre.pas << endl;
//    }
        
        return true;
    }

Here is the caller graph for this function:

Definition at line 226 of file DataIdFilter.hxx.

    {
//    cout << "ajout config_elementaire 2  " << this << endl;
    
        if (_f.len == 1 || _conv.len == 1 || _f.len == _conv.len)
        {
            conversion_elementaire conv_elem;
            conv_elem.filtre = _f;
            conv_elem.p_convers = new filtre_elementaire(_conv);

            // Ajoute cette conversion/filtrage elementaire a la liste
            this->config.push_back (conv_elem);
    
//    vector<conversion_elementaire>::iterator i;
//    cout << "liste apres ajout:" << endl;
//    for (i = this->config.begin(); i != this->config.end(); i ++)
//    {
//        cout << "config elem   " << endl;
//        cout << "filtre: len, debut, fin, pas " << (*i).filtre.len << " " << (*i).filtre.debut << " " << (*i).filtre.fin << " " << (*i).filtre.pas << endl;
//    }
        
            return true;
        }
        else
        {
            // Filtre et conversion incompatibles
            return false;
        }
    }

Member Data Documentation

Definition at line 180 of file DataIdFilter.hxx.


The documentation for this class was generated from the following file: