LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
lar::SimpleServiceProviderWrapper< PROVIDER > Class Template Reference

Service returning a provider. More...

#include "ServiceProviderWrappers.h"

Public Types

using provider_type = PROVIDER
 type of the service provider More...
 
using Parameters = art::ServiceTable< typename provider_type::Config >
 Type of configuration parameter (for art description) More...
 

Public Member Functions

 SimpleServiceProviderWrapper (Parameters const &config, art::ActivityRegistry &)
 Constructor (using a configuration table) More...
 
provider_type const * provider () const
 Returns a constant pointer to the service provider. More...
 

Private Attributes

std::unique_ptr< provider_typeprov
 service provider More...
 

Detailed Description

template<class PROVIDER>
class lar::SimpleServiceProviderWrapper< PROVIDER >

Service returning a provider.


Template Parameters
PROVIDERtype of service provider to be returned

This class provides the simplest possible art service to wrap a LArSoft service provider. The service is not reacting to any framework events.

The configuration is passed directly to the provider.

The simplest way to create an art service with this template is:

#include "larcore/CoreUtils/ServiceProviderWrappers.h"
#include "path/to/MyProvider.h"


namespace myprov {

  using MyService = lar::SimpleServiceProviderWrapper<MyProvider>;

}

DECLARE_ART_SERVICE(myprov::MyService, LEGACY)

An implementation file is necessary too, that will look like:

#include "path/to/MyService.h"

DEFINE_ART_SERVICE(myprov::MyService)

If callback registration is needed, a class can derive from this template and still gain a bit of boilerplate facility. That is:

  • a provider_type definition (required by lar::providerFrom())
  • a provider() method to access the provider (required by lar::providerFrom())
  • a Parameters definition (used by art to print accepted configuration)
  • a constructor supporting FHiCL configuration validation
  • transparent life management of the provider instance

Requirements on the service provider:

  • a data type Config being the configuration object. This is the object wrapped by fhicl::Table when performing FHiCL validation.
  • a constructor with as argument a constant reference to a Config object. The provider should be configured by that constructor.

Definition at line 89 of file ServiceProviderWrappers.h.

Member Typedef Documentation

template<class PROVIDER >
using lar::SimpleServiceProviderWrapper< PROVIDER >::Parameters = art::ServiceTable<typename provider_type::Config>

Type of configuration parameter (for art description)

Definition at line 95 of file ServiceProviderWrappers.h.

template<class PROVIDER >
using lar::SimpleServiceProviderWrapper< PROVIDER >::provider_type = PROVIDER

type of the service provider

Definition at line 92 of file ServiceProviderWrappers.h.

Constructor & Destructor Documentation

template<class PROVIDER >
lar::SimpleServiceProviderWrapper< PROVIDER >::SimpleServiceProviderWrapper ( Parameters const &  config,
art::ActivityRegistry  
)
inline

Constructor (using a configuration table)

Definition at line 98 of file ServiceProviderWrappers.h.

99  : prov(std::make_unique<provider_type>(config()))
100  {}
std::unique_ptr< provider_type > prov
service provider

Member Function Documentation

template<class PROVIDER >
provider_type const* lar::SimpleServiceProviderWrapper< PROVIDER >::provider ( ) const
inline

Returns a constant pointer to the service provider.

Definition at line 103 of file ServiceProviderWrappers.h.

103 { return prov.get(); }
std::unique_ptr< provider_type > prov
service provider

Member Data Documentation

template<class PROVIDER >
std::unique_ptr<provider_type> lar::SimpleServiceProviderWrapper< PROVIDER >::prov
private

service provider

Definition at line 106 of file ServiceProviderWrappers.h.


The documentation for this class was generated from the following file: