The Gaudi Framework  master (82fdf313)
Loading...
Searching...
No Matches
Interface.h
Go to the documentation of this file.
1/***********************************************************************************\
2* (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3* *
4* This software is distributed under the terms of the Apache version 2 licence, *
5* copied verbatim in the file "LICENSE". *
6* *
7* In applying this licence, CERN does not waive the privileges and immunities *
8* granted to it by virtue of its status as an Intergovernmental Organization *
9* or submit itself to any jurisdiction. *
10\***********************************************************************************/
11// ============================================================================
12#pragma once
13// ============================================================================
14// Include files
15// ============================================================================
16// STD & STL
17// ============================================================================
18#include <functional>
19// ============================================================================
20// GaudiKernel
21// ============================================================================
23#include <GaudiKernel/SmartIF.h>
24// ============================================================================
25// GaudiPython
26// ============================================================================
28// ============================================================================
29
30namespace GaudiPython {
41 template <class TYPE>
42 struct Interface {
47 TYPE* operator()( const IInterface* in ) const {
48 return SmartIF<TYPE>( TYPE::interfaceID(), const_cast<IInterface*>( in ) );
49 }
50
55 static TYPE* cast( const IInterface* in ) { return SmartIF<TYPE>( const_cast<IInterface*>( in ) ); }
56
62 static TYPE* cast( const InterfaceID& iid, const IInterface* in ) {
63 return SmartIF<TYPE>( iid, const_cast<IInterface*>( in ) );
64 }
65 };
66
67 template <>
74 TYPE* operator()( const IInterface* in ) const { return SmartIF<TYPE>( const_cast<IInterface*>( in ) ); }
75
80 static TYPE* cast( const IInterface* in ) { return SmartIF<TYPE>( const_cast<IInterface*>( in ) ); }
81
87 static TYPE* cast( const InterfaceID& /* iid */, const IInterface* in ) {
88 return SmartIF<TYPE>( const_cast<IInterface*>( in ) );
89 }
90 };
91
92} // end of namespace GaudiPython
Definition of the basic interface.
Definition IInterface.h:225
Interface ID class.
Definition IInterface.h:38
Small smart pointer class with automatic reference counting for IInterface.
Definition SmartIF.h:28
GaudiPython.h GaudiPython/GaudiPython.h.
Definition Algorithm.h:29
Minor mofidication of original Pere's structure GaudiPython::Interface This helper class is nesessary...
Definition Interface.h:42
static TYPE * cast(const InterfaceID &iid, const IInterface *in)
the only one important method (static)
Definition Interface.h:62
static TYPE * cast(const InterfaceID &, const IInterface *in)
the only one important method (static)
Definition Interface.h:87
TYPE * operator()(const IInterface *in) const
the only one important method
Definition Interface.h:47
TYPE * operator()(const IInterface *in) const
the only one important method
Definition Interface.h:74
static TYPE * cast(const IInterface *in)
the only one important method (static)
Definition Interface.h:80
static TYPE * cast(const IInterface *in)
the only one important method (static)
Definition Interface.h:55