USRP Hardware Driver and USRP Manual  Version: 003.009.004-0-g2b5a88bb
UHD and USRP Manual
pimpl.hpp File Reference
#include <uhd/config.hpp>
#include <boost/shared_ptr.hpp>

Go to the source code of this file.

Macros

#define UHD_PIMPL_DECL(_name)   struct _name; boost::shared_ptr<_name>
 
#define UHD_PIMPL_MAKE(_name, _args)   boost::shared_ptr<_name>(new _name _args)
 

Detailed Description

"Pimpl idiom" (pointer to implementation idiom). The UHD_PIMPL_* macros simplify code overhead for declaring and making pimpls.

Each pimpl is implemented as a shared pointer to the implementation:

  • The container class will not have to deallocate the pimpl.
  • The container class will use the pimpl as a regular pointer.
  • Usage: _impl->method(arg0, arg1)
  • Usage: _impl->member = value;
See also
http://en.wikipedia.org/wiki/Opaque_pointer

Macro Definition Documentation

◆ UHD_PIMPL_DECL

#define UHD_PIMPL_DECL (   _name)    struct _name; boost::shared_ptr<_name>

Make a declaration for a pimpl in a header file.

◆ UHD_PIMPL_MAKE

#define UHD_PIMPL_MAKE (   _name,
  _args 
)    boost::shared_ptr<_name>(new _name _args)

Make an instance of a pimpl in a source file.