00001 /************************************************************************/ 00002 /* This file is part of openMask(c) INRIA, CNRS, Universite de Rennes 1 */ 00003 /* 1993-2002, thereinafter the Software */ 00004 /* */ 00005 /* The Software has been developped within the Siames Project. */ 00006 /* INRIA, the University of Rennes 1 and CNRS jointly hold intellectual */ 00007 /* property rights */ 00008 /* */ 00009 /* The Software has been registered with the Agence pour la Protection */ 00010 /* des Programmes (APP) under registration number */ 00011 /* IDDN.FR.001.510008.00.S.P.2001.000.41200 */ 00012 /* */ 00013 /* This file may be distributed under the terms of the Q Public License */ 00014 /* version 1.0 as defined by Trolltech AS of Norway and appearing in */ 00015 /* the file LICENSE.QPL included in the packaging of this file. */ 00016 /* */ 00017 /* Licensees holding valid specific licenses issued by INRIA, CNRS or */ 00018 /* Universite Rennes 1 for the software may use this file in */ 00019 /* acordance with that specific license */ 00020 /************************************************************************/ 00021 00022 #include "OMKAccessibleParameterPrm.h" 00023 #include "OMKParametersAccessor.inl" 00024 #include "OMKOutgoingSynchronisationMessage.h" 00025 #include "OMKIncomingSynchronisationMessage.h" 00026 #include "OMKSimpleTypeT.inl" 00027 #include "OMKIConnectors.h" 00028 00029 using namespace OMK::Type ; 00030 using namespace OMK::Iii ; 00031 using namespace OMK ; 00032 //======================================================================== 00033 // Default constructor 00034 AccessibleParameterPrm::AccessibleParameterPrm() 00035 : _id( OMK::Name() ), 00036 _category( OMK::Name() ), 00037 _type( OMK::Name() ), 00038 _accessible( false ), 00039 _levels(), 00040 _toolsInUse() 00041 { 00042 } 00043 00044 //------------------------------------------------------------------------ 00045 // Copy constructor 00046 AccessibleParameterPrm::AccessibleParameterPrm( const AccessibleParameterPrm& ref ) 00047 { 00048 _copy( ref ) ; 00049 } 00050 00051 //------------------------------------------------------------------------ 00052 // Constructor with the parameters 00053 AccessibleParameterPrm::AccessibleParameterPrm( const IConnector* connector, 00054 const AccessGroup& accessGroup ) 00055 : _id( connector->id() ), 00056 _category( connector->category() ), 00057 _type( connector->type() ), 00058 _accessible( connector->getAccessRule().isAccessGranted( accessGroup._level, accessGroup._groupName ) ), 00059 _levels( connector->getAccessRule().getCurrentAccessLevel() ), 00060 _toolsInUse( connector->getToolsInUse() ) 00061 { 00062 } 00063 00064 //------------------------------------------------------------------------ 00065 // Constructor with the parameters 00066 AccessibleParameterPrm::AccessibleParameterPrm( OMK::Name id, 00067 OMK::Name category, 00068 OMK::Name type, 00069 bool accessible, 00070 const std::map< OMK::Name, int >& levels, 00071 const std::list< OMK::Name >& toolsInUse ) 00072 : _id( id ), 00073 _category( category ), 00074 _type( type ), 00075 _accessible( accessible ), 00076 _levels( levels ), 00077 _toolsInUse( toolsInUse ) 00078 { 00079 } 00080 00081 //------------------------------------------------------------------------ 00082 // Destructor 00083 AccessibleParameterPrm::~AccessibleParameterPrm() 00084 { 00085 } 00086 00087 //------------------------------------------------------------------------ 00088 // copy operator 00089 AccessibleParameterPrm& AccessibleParameterPrm::operator = ( const AccessibleParameterPrm& ref ) 00090 { 00091 if ( this != &ref ) 00092 { 00093 _copy( ref ) ; 00094 } 00095 return *this ; 00096 } 00097 00098 //------------------------------------------------------------------------ 00099 // Protected copy methods 00100 void AccessibleParameterPrm::_copy( const AccessibleParameterPrm& ref ) 00101 { 00102 _id = ref._id ; 00103 _category = ref._category ; 00104 _type = ref._type ; 00105 _accessible = ref._accessible ; 00106 _levels = ref._levels ; 00107 _toolsInUse = ref._toolsInUse ; 00108 } 00109 00110 //======================================================================== 00111 namespace OMK 00112 { 00113 namespace Type 00114 { 00115 //------------------------------------------------------------------------ 00116 // != operator 00117 bool operator != ( const AccessibleParameterPrm& a0, const AccessibleParameterPrm& a1 ) 00118 { 00119 return a0._id != a1._id 00120 || a0._category != a1._category 00121 || a0._type != a1._type 00122 || a0._accessible != a1._accessible 00123 || a0._levels != a1._levels 00124 || a0._toolsInUse != a1._toolsInUse ; 00125 } 00126 00127 } //namespace OMK 00128 } //namespace Type 00129 //======================================================================== 00130 00131 //------------------------------------------------------------------------ 00132 // insert in stream 00133 std::ostream& operator << ( std::ostream& out, const OMK::Type::AccessibleParameterPrm& a ) 00134 { 00135 out << a._id << " " 00136 << a._category << " " 00137 << a._type << " " 00138 << a._accessible << " " 00139 << a._levels << " " 00140 << a._toolsInUse << " " 00141 << " " ; 00142 return out ; 00143 } 00144 00145 //------------------------------------------------------------------------ 00146 // extract from a 00147 std::istream& operator >> ( std::istream& in, OMK::Type::AccessibleParameterPrm& a ) 00148 { 00149 in >> a._id 00150 >> a._category 00151 >> a._type 00152 >> a._accessible 00153 >> a._levels 00154 >> a._toolsInUse ; 00155 return in ; 00156 } 00157 00158 //------------------------------------------------------------------------ 00159 // insert in stream 00160 OMK::OutgoingSynchronisationMessage& operator << ( OMK::OutgoingSynchronisationMessage& out, const OMK::Type::AccessibleParameterPrm& a ) 00161 { 00162 out << a._id 00163 << a._category 00164 << a._type 00165 << a._accessible 00166 << a._levels 00167 << a._toolsInUse ; 00168 return out ; 00169 } 00170 00171 //------------------------------------------------------------------------ 00172 // extract from a 00173 OMK::IncomingSynchronisationMessage& operator >> ( OMK::IncomingSynchronisationMessage& in, OMK::Type::AccessibleParameterPrm& a ) 00174 { 00175 in >> a._id 00176 >> a._category 00177 >> a._type 00178 >> a._accessible 00179 >> a._levels 00180 >> a._toolsInUse ; 00181 return in ; 00182 } 00183 00184 //======================================================================== 00185 00186 //======================================================================== 00187 // ParametersAccessor specific implementation for OMK::Type::AccessibleParameterPrm. 00188 template<> 00189 bool OMK::ParametersAccessor::getValue< OMK::Type::AccessibleParameterPrm > 00190 ( const ConfigurationParameterDescriptor * nodeValue, 00191 OMK::Type::AccessibleParameterPrm& value, 00192 std::string& errorStr ) 00193 { 00194 bool ok = true ; 00195 const OMK::MultipleConfigurationParameter *tmpNode = 00196 dynamic_cast< const OMK::MultipleConfigurationParameter * >( nodeValue ) ; 00197 ok = ok && tmpNode ; 00198 if( ok ) 00199 { 00200 bool named = tmpNode && !tmpNode->getNameOfSubDescriptor( 0 ).empty() ; 00201 ok = ( named || 6 <= tmpNode->getNumberOfSubItems() ) ; 00202 if ( !ok && errorStr.empty() ) 00203 { 00204 errorStr = "Bad format of AccessibleParameterPrm which needs 6 arguments" ; 00205 } 00206 00207 // "Id" parameter (member "_id") 00208 const OMK::ConfigurationParameterDescriptor *dataNode = !ok ? 0 : 00209 ( named ? 00210 tmpNode->getSubDescriptorByName( "Id" ) : 00211 tmpNode->getSubDescriptorByPosition( 0 ) ) ; 00212 ok = ok 00213 && ( ( !dataNode && named ) // optional parameter if named 00214 || getValue( dataNode, value._id, errorStr ) ) ; 00215 00216 // "Category" parameter (member "_category") 00217 dataNode = !ok ? 0 : 00218 ( named ? 00219 tmpNode->getSubDescriptorByName( "Category" ) : 00220 tmpNode->getSubDescriptorByPosition( 1 ) ) ; 00221 ok = ok 00222 && ( ( !dataNode && named ) // optional parameter if named 00223 || getValue( dataNode, value._category, errorStr ) ) ; 00224 00225 // "Type" parameter (member "_type") 00226 dataNode = !ok ? 0 : 00227 ( named ? 00228 tmpNode->getSubDescriptorByName( "Type" ) : 00229 tmpNode->getSubDescriptorByPosition( 2 ) ) ; 00230 ok = ok 00231 && ( ( !dataNode && named ) // optional parameter if named 00232 || getValue( dataNode, value._type, errorStr ) ) ; 00233 00234 // "Accessible" parameter (member "_accessible") 00235 dataNode = !ok ? 0 : 00236 ( named ? 00237 tmpNode->getSubDescriptorByName( "Accessible" ) : 00238 tmpNode->getSubDescriptorByPosition( 3 ) ) ; 00239 ok = ok 00240 && ( ( !dataNode && named ) // optional parameter if named 00241 || getValue( dataNode, value._accessible, errorStr ) ) ; 00242 00243 // "Levels" parameter (member "_levels") 00244 dataNode = !ok ? 0 : 00245 ( named ? 00246 tmpNode->getSubDescriptorByName( "Levels" ) : 00247 tmpNode->getSubDescriptorByPosition( 4 ) ) ; 00248 ok = ok 00249 && ( ( !dataNode && named ) // optional parameter if named 00250 || getValue( dataNode, value._levels, errorStr ) ) ; 00251 00252 // "ToolsInUse" parameter (member "_toolsInUse") 00253 dataNode = !ok ? 0 : 00254 ( named ? 00255 tmpNode->getSubDescriptorByName( "ToolsInUse" ) : 00256 tmpNode->getSubDescriptorByPosition( 5 ) ) ; 00257 ok = ok 00258 && ( ( !dataNode && named ) // optional parameter if named 00259 || getValue( dataNode, value._toolsInUse, errorStr ) ) ; 00260 } 00261 return ok ; 00262 } 00263
Documentation generated on Mon Jun 9 11:45:55 2008 |
Generated with doxygen by Dimitri van Heesch , 1997-2007 |