The Gaudi Framework  v33r0 (d5ea422b)
IRndmGenSvc.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2019 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 #ifndef GAUDIKERNEL_IRNDMGENSVC_H
12 #define GAUDIKERNEL_IRNDMGENSVC_H
13 
14 // STL include files
15 #include <string>
16 #include <vector>
17 
18 // Framework include files
19 #include "GaudiKernel/IRndmGen.h"
20 #include "GaudiKernel/IService.h"
21 #include "GaudiKernel/SmartIF.h"
22 
23 // Forward declarations
24 class IRndmGen;
25 class StreamBuffer;
26 class IRndmEngine;
27 class IRndmGenFactory;
28 
45 class GAUDI_API IRndmGenSvc : virtual public IService {
46 public:
52  virtual IRndmEngine* engine() = 0;
53 
58  virtual StatusCode generator( const IRndmGen::Param& par, IRndmGen*& refpGen ) = 0;
59 
61  IRndmGen* gen = nullptr;
62  ;
63  generator( par, gen ).ignore();
64  auto r = SmartIF<IRndmGen>{gen};
65  if ( gen ) { gen->release(); }
66  return r;
67  }
68 };
69 
70 #endif // GAUDIKERNEL_IRNDMGENSVC_H
The stream buffer is a small object collecting object data.
Definition: StreamBuffer.h:51
Definition of a interface for a generic random number generators.
Definition: IRndmGen.h:44
SmartIF< IRndmGen > generator(const IRndmGen::Param &par)
Definition: IRndmGenSvc.h:60
Random Generator service interface definition Definition of a interface for a service to access rando...
Definition: IRndmGenSvc.h:45
General service interface definition.
Definition: IService.h:28
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
virtual unsigned long release()=0
Release Interface instance.
Definition of a interface for a generic random number generator giving randomly distributed numbers i...
Definition: IRndmEngine.h:29
DeclareInterfaceID(IService, 4, 0)
InterfaceID.
#define GAUDI_API
Definition: Kernel.h:81