template for engine registry; refs #11
This commit is contained in:
@@ -279,25 +279,31 @@ namespace openssl {
|
||||
|
||||
//! Scoped Engine Registry
|
||||
/*! Engine will be deregistered and freed at destruction */
|
||||
class RegisterEngine {
|
||||
template <class ENGINE=Engine> class RegisterEngine {
|
||||
public:
|
||||
RegisterEngine(Engine* e): _e(e) {
|
||||
RegisterEngine(ENGINE* e = 0): _e(e) {
|
||||
if (_e) EngineMapper::add(_e);
|
||||
}
|
||||
~RegisterEngine() {
|
||||
if (_e) EngineMapper::remove(_e);
|
||||
}
|
||||
operator Engine*() {
|
||||
RegisterEngine& operator=(ENGINE* e) {
|
||||
if (_e) EngineMapper::remove(_e);
|
||||
_e = e;
|
||||
if (_e) EngineMapper::add(_e);
|
||||
return *this;
|
||||
}
|
||||
operator ENGINE*() {
|
||||
return _e;
|
||||
}
|
||||
Engine* operator->() {
|
||||
ENGINE* operator->() {
|
||||
return _e;
|
||||
}
|
||||
Engine& operator*() {
|
||||
ENGINE& operator*() {
|
||||
return *_e;
|
||||
}
|
||||
private:
|
||||
Engine* _e;
|
||||
ENGINE* _e;
|
||||
};
|
||||
|
||||
//@}
|
||||
|
Reference in New Issue
Block a user