The Gaudi Framework
master (9f3f8895)
Toggle main menu visibility
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
// ============================================================================
22
#include <
GaudiKernel/IInterface.h
>
23
#include <
GaudiKernel/SmartIF.h
>
24
// ============================================================================
25
// GaudiPython
26
// ============================================================================
27
#include <
GaudiPython/GaudiPython.h
>
28
// ============================================================================
29
30
namespace
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
<>
68
struct
Interface
<
IInterface
> {
69
typedef
IInterface
TYPE
;
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
GaudiPython.h
IInterface.h
SmartIF.h
IInterface
Definition of the basic interface.
Definition
IInterface.h:225
InterfaceID
Interface ID class.
Definition
IInterface.h:38
SmartIF
Small smart pointer class with automatic reference counting for IInterface.
Definition
SmartIF.h:28
GaudiPython
GaudiPython.h GaudiPython/GaudiPython.h.
Definition
Algorithm.h:29
GaudiPython::Interface< IInterface >::cast
static TYPE * cast(const InterfaceID &, const IInterface *in)
the only one important method (static)
Definition
Interface.h:87
GaudiPython::Interface< IInterface >::TYPE
IInterface TYPE
Definition
Interface.h:69
GaudiPython::Interface< IInterface >::operator()
TYPE * operator()(const IInterface *in) const
the only one important method
Definition
Interface.h:74
GaudiPython::Interface< IInterface >::cast
static TYPE * cast(const IInterface *in)
the only one important method (static)
Definition
Interface.h:80
GaudiPython::Interface
Minor mofidication of original Pere's structure GaudiPython::Interface This helper class is nesessary...
Definition
Interface.h:42
GaudiPython::Interface::cast
static TYPE * cast(const InterfaceID &iid, const IInterface *in)
the only one important method (static)
Definition
Interface.h:62
GaudiPython::Interface::operator()
TYPE * operator()(const IInterface *in) const
the only one important method
Definition
Interface.h:47
GaudiPython::Interface::cast
static TYPE * cast(const IInterface *in)
the only one important method (static)
Definition
Interface.h:55
GaudiPython
include
GaudiPython
Interface.h
Generated on
for The Gaudi Framework by
1.17.0