GNU Radio's TEST Package
pimpl.h File Reference
#include <memory>

Go to the source code of this file.

Macros

#define OSMOSDR_PIMPL_DECL(_name)    struct _name; std::shared_ptr<_name>
 
#define OSMOSDR_PIMPL_MAKE(_name, _args)    std::shared_ptr<_name>(new _name _args)
 

Detailed Description

"Pimpl idiom" (pointer to implementation idiom). The OSMOSDR_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

◆ OSMOSDR_PIMPL_DECL

#define OSMOSDR_PIMPL_DECL (   _name)     struct _name; std::shared_ptr<_name>

Make a declaration for a pimpl in a header file.

◆ OSMOSDR_PIMPL_MAKE

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

Make an instance of a pimpl in a source file.