|
MRPT
1.9.9
|
MRPT 2.0 includes several fundamental changes, most of them related to API clean ups and the introduction of C++14 as the minimum supported version of the language.
Existing user applications may need to be adapted to continue compiling and working as usual after updating to MRPT 2.*:
Mandatory changes
PROJECT:std::shared_ptr<> instead of those based on stlplus. Required changes:ptr.clear() –> ptr.reset(). Also, notice that the former stlplus semantics of clear() deleting all copies of the object, as hold by different smart pointers, is no longer maintained. There is no longer such a possibility, since the C++11 standard does not allow it to happen (and it makes sense in this way).ptr.clear_unique() –> ptr.reset(). (Read this note above)ptr.make_unique() does no longer exists, and does not make sense (read above).ptr.pointer() –> ptr.get()CFooPtr to the more standard CFoo::Ptr, with a new pointer-to-const version CFoo::ConstPtr.CFoo::Ptr smart pointers. Refer to changelog of mrpt 1.5.4.std::make_shared<CFoo>(), or mrpt::make_aligned_shared<CFoo>() if the class must be memory-aligned (typically, if it contains Eigen matrices). The arguments of Create() are now perfectly-forwarded to the class ctor, so the parameter list must exactly match any of the available ctors.mrpt::synch::CCriticalSection cs; –> std::mutex cs;mrpt::synch::CCriticalSectionLocker lock(&cs); –> std::lock_guard<std::mutex> lock(cs);mrpt::system::TThreadHandle h = mrpt::system::createThread(...); –> std::thread h = std::thread(...);mrpt::system::sleep(5); –> std::this_thread::sleep_for(5ms);mrpt::synch::CSemaphore sem; sem.waitForSignal(timeout); sem.release(); –> std::promise<void> sem; auto fut = sem.get_future(); fut.wait_for(...); sem.set_value();<mrpt/system/scheduler.h>, not in the old <mrpt/system/threads.h:
mrpt::utils::CObject::duplicate() has been removed, use the equivalent (redundant) mrpt::utils::CObject::clone().mrpt::utils::net, sockets: have been moved to its own new module [mrpt-comms] under namespace mrpt::comms.mrpt::math::randomGenerator –> mrpt::math::getRandomGenerator()mrpt::global_settings old static variables have been replaced by getter/setter functions.ASSERT_* macros must now be ended with a semicolon, e.g. ASSERT_(a>0);writeToStream() and readFromStream() of old CSerializable classes must be replaced by the three methods: serializeGetVersion(), serializeTo(), and serializeTo(). See tutorials in [mrpt-serialization].using. Example:Optional changes
Foo::ConstPtr smart pointers when possible instead of its non-const counterpart. | Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020 |