本文整理汇总了C++中datasourcebase::shared_ptr::getTypeInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ shared_ptr::getTypeInfo方法的具体用法?C++ shared_ptr::getTypeInfo怎么用?C++ shared_ptr::getTypeInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类datasourcebase::shared_ptr
的用法示例。
在下文中一共展示了shared_ptr::getTypeInfo方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addDisplaySource
bool ImageDisplayComponent::addDisplaySource(std::string tag, std::string type, DataSourceBase::shared_ptr orig)
{
// creates a copy of the data and an update command to
// update the copy from the original.
//
// Added IplImage type
Logger::In in("ImageDisplayComponent");
// Check if the type is IplImage, if this fail
if(orig->getTypeName()!="IplImage"){
log(Error) << "Could not display '"<< tag <<"': This is not a IplImage type, it the Vision tookkit loaded?" << endlog();
return false;
}
DataSourceBase::shared_ptr clone = orig->getTypeInfo()->buildValue();
if ( !clone ) {
log(Error) << "Could not display '"<< tag <<"' : unknown type." << endlog();
return false;
}
try {
boost::shared_ptr<CommandInterface> comm( clone->updateCommand( orig.get() ) );
assert( comm );
root.push_back( boost::make_tuple( tag, orig, comm, clone, type ) );
} catch ( bad_assignment& ba ) {
log(Error) << "Could not display '"<< tag <<"' : failed to create Command." << endlog();
return false;
}
return true;
}
示例2: compose
bool PropertyBase::compose( const PropertyBag& source)
{
DataSourceBase::shared_ptr dsb = getDataSource();
ConstReferenceDataSource<PropertyBag> rds(source);
rds.ref();
if (dsb)
return dsb->getTypeInfo()->composeType( &rds, dsb);
return false;
}
示例3: Any
::CORBA::Any * RTT_corba_CConfigurationInterface_i::getAttribute (
const char * name)
{
if ( !mar || !mar->hasAttribute( string(name) ) )
return new CORBA::Any();
DataSourceBase::shared_ptr ds = mar->getValue( string(name) )->getDataSource();
const TypeInfo* ti = ds->getTypeInfo();
CorbaTypeTransporter* ctt = dynamic_cast<CorbaTypeTransporter*>( ti->getProtocol(ORO_CORBA_PROTOCOL_ID) );
assert( ctt );
return ctt->createAny( ds );
}
示例4: orig
::CORBA::Any * RTT_corba_COperationInterface_i::callOperation (
const char * operation,
::RTT::corba::CAnyArguments & args)
{
if ( mfact->hasMember( string( operation ) ) == false || mfact->isSynchronous(string(operation)) )
throw ::RTT::corba::CNoSuchNameException( operation );
// convert Corba args to C++ args.
try {
OperationCallerC orig(mfact->getPart(operation), operation, 0);
vector<DataSourceBase::shared_ptr> results;
for (size_t i =0; i != args.length(); ++i) {
const TypeInfo* ti = mfact->getPart(operation)->getArgumentType( i + 1);
CorbaTypeTransporter* ctt = dynamic_cast<CorbaTypeTransporter*> ( ti->getProtocol(ORO_CORBA_PROTOCOL_ID) );
// we need to store the results for returning them to caller (args is inout!) after the call()
results.push_back( ctt->createDataSource( &args[i] ) );
orig.arg( results[i] );
}
if ( orig.ready() ) {
DataSourceBase::shared_ptr ds = orig.getCallDataSource();
CORBA::Any* retany;
// Try to get the return result :
const TypeInfo* ti = ds->getTypeInfo();
CorbaTypeTransporter* ctt = dynamic_cast<CorbaTypeTransporter*> ( ti->getProtocol(ORO_CORBA_PROTOCOL_ID) );
if ( !ctt ) {
log(Warning) << "Could not return results of call to " << operation << ": unknown return type by CORBA transport."<<endlog();
ds->evaluate(); // equivalent to orig.call()
retany = new CORBA::Any();
} else {
retany = ctt->createAny( ds ); // call evaluate internally
}
// Return results into args:
for (size_t i =0; i != args.length(); ++i) {
const TypeInfo* ti = mfact->getPart(operation)->getArgumentType( i + 1);
CorbaTypeTransporter* ctta = dynamic_cast<CorbaTypeTransporter*> ( ti->getProtocol(ORO_CORBA_PROTOCOL_ID) );
ctta->updateAny(results[i], args[i]);
}
return retany;
} else {
orig.check(); // will throw
}
} catch (no_asynchronous_operation_exception& ) {
throw ::RTT::corba::CNoSuchNameException( operation );
} catch ( name_not_found_exception& ) {
throw ::RTT::corba::CNoSuchNameException( operation );
} catch ( wrong_number_of_args_exception& wna ) {
throw ::RTT::corba::CWrongNumbArgException( wna.wanted, wna.received );
} catch (wrong_types_of_args_exception& wta ) {
throw ::RTT::corba::CWrongTypeArgException( wta.whicharg, wta.expected_.c_str(), wta.received_.c_str() );
}
return new ::CORBA::Any();
}
示例5: propertyFromString
CORBA::Boolean RTT_corba_CConfigurationInterface_i::propertyFromString (
const char* name, const char* value
)
{
DataSourceBase::shared_ptr ds = getPropertyDataSource( name );
if (!ds)
return false;
if ( ds->getTypeInfo()->fromString( value, ds ) ) {
RTT::log(RTT::Error) << "corba::CConfigurationInterface: Could not assign string to "<< ds->getType() <<"." <<RTT::endlog();
return false;
}
return true;
}
示例6: getPropertyDataSource
::CORBA::Boolean RTT_corba_CConfigurationInterface_i::setProperty (
const char * name,
const ::CORBA::Any & value)
{
if (mar)
mbag = mar->properties(); // leave this here to get latest propertybag.
DataSourceBase::shared_ptr ds = getPropertyDataSource(name);
if ( !ds )
return 0;
const TypeInfo* ti = ds->getTypeInfo();
CorbaTypeTransporter* ctt = dynamic_cast<CorbaTypeTransporter*>( ti->getProtocol(ORO_CORBA_PROTOCOL_ID) );
assert( ctt );
return ctt->updateFromAny( &value, ds );
}