USRP Hardware Driver and USRP Manual: pimpl.hpp File Reference

| USRP Hardware Driver and USRP Manual Version: 4.8.0.makepkg-0-g308126a4 UHD and USRP Manual |

Loading...
Searching...
No Matches
Macros
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)

## 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.

- Usage: UHD_PIMPL_DECL(impl) _impl;
  Parameters

    _name | the name of the pimpl class

## ◆ UHD_PIMPL_MAKE

#define UHD_PIMPL_MAKE | ( |  | _name,
|  |  | _args )

Value:
std::shared_ptr<_name>(new _name _args)

Make an instance of a pimpl in a source file.

- Usage: _impl = UHD_PIMPL_MAKE(impl, ());
- Usage: _impl = UHD_PIMPL_MAKE(impl, (a0, a1));
  Parameters

    _name | the name of the pimpl class
    _args | the constructor args for the pimpl