libpqxx
The C++ client library for PostgreSQL
|
Base class for call gates. More...
Protected Types | |
using | super = callgate< HOME > |
This class, to keep constructors easy. | |
using | reference = HOME & |
A reference to the host class. Helps keep constructors easy. | |
Protected Member Functions | |
callgate (reference x) | |
reference | home () const noexcept |
The home object. The gate class has full "private" access. | |
Base class for call gates.
A call gate defines a limited, private interface on the host class that specified client classes can access.
The metaphor works as follows: the gate stands in front of a "home," which is really a class, and only lets specific friends in.
To implement a call gate that gives client C access to host H,
This special kind of "gated" friendship gives C private access to H, but only through an expressly limited interface. The gate class can access its host object as home().
Keep gate classes entirely stateless. They should be ultra-lightweight wrappers for their host classes, and be optimized away as much as possible by the compiler. Once you start adding state, you're on a slippery slope away from the pure, clean, limited interface pattern that gate classes are meant to implement.
Ideally, all member functions of the gate class should be one-liners passing calls straight on to the host class. It can be useful however to break this rule temporarily during inter-class refactoring.