PropertyBase * MetaData::get_property_base( const std::string & name , const std::type_info & type , unsigned size ) const { PropertyBase * p = NULL ; { std::vector< PropertyBase * >::const_iterator i ; for ( i = m_properties.begin() ; i != m_properties.end() && not_equal_case( (*i)->name() , name ) ; ++i ); if ( i != m_properties.end() ) { const bool error_type = ( (*i)->m_type != type ); const bool error_size = size && ( (*i)->m_size != size ); ThrowErrorMsgIf( error_type, "For property name " << name << ": " << " actual_type(" << (*i)->m_type.name() << ") != request_type(" << type.name() << ")"); ThrowErrorMsgIf( error_size, "For property name " << name << ": " << " actual_size(" << (*i)->m_size << ") != request_size(" << size << ")") ; p = *i; } } return p ; }
Part * find( const PartVector & parts , const std::string & name ) { PartVector::const_iterator i = parts.begin(); while ( i != parts.end() && not_equal_case((*i)->name(),name) ) { ++i ; } return i != parts.end() ? *i : NULL ; }