diff --git a/CMakeLists.txt b/CMakeLists.txt index 74464862b..7f912f342 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,10 +33,10 @@ SET( PROJ_BINARY_DIR ${orocos-rtt_BINARY_DIR} ) INCLUDE(${PROJ_SOURCE_DIR}/orocos-rtt.cmake OPTIONAL) if (NOT EXISTS ${PROJ_SOURCE_DIR}/orocos-rtt.cmake) # Setup the default settings - INCLUDE(${PROJ_SOURCE_DIR}/orocos-rtt.default.cmake) MESSAGE( "No orocos-rtt.cmake file loaded, using default settings." "See orocos-rtt.default.cmake") + INCLUDE(${PROJ_SOURCE_DIR}/orocos-rtt.default.cmake) endif () IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) diff --git a/Makefile b/Makefile index df98ab99c..f15222a6e 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ ifdef ROS_ROOT +EXTRA_CMAKE_FLAGS=-DENABLE_CORBA=ON -DCORBA_IMPLEMENTATION=OMNIORB default: install include $(shell rospack find mk)/cmake.mk install: all diff --git a/config/FindCorba.cmake b/config/FindCorba.cmake index 239c42ca9..b792257ff 100644 --- a/config/FindCorba.cmake +++ b/config/FindCorba.cmake @@ -18,20 +18,26 @@ if (ENABLE_CORBA) ELSE(NOT TAO_FOUND) MESSAGE(STATUS "CORBA enabled: ${TAO_FOUND_COMPONENTS}") - # Copy flags: + # Copy flags: SET(CORBA_INCLUDE_DIRS ${TAO_INCLUDE_DIRS}) - SET(CORBA_CFLAGS ${TAO_CPP_FLAGS}) + SET(CORBA_CFLAGS ${TAO_CPP_FLAGS}) SET(CORBA_LIBRARIES ${TAO_LIBRARIES}) - SET(CORBA_DEFINITIONS ${TAO_DEFINITIONS}) - # Flag used in rtt-corba-config.h - SET(CORBA_IS_TAO 1) + SET(CORBA_DEFINITIONS ${TAO_DEFINITIONS}) + # Flag used in rtt-corba-config.h + SET(CORBA_IS_TAO 1) - if( TAO_Messaging_FOUND ) - SET(CORBA_TAO_HAS_MESSAGING 1) - endif() + if( TAO_Messaging_FOUND ) + SET(CORBA_TAO_HAS_MESSAGING 1) + endif() - # Including a TAO header is sufficient to depend on this library. - set(CORBA_USER_LINK_LIBS ${TAO_CLIENT_LIBRARIES}) + # Including a TAO header is sufficient to depend on this library. + set(CORBA_USER_LINK_LIBS ${TAO_CLIENT_LIBRARIES} ) + + # We noticed TAO depends on librt as well on Linux platforms + if(${OROCOS_TARGET} MATCHES "gnulinux|xenomai|lxrt") + set(CORBA_LIBRARIES ${CORBA_LIBRARIES} rt ) + set(CORBA_USER_LINK_LIBS ${CORBA_USER_LINK_LIBS} rt ) + endif() ENDIF(NOT TAO_FOUND) ELSEIF(CORBA_IMPLEMENTATION STREQUAL "OMNIORB") diff --git a/debian/changelog b/debian/changelog index e1e45ee65..b2b42677a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,12 @@ orocos-rtt (2.4.0-1) unstable; urgency=low -- Peter Soetens Sat, 30 Apr 2011 01:12:22 +0200 +orocos-rtt (2.3.2-1) maverick; urgency=low + + * New upstream release + + -- Peter Soetens Tue, 03 May 2011 18:08:41 +0200 + orocos-rtt (2.3.1-1) unstable; urgency=low * New upstream release diff --git a/doc/xml/images/ATaskContext-basics.png b/doc/xml/images/ATaskContext-basics.png index 47448897c..cec1a90fd 100644 Binary files a/doc/xml/images/ATaskContext-basics.png and b/doc/xml/images/ATaskContext-basics.png differ diff --git a/doc/xml/images/ATaskContext-services.png b/doc/xml/images/ATaskContext-services.png index ea7b9fbb5..e0b9f39b8 100644 Binary files a/doc/xml/images/ATaskContext-services.png and b/doc/xml/images/ATaskContext-services.png differ diff --git a/doc/xml/images/ATaskContext.svg b/doc/xml/images/ATaskContext.svg index c2c7aaea3..001f6d58d 100644 --- a/doc/xml/images/ATaskContext.svg +++ b/doc/xml/images/ATaskContext.svg @@ -14,10 +14,10 @@ height="744.09448" id="svg2" sodipodi:version="0.32" - inkscape:version="0.47 r22583" + inkscape:version="0.48.0 r9654" version="1.0" sodipodi:docname="ATaskContext.svg" - inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-filename="ATaskContext-services.png" inkscape:export-xdpi="100" inkscape:export-ydpi="100" inkscape:output_extension="org.inkscape.output.svg.inkscape"> @@ -1441,7 +1441,7 @@ image/svg+xml - + @@ -1453,11 +1453,17 @@ + id="path5293" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + id="g4441-0" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + id="path5291" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + id="g16485" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + y="278.48914" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + y="278.48914" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + transform="translate(470.8321,65.748585)" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + transform="translate(0,64)" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> Ports + id="g3412" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + transform="translate(-3.31083,0)" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + id="g3569" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + style="stroke-width:3.5;stroke-miterlimit:4;stroke-dasharray:none" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + id="g4520" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + style="display:none"> + id="path2037" + inkscape:connector-curvature="0" /> + id="path2043" + inkscape:connector-curvature="0" /> + style="display:none"> + y="550.13525" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + style="fill:none;stroke:#000000;stroke-width:4.98192024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" + inkscape:connector-curvature="0" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + transform="matrix(0.644653,0,0,1,189.4087,54)" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + style="fill:none;stroke:#000000;stroke-width:4.98192024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + id="g3335" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + style="fill:none;stroke:#000000;stroke-width:2.7407949;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" + inkscape:connector-curvature="0" /> + style="display:none"> + id="g13319" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + style="fill:none;stroke:#000000;stroke-width:4.1796217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + style="fill:none;stroke:#000000;stroke-width:4.1796217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + y="210.81886" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#181992;stroke-width:3.30000067;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + transform="translate(94,64)" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#181992;stroke-width:3.30000043;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" /> + transform="translate(50,64)" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100"> + id="path3402" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" + inkscape:connector-curvature="0" /> + id="path4291" + inkscape:export-filename="/home/kaltan/src/git/orocos-toolchain/rtt/doc/xml/images/ATaskContext-services.png" + inkscape:export-xdpi="100" + inkscape:export-ydpi="100" + inkscape:connector-curvature="0" /> diff --git a/doc/xml/images/app-directories.svg b/doc/xml/images/app-directories.svg index 88b1bffc6..dadbfe2d5 100644 --- a/doc/xml/images/app-directories.svg +++ b/doc/xml/images/app-directories.svg @@ -14,11 +14,11 @@ height="1052.3622" id="svg6782" sodipodi:version="0.32" - inkscape:version="0.47 r22583" + inkscape:version="0.48.0 r9654" version="1.0" sodipodi:docname="app-directories.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/sspr/src/documents/EURON/2009/presentation/rtt/app-directories.png" + inkscape:export-filename="app-directories.png" inkscape:export-xdpi="200" inkscape:export-ydpi="200"> image/svg+xml + diff --git a/doc/xml/images/scriptingExample.svg b/doc/xml/images/scriptingExample.svg index bfe8461e8..c9ce74164 100644 --- a/doc/xml/images/scriptingExample.svg +++ b/doc/xml/images/scriptingExample.svg @@ -14,13 +14,13 @@ height="744.09448" id="svg2" sodipodi:version="0.32" - inkscape:version="0.47pre4 r22446" + inkscape:version="0.48.0 r9654" version="1.0" sodipodi:docname="scriptingExample.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/sspr/src/documents/EURON/2009/presentation/rtt/scriptingExample.png" - inkscape:export-xdpi="200" - inkscape:export-ydpi="200"> + inkscape:export-filename="scriptingExample.png" + inkscape:export-xdpi="100.01287" + inkscape:export-ydpi="100.01287"> image/svg+xml + @@ -197,12 +198,12 @@ + height="118.32841" + width="157.77124" + x="330.83295" + y="282.12704" /> diff --git a/doc/xml/images/small-app-package.svg b/doc/xml/images/small-app-package.svg index 58be5898c..2eb982f8e 100644 --- a/doc/xml/images/small-app-package.svg +++ b/doc/xml/images/small-app-package.svg @@ -14,11 +14,11 @@ height="1052.3622" id="svg6782" sodipodi:version="0.32" - inkscape:version="0.47 r22583" + inkscape:version="0.48.0 r9654" version="1.0" sodipodi:docname="small-app-package.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/sspr/src/documents/EURON/2009/presentation/rtt/app-directories.png" + inkscape:export-filename="small-app-package.png" inkscape:export-xdpi="200" inkscape:export-ydpi="200"> provides() && callqueue.size() != 0 ) { mcurobject = GlobalService::Instance(); - while ( callqueue.size() ) { + while ( callqueue.size() && mcurobject->hasService( callqueue.front() ) ) { mcurobject = mcurobject->provides( callqueue.front() ); mlastobject = callqueue.front(); callqueue.pop(); diff --git a/rtt/types/PropertyComposition.cpp b/rtt/types/PropertyComposition.cpp index dd752bd6c..9acfe9e8f 100644 --- a/rtt/types/PropertyComposition.cpp +++ b/rtt/types/PropertyComposition.cpp @@ -32,18 +32,8 @@ bool RTT::types::composePropertyBag( PropertyBag const& sourcebag, PropertyBag& log(Debug) << "Used user's composition function for " << tgtprop->getName() <<":"<getType()<decomposeType() since that probably doesn't do what we wish - PropertyBag decomp; - if ( typeDecomposition( tgtprop->getDataSource(), decomp) && ( decomp.getType() == isbag.getType() ) && refreshProperties(decomp, isbag) ) { - // note: we add tgtprop ! the decomp is just a way to get a reference to the parts of tgtprop - target.ownProperty( tgtprop ); - } else { - log(Error) <<"The type '" << isbag.value().getType() <<"' did not provide a type composition function, but I need one to compose it from a PropertyBag." <getTypeName() << "'s getMember() can not process "<< item->getTypeName() <::reference_t result) const { + // The default implementation decomposes result and refreshes it with source. + internal::ReferenceDataSource rds(result); + rds.ref(); // prevent dealloc. + PropertyBag decomp; + // only try refreshProperties if decomp's type is equal to source type. + // update vs refresh: since it is intentional that the decomposition leads to references to parts of result, + // only refreshProperties() is meaningful (ie we have a one-to-one mapping). In case of sequences, this would + // of course not match, so this is struct specific. + return typeDecomposition( &rds, decomp, false) && ( decomp.getType() == source.getType() ) && refreshProperties(decomp, source); + } + + }; } } diff --git a/rtt/types/TemplateTypeInfo.hpp b/rtt/types/TemplateTypeInfo.hpp index f120c472f..f7ff39eaf 100644 --- a/rtt/types/TemplateTypeInfo.hpp +++ b/rtt/types/TemplateTypeInfo.hpp @@ -175,7 +175,7 @@ namespace RTT if ( res ) { res->get(); Logger::log() << Logger::Info << "Building "<getTypeInfo()->toString(dsb) <( name, res->value() ); + return new Constant( name, res->rvalue() ); } else return 0; @@ -247,7 +247,7 @@ namespace RTT virtual std::ostream& write( std::ostream& os, base::DataSourceBase::shared_ptr in ) const { typename internal::DataSource::shared_ptr d = boost::dynamic_pointer_cast< internal::DataSource >( in ); if ( d && use_ostream ) - types::TypeStreamSelector::write( os, d->value() ); + types::TypeStreamSelector::write( os, d->rvalue() ); else { #ifdef OS_HAVE_STREAMS std::string output = std::string("(")+ in->getTypeName() +")"; @@ -285,7 +285,7 @@ namespace RTT return false; // last fall-back: use user supplied function: - if ( composeTypeImpl( pb->value(), ads->set() ) ) + if ( composeTypeImpl( pb->rvalue(), ads->set() ) ) ads->updated(); else { Logger::log() <getTypeName() <::reference_t result) const { - // The default implementation decomposes result and refreshes it with source. - internal::ReferenceDataSource rds(result); - rds.ref(); // prevent dealloc. - PropertyBag decomp; - // only try refreshProperties if decomp's type is equal to source type. - return typeDecomposition( &rds, decomp) && ( decomp.getType() == source.getType() ) && refreshProperties(decomp, source); + return false; } /**