USRP Hardware Driver and USRP Manual  Version: 4.6.0.0-7-gece7c4811
UHD and USRP Manual
pimpl.hpp File Reference
#include <uhd/config.hpp>
#include <memory>

Go to the source code of this file.

Macros

#define UHD_PIMPL_DECL(_name)
 
#define UHD_PIMPL_MAKE(_name, _args)   std::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)
Value:
struct _name; \
std::shared_ptr<_name>

Make a declaration for a pimpl in a header file.

◆ UHD_PIMPL_MAKE

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

Make an instance of a pimpl in a source file.