OpenWalnut 1.2.5
WProperties.cpp
00001 //---------------------------------------------------------------------------
00002 //
00003 // Project: OpenWalnut ( http://www.openwalnut.org )
00004 //
00005 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
00006 // For more information see http://www.openwalnut.org/copying
00007 //
00008 // This file is part of OpenWalnut.
00009 //
00010 // OpenWalnut is free software: you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as published by
00012 // the Free Software Foundation, either version 3 of the License, or
00013 // (at your option) any later version.
00014 //
00015 // OpenWalnut is distributed in the hope that it will be useful,
00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018 // GNU Lesser General Public License for more details.
00019 //
00020 // You should have received a copy of the GNU Lesser General Public License
00021 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
00022 //
00023 //---------------------------------------------------------------------------
00024 
00025 #include <iostream>
00026 #include <map>
00027 #include <string>
00028 #include <vector>
00029 #include <algorithm>
00030 
00031 #include <boost/lexical_cast.hpp>
00032 #include <boost/tokenizer.hpp>
00033 
00034 #include "WLogger.h"
00035 #include "exceptions/WPropertyUnknown.h"
00036 
00037 #include "WPropertyHelper.h"
00038 
00039 #include "WProperties.h"
00040 
00041 WProperties::WProperties( std::string name, std::string description ):
00042     WPropertyBase( name, description ),
00043     m_properties(),
00044     m_childUpdateCondition( new WConditionSet() )
00045 {
00046     m_updateCondition->add( m_properties.getChangeCondition() );
00047 }
00048 
00049 WProperties::~WProperties()
00050 {
00051 }
00052 
00053 WProperties::WProperties( const WProperties& from ):
00054     WPropertyBase( from ),
00055     m_properties(),
00056     m_childUpdateCondition( new WConditionSet() )
00057 {
00058     // copy the properties inside
00059 
00060     // lock, unlocked if l looses focus
00061     PropertySharedContainerType::ReadTicket l = from.m_properties.getReadTicket();
00062 
00063     // we need to make a deep copy here.
00064     for( PropertyConstIterator iter = l->get().begin(); iter != l->get().end(); ++iter )
00065     {
00066         // clone them to keep dynamic type
00067         addProperty( ( *iter )->clone() );
00068     }
00069 
00070     // unlock explicitly
00071     l.reset();
00072 
00073     // add the change condition of the prop list
00074     m_updateCondition->add( m_properties.getChangeCondition() );
00075 }
00076 
00077 boost::shared_ptr< WPropertyBase > WProperties::clone()
00078 {
00079     // class copy constructor.
00080     return boost::shared_ptr< WProperties >( new WProperties( *this ) );
00081 }
00082 
00083 PROPERTY_TYPE WProperties::getType() const
00084 {
00085     return PV_GROUP;
00086 }
00087 
00088 bool WProperties::setAsString( std::string /*value*/ )
00089 {
00090     // groups can't be set in any way. -> ignore it.
00091     return true;
00092 }
00093 
00094 std::string WProperties::getAsString()
00095 {
00096     // groups can't be set in any way. -> ignore it.
00097     return "";
00098 }
00099 
00100 /**
00101  * Add the default constraints for a certain type of property. By default, nothing is added.
00102  *
00103  * \note Information properties never get constraints by default
00104  *
00105  * \param prop the property
00106  *
00107  * \return the property inserted gets returned.
00108  */
00109 template< typename T >
00110 T _addDefaultConstraints( T prop )
00111 {
00112     return prop;
00113 }
00114 
00115 /**
00116  * Add the default constraints for a certain type of property. For ints, a min and max is set to 0 and 100.
00117  *
00118  * \note Information properties never get constraints by default
00119  *
00120  * \param prop the property
00121  *
00122  * \return the property inserted gets returned.
00123  */
00124 WPropInt _addDefaultConstraints( WPropInt prop )
00125 {
00126     prop->setMin( 0 );
00127     prop->setMax( 100 );
00128     return prop;
00129 }
00130 
00131 /**
00132  * Add the default constraints for a certain type of property. For doubles, a min and max is set to 0 and 100.
00133  *
00134  * \note Information properties never get constraints by default
00135  *
00136  * \param prop the property
00137  *
00138  * \return the property inserted gets returned.
00139  */
00140 WPropDouble _addDefaultConstraints( WPropDouble prop )
00141 {
00142     prop->setMin( 0.0 );
00143     prop->setMax( 100.0 );
00144     return prop;
00145 }
00146 
00147 /**
00148  * Add the default constraints for a certain type of property. For selections, the PC_ISVALID constraint is added.
00149  *
00150  * \note Information properties never get constraints by default
00151  *
00152  * \param prop the property
00153  *
00154  * \return the property inserted gets returned.
00155  */
00156 WPropSelection _addDefaultConstraints( WPropSelection prop )
00157 {
00158     WPropertyHelper::PC_ISVALID::addTo( prop );
00159     return prop;
00160 }
00161 
00162 /**
00163  * Add the default constraints for a certain type of property. For filenames, the PC_NOTEMPTY constraint is added.
00164  *
00165  * \note Information properties never get constraints by default
00166  *
00167  * \param prop the property
00168  *
00169  * \return the property inserted gets returned.
00170  */
00171 WPropFilename _addDefaultConstraints( WPropFilename prop )
00172 {
00173     WPropertyHelper::PC_NOTEMPTY::addTo( prop );
00174     return prop;
00175 }
00176 
00177 /**
00178  * Add the default constraints for a certain type of property. Please specialize _addDefaultConstraints for your special needs and prop types.
00179  *
00180  * \note Information properties never get constraints by default
00181  *
00182  * \param prop the property to add the constraints to
00183  *
00184  * \return the property inserted
00185  */
00186 template< typename T >
00187 T addDefaultConstraints( T prop )
00188 {
00189     if( prop->getPurpose() == PV_PURPOSE_INFORMATION )
00190     {
00191         return prop;
00192     }
00193 
00194     return _addDefaultConstraints( prop );
00195 }
00196 
00197 bool WProperties::set( boost::shared_ptr< WPropertyBase > /*value*/ )
00198 {
00199     return true;
00200 }
00201 
00202 bool WProperties::propNamePredicate( boost::shared_ptr< WPropertyBase > prop1, boost::shared_ptr< WPropertyBase > prop2 ) const
00203 {
00204     return ( prop1->getName() == prop2->getName() );
00205 }
00206 void WProperties::removeProperty( boost::shared_ptr< WPropertyBase > prop )
00207 {
00208     if( !prop )
00209     {
00210         return;
00211     }
00212 
00213     // lock, unlocked if l looses focus
00214     PropertySharedContainerType::WriteTicket l = m_properties.getWriteTicket();
00215     l->get().erase( std::remove( l->get().begin(), l->get().end(), prop ), l->get().end() );
00216     m_childUpdateCondition->remove( prop->getUpdateCondition() );
00217 }
00218 
00219 boost::shared_ptr< WPropertyBase > WProperties::findProperty( const WProperties* const props, std::string name ) const
00220 {
00221     boost::shared_ptr< WPropertyBase > result = boost::shared_ptr< WPropertyBase >();
00222 
00223     // lock, unlocked if l looses focus
00224     PropertySharedContainerType::ReadTicket l = props->m_properties.getReadTicket();
00225 
00226     // iterate over the items
00227     for( PropertyContainerType::const_iterator it = l->get().begin(); it != l->get().end(); ++it )
00228     {
00229         if( ( *it )->getName() == name )
00230         {
00231             result = ( *it );
00232             break;
00233         }
00234     }
00235 
00236     // done. Unlocked after l looses focus.
00237     return result;
00238 }
00239 
00240 boost::shared_ptr< WPropertyBase > WProperties::findProperty( std::string name ) const
00241 {
00242     boost::shared_ptr< WPropertyBase > result = boost::shared_ptr< WPropertyBase >();
00243 
00244     // tokenize the name -> contains any paths?
00245     typedef boost::tokenizer<boost::char_separator< char > > tokenizer;
00246     boost::char_separator< char > sep( "/" );   // separate by /
00247     tokenizer tok( name, sep );
00248 
00249     // iterate along the path
00250     const WProperties* curProps = this;       // the group currently in while traversing the path
00251     for( tokenizer::iterator it = tok.begin(); it != tok.end(); ++it )
00252     {
00253         // was the last token not a group?
00254         if( result && ( result->getType() != PV_GROUP ) )
00255         {
00256             // no it wasn't. This means that one token inside the path is no group, but it needs to be one
00257             return boost::shared_ptr< WPropertyBase >();
00258         }
00259 
00260         // get the properties along the path
00261         result = findProperty( curProps, boost::lexical_cast< std::string >( *it ) );
00262         if( !result )
00263         {
00264             // not found? Return NULL.
00265             return boost::shared_ptr< WPropertyBase >();
00266         }
00267         else if( result && ( result->getType() == PV_GROUP ) )
00268         {
00269             // it is a group. Go down
00270             curProps = result->toPropGroup().get();
00271         }
00272     }
00273 
00274     return result;
00275 }
00276 
00277 bool WProperties::existsProperty( std::string name )
00278 {
00279     return ( findProperty( name ) != boost::shared_ptr< WPropertyBase >() );
00280 }
00281 
00282 boost::shared_ptr< WPropertyBase > WProperties::getProperty( std::string name )
00283 {
00284     boost::shared_ptr< WPropertyBase > p = findProperty( name );
00285     if( p == boost::shared_ptr< WPropertyBase >() )
00286     {
00287         throw WPropertyUnknown( std::string( "Property \"" + name + "\" can't be found." ) );
00288     }
00289 
00290     return p;
00291 }
00292 
00293 WProperties::PropertySharedContainerType::ReadTicket WProperties::getProperties() const
00294 {
00295     return m_properties.getReadTicket();
00296 }
00297 
00298 WProperties::PropertySharedContainerType::ReadTicket WProperties::getReadTicket() const
00299 {
00300     return m_properties.getReadTicket();
00301 }
00302 
00303 WPropGroup WProperties::addPropertyGroup( std::string name, std::string description, bool hide )
00304 {
00305     WPropGroup p = WPropGroup( new WProperties( name, description ) );
00306     p->setHidden( hide );
00307     addProperty( p );
00308     return p;
00309 }
00310 
00311 void WProperties::clear()
00312 {
00313     // lock, unlocked if l looses focus
00314     PropertySharedContainerType::WriteTicket l = m_properties.getWriteTicket();
00315     l->get().clear();
00316 }
00317 
00318 boost::shared_ptr< WCondition > WProperties::getChildUpdateCondition() const
00319 {
00320     return m_childUpdateCondition;
00321 }
00322 
00323 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00324 // convenience methods for
00325 // template< typename T>
00326 // boost::shared_ptr< WPropertyVariable< T > > addProperty( std::string name, std::string description, const T& initial, bool hide = false );
00327 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00328 
00329 WPropBool WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_BOOL&   initial, bool hide )
00330 {
00331     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_BOOL >( name, description, initial, hide ) );
00332 }
00333 
00334 WPropInt WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_INT&    initial, bool hide )
00335 {
00336     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_INT >( name, description, initial, hide ) );
00337 }
00338 
00339 WPropDouble WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_DOUBLE& initial, bool hide )
00340 {
00341     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_DOUBLE >( name, description, initial, hide ) );
00342 }
00343 
00344 WPropString WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_STRING& initial, bool hide )
00345 {
00346     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_STRING >( name, description, initial, hide ) );
00347 }
00348 
00349 WPropFilename WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_PATH&   initial, bool hide )
00350 {
00351     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_PATH >( name, description, initial, hide ) );
00352 }
00353 
00354 WPropSelection WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_SELECTION&   initial, bool hide )
00355 {
00356     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_SELECTION >( name, description, initial, hide ) );
00357 }
00358 
00359 WPropPosition WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_POSITION&   initial, bool hide )
00360 {
00361     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_POSITION >( name, description, initial, hide ) );
00362 }
00363 
00364 WPropColor WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_COLOR&   initial, bool hide )
00365 {
00366     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_COLOR >( name, description, initial, hide ) );
00367 }
00368 
00369 WPropTrigger WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_TRIGGER&   initial, bool hide )
00370 {
00371     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_TRIGGER >( name, description, initial, hide ) );
00372 }
00373 
00374 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00375 // convenience methods for
00376 // template< typename T>
00377 // boost::shared_ptr< WPropertyVariable< T > > addProperty( std::string name, std::string description, const T& initial,
00378 //                                                          boost::shared_ptr< WCondition > condition, bool hide = false );
00379 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00380 
00381 WPropBool WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_BOOL&   initial,
00382                                      boost::shared_ptr< WCondition > condition, bool hide )
00383 {
00384     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_BOOL >( name, description, initial, condition, hide ) );
00385 }
00386 
00387 WPropInt WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_INT&    initial,
00388                                     boost::shared_ptr< WCondition > condition, bool hide )
00389 {
00390     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_INT >( name, description, initial, condition, hide ) );
00391 }
00392 
00393 WPropDouble WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_DOUBLE& initial,
00394                                        boost::shared_ptr< WCondition > condition, bool hide )
00395 {
00396     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_DOUBLE >( name, description, initial, condition, hide ) );
00397 }
00398 
00399 WPropString WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_STRING& initial,
00400                                        boost::shared_ptr< WCondition > condition, bool hide )
00401 {
00402     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_STRING >( name, description, initial, condition, hide ) );
00403 }
00404 
00405 WPropFilename WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_PATH&   initial,
00406                                          boost::shared_ptr< WCondition > condition, bool hide )
00407 {
00408     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_PATH >( name, description, initial, condition, hide ) );
00409 }
00410 
00411 WPropSelection WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_SELECTION&   initial,
00412                                           boost::shared_ptr< WCondition > condition, bool hide )
00413 {
00414     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_SELECTION >( name, description, initial, condition, hide ) );
00415 }
00416 
00417 WPropPosition WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_POSITION&   initial,
00418                                          boost::shared_ptr< WCondition > condition, bool hide )
00419 {
00420     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_POSITION >( name, description, initial, condition, hide ) );
00421 }
00422 
00423 WPropColor WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_COLOR&   initial,
00424                                      boost::shared_ptr< WCondition > condition, bool hide )
00425 {
00426     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_COLOR >( name, description, initial, condition, hide ) );
00427 }
00428 
00429 WPropTrigger WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_TRIGGER&   initial,
00430                                        boost::shared_ptr< WCondition > condition, bool hide )
00431 {
00432     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_TRIGGER >( name, description, initial, condition, hide ) );
00433 }
00434 
00435 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00436 // convenience methods for
00437 // template< typename T>
00438 // boost::shared_ptr< WPropertyVariable< T > > addProperty( std::string name, std::string description, const T& initial,
00439 //                                                          WPropertyBase::PropertyChangeNotifierType notifier, bool hide = false );
00440 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00441 
00442 WPropBool WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_BOOL&   initial,
00443                                      WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00444 {
00445     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_BOOL >( name, description, initial, notifier, hide ) );
00446 }
00447 
00448 WPropInt WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_INT&    initial,
00449                                     WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00450 {
00451     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_INT >( name, description, initial, notifier, hide ) );
00452 }
00453 
00454 WPropDouble WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_DOUBLE& initial,
00455                                        WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00456 {
00457     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_DOUBLE >( name, description, initial, notifier, hide ) );
00458 }
00459 
00460 WPropString WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_STRING& initial,
00461                                        WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00462 {
00463     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_STRING >( name, description, initial, notifier, hide ) );
00464 }
00465 
00466 WPropFilename WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_PATH&   initial,
00467                                          WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00468 {
00469     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_PATH >( name, description, initial, notifier, hide ) );
00470 }
00471 
00472 WPropSelection WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_SELECTION&   initial,
00473                                           WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00474 {
00475     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_SELECTION >( name, description, initial, notifier, hide ) );
00476 }
00477 
00478 WPropPosition WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_POSITION&   initial,
00479                                          WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00480 {
00481     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_POSITION >( name, description, initial, notifier, hide ) );
00482 }
00483 
00484 WPropColor WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_COLOR&   initial,
00485                                      WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00486 {
00487     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_COLOR >( name, description, initial, notifier, hide ) );
00488 }
00489 
00490 WPropTrigger WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_TRIGGER&   initial,
00491                                        WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00492 {
00493     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_TRIGGER >( name, description, initial, notifier, hide ) );
00494 }
00495 
00496 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00497 // convenience methods for
00498 // template< typename T>
00499 // boost::shared_ptr< WPropertyVariable< T > > addProperty( std::string name, std::string description, const T& initial,
00500 //                                                          boost::shared_ptr< WCondition > condition,
00501 //                                                          WPropertyBase::PropertyChangeNotifierType notifier, bool hide = false );
00502 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00503 
00504 WPropBool WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_BOOL&   initial,
00505                                      boost::shared_ptr< WCondition > condition,
00506                                      WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00507 {
00508     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_BOOL >( name, description, initial, condition, notifier, hide ) );
00509 }
00510 
00511 WPropInt WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_INT&    initial,
00512                                      boost::shared_ptr< WCondition > condition,
00513                                      WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00514 {
00515     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_INT >( name, description, initial, condition, notifier, hide ) );
00516 }
00517 
00518 WPropDouble WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_DOUBLE& initial,
00519                                      boost::shared_ptr< WCondition > condition,
00520                                      WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00521 {
00522     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_DOUBLE >( name, description, initial, condition, notifier, hide ) );
00523 }
00524 
00525 WPropString WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_STRING& initial,
00526                                      boost::shared_ptr< WCondition > condition,
00527                                      WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00528 {
00529     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_STRING >( name, description, initial, condition, notifier, hide ) );
00530 }
00531 
00532 WPropFilename WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_PATH&   initial,
00533                                      boost::shared_ptr< WCondition > condition,
00534                                      WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00535 {
00536     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_PATH >( name, description, initial, condition, notifier, hide ) );
00537 }
00538 
00539 WPropSelection WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_SELECTION&   initial,
00540                                           boost::shared_ptr< WCondition > condition,
00541                                           WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00542 {
00543     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_SELECTION >( name, description, initial, condition, notifier, hide ) );
00544 }
00545 
00546 WPropPosition WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_POSITION&   initial,
00547                                          boost::shared_ptr< WCondition > condition,
00548                                          WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00549 {
00550     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_POSITION >( name, description, initial, condition, notifier, hide ) );
00551 }
00552 
00553 WPropColor WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_COLOR&   initial,
00554                                      boost::shared_ptr< WCondition > condition,
00555                                      WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00556 {
00557     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_COLOR >( name, description, initial, condition, notifier, hide ) );
00558 }
00559 
00560 WPropTrigger WProperties::addProperty( std::string name, std::string description, const WPVBaseTypes::PV_TRIGGER&   initial,
00561                                        boost::shared_ptr< WCondition > condition,
00562                                        WPropertyBase::PropertyChangeNotifierType notifier, bool hide )
00563 {
00564     return addDefaultConstraints( addProperty< WPVBaseTypes::PV_TRIGGER >( name, description, initial, condition, notifier, hide ) );
00565 }
00566 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends