GNU Radio's TEST Package
pimpl.h File Reference
#include <memory>
Include dependency graph for pimpl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define OSMOSDR_PIMPL_DECL(_name)
#define OSMOSDR_PIMPL_MAKE(_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)
Value:
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 )
Value:
std::shared_ptr<_name>(new _name _args)

Make an instance of a pimpl in a source file.