00001 // vim:syntax=cpp.doxygen tw=3 sw=3 00002 /*************************************************************************** 00003 * Copyright (C) 2008 by Brice Boyer * 00004 * brice.boyer@ens-lyon.org * 00005 * * 00006 * This program is free software; you can redistribute it and/or modify * 00007 * it under the terms of the GNU General Public License as published by * 00008 * the Free Software Foundation; either version 2 of the License, or * 00009 * (at your option) any later version. * 00010 * * 00011 * This program is distributed in the hope that it will be useful, * 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00014 * GNU General Public License for more details. * 00015 * * 00016 * You should have received a copy of the GNU General Public License * 00017 * along with this program; if not, write to the * 00018 * Free Software Foundation, Inc., * 00019 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 00020 ***************************************************************************/ 00021 00029 #ifndef __operation_h 00030 #define __operation_h 1 00031 00032 #include "type_base.h" 00033 00034 00035 class OPERATION; 00036 00037 typedef std::list<OPERATION > oper_list; 00038 //typedef ublas::vector<OPERATION > oper_vect; //!< vecteur d'opérations 00039 //typedef ublas::vector<relatif_vect > prop_type ; //!< vecteurs de vecteurs 00040 //typedef ublas::vector<prop_type > galet_type ; //!< vecteurs de vecteurs de vecteur 00041 typedef std::vector<OPERATION > oper_vect; 00042 typedef std::vector<relatif_vect > prop_type ; 00043 typedef std::vector<prop_type > galet_type ; 00044 00075 class OPERATION { /*{{{*/ 00076 private : 00077 //etiquette nom ; 00078 relatif_type _MonArite; 00079 prop_type _MesProps; 00080 galet_type _GaletCompat; 00081 bool _Determinee; 00082 00083 void fixe_arite ( const relatif_type & Arite ); // 00084 00085 public : 00086 /*** création ***/ 00087 OPERATION() ; // 00088 void init_oper ( const relatif_type & Arite, 00089 const relatif_vect & Props, const prop_type & Gprops ); // 00090 00091 /*** props ***/ 00092 void ajoute_prop ( const relatif_vect & _MesProps ); // 00093 void ajoute_galet_prop (const prop_type & gprops) ; // 00094 prop_type mes_props () const; // 00095 prop_type mes_affinites (const entier_type & N) const; // 00096 00097 /*** determination ***/ 00098 bool suis_determine () const ; // 00099 00100 /*** arité ***/ 00101 relatif_type mon_arite() const ; // 00102 00103 /*** impression ***/ 00104 void imprime( const relatif_type & lvl ) const ; // 00105 //etiquette mon_nom() ; 00106 00107 protected : 00108 }; /*}}}*/ 00109 00110 00111 #endif // operation_h