00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00030 #include "operation.h"
00031
00035 #define cimprime( niveau ) \
00036 if (!(niveau)) \
00037 static_cast<void > (0) ; \
00038 else \
00039 imprime( (niveau) )
00040
00041 using namespace std;
00042
00047 OPERATION::OPERATION() {
00048 _MonArite = _indefinie;
00049 _Determinee = _determine;
00050 }
00051
00059 void OPERATION::ajoute_prop ( const relatif_vect & Props ) {
00060 entier_type prop_taille = _MesProps.size();
00061 _MesProps.resize ( prop_taille + 1 );
00062 _MesProps [ prop_taille ] = Props;
00063 if ( prop_taille != 0 ) {
00064 _Determinee = _non_deter;
00065 }
00066 cinfo ( _DEBUG3, true, 2, _debog ) << "ajoute_prop : on ajoute la prop : " << Props << "\n";
00067 cimprime ( _DEBUG3 );
00068 return;
00069 }
00070
00071
00076 void OPERATION::fixe_arite ( const int & Arite ) {
00077 _MonArite = Arite;
00078 cinfo ( _DEBUG3, true, 2, _debog ) << "fixe_arite : on fixe l'arité : " << Arite << "\n";
00079 cimprime ( _DEBUG3 );
00080 return;
00081 }
00082
00083
00090 void OPERATION::init_oper ( const int & Arite , const relatif_vect & Props, const prop_type & Gprops ) {
00091 _MonArite = Arite;
00092 _MesProps.resize ( 1 );
00093 _MesProps [ 0 ] = Props ;
00094 _GaletCompat.resize ( 1 ) ;
00095 _GaletCompat[ 0 ] = Gprops ;
00096 cinfo ( _DEBUG3, true, 2, _debog ) << "init_oper : on initialise.\n Arité : " << Arite << "\nPropriété : " << Props << "\nGalets compat : " << Gprops << endl;
00097 cimprime ( _DEBUG3 );
00098 return;
00099 }
00100
00101
00106 int OPERATION::mon_arite() const {
00107 return _MonArite;
00108 }
00109
00110
00115 prop_type OPERATION::mes_props() const {
00116 return _MesProps ;
00117 }
00118
00119
00124 bool OPERATION::suis_determine() const {
00125 return _Determinee;
00126 }
00127
00128
00133 void OPERATION::imprime ( const relatif_type & dbg ) const {
00134 if ( !dbg )
00135 return;
00136 cout << "\t\t" << _debog << "Arité : \n" << _resul << _MonArite << "\n";
00137 cout << "\t\t" << _debog << "Props : \n" ;
00138 for ( prop_type::const_iterator it = _MesProps.begin() ; it != _MesProps.end() ; ++it ) {
00139 cout << "\t" << *it << "\n" ;
00140 }
00141 if ( _Determinee ) {
00142 cout << "\t\t" << _resul << "déterminée\n";
00143 }
00144 else {
00145 cout << "\t\t" << _resul << "non déterminée\n";
00146 }
00147 return;
00148 }
00149
00150 void OPERATION::ajoute_galet_prop ( const prop_type & GProps ) {
00151 entier_type gprop_taille = _GaletCompat.size();
00152 _GaletCompat.resize ( gprop_taille + 1 );
00153 _GaletCompat [ gprop_taille ] = GProps;
00154
00155
00156
00157 cinfo ( _DEBUG3, true, 2, _debog ) << "ajoute_galet_prop : on ajoute la prop de compat : " << GProps << "\n";
00158 cimprime ( _DEBUG3 );
00159 return;
00160
00161 }
00162
00163 prop_type OPERATION::mes_affinites ( const entier_type & num ) const {
00164 return _GaletCompat [ num ] ;
00165 }