ParameterSetDescriptionFillerBase

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
#ifndef FWCore_ParameterSet_ParameterSetDescriptionFillerBase_h
#define FWCore_ParameterSet_ParameterSetDescriptionFillerBase_h
// -*- C++ -*-
//
// Package:     ParameterSet
// Class  :     ParameterSetDescriptionFillerBase
//
/**\class ParameterSetDescriptionFillerBase ParameterSetDescriptionFillerBase.h FWCore/ParameterSet/interface/ParameterSetDescriptionFillerBase.h

 Description: Base class for a component which can fill a ParameterSetDescription object

 Usage:
    This base class provides an abstract interface for filling a ParameterSetDescription object.  This allows one to used by the 
ParameterSetDescriptionFillerPluginFactory to load a component of any type (e.g. cmsRun Source, cmsRun EDProducer or even a tracking plugin)
and query the component for its allowed ParameterSetDescription.

*/
//
// Original Author:  Chris Jones
//         Created:  Wed Aug  1 16:46:53 EDT 2007
//

// system include files

// user include files

// forward declarations
#include "FWCore/ParameterSet/interface/ParameterSetfwd.h"

#include <string>

namespace edm {

  namespace one {
    class EDProducerBase;
    class EDFilterBase;
    class EDAnalyzerBase;
    class OutputModuleBase;
  }  // namespace one

  namespace stream {
    class EDProducerBase;
    class EDFilterBase;
    class EDAnalyzerBase;
  }  // namespace stream

  namespace global {
    class EDProducerBase;
    class EDFilterBase;
    class EDAnalyzerBase;
    class OutputModuleBase;
  }  // namespace global

  namespace limited {
    class EDProducerBase;
    class EDFilterBase;
    class EDAnalyzerBase;
    class OutputModuleBase;
  }  // namespace limited

  class ParameterSetDescriptionFillerBase {
  public:
    ParameterSetDescriptionFillerBase() {}
    ParameterSetDescriptionFillerBase(const ParameterSetDescriptionFillerBase&) = delete;  // stop default
    const ParameterSetDescriptionFillerBase& operator=(const ParameterSetDescriptionFillerBase&) =
        delete;  // stop default
    virtual ~ParameterSetDescriptionFillerBase();

    // ---------- const member functions ---------------------
    virtual void fill(ConfigurationDescriptions& descriptions) const = 0;
    virtual const std::string& baseType() const = 0;
    virtual const std::string& extendedBaseType() const = 0;

    // ---------- static member functions --------------------

    // ---------- member functions ---------------------------

    static const std::string kBaseForESSource;
    static const std::string kBaseForESProducer;
    static const std::string kBaseForEDLooper;

  protected:
    static const std::string kEmpty;
    static const std::string kBaseForService;
    static const std::string kExtendedBaseForEDAnalyzer;
    static const std::string kExtendedBaseForEDProducer;
    static const std::string kExtendedBaseForEDFilter;
    static const std::string kExtendedBaseForOneEDAnalyzer;
    static const std::string kExtendedBaseForOneEDProducer;
    static const std::string kExtendedBaseForOneEDFilter;
    static const std::string kExtendedBaseForOneOutputModule;
    static const std::string kExtendedBaseForStreamEDAnalyzer;
    static const std::string kExtendedBaseForStreamEDProducer;
    static const std::string kExtendedBaseForStreamEDFilter;
    static const std::string kExtendedBaseForGlobalEDAnalyzer;
    static const std::string kExtendedBaseForGlobalEDProducer;
    static const std::string kExtendedBaseForGlobalEDFilter;
    static const std::string kExtendedBaseForGlobalOutputModule;
    static const std::string kExtendedBaseForLimitedEDAnalyzer;
    static const std::string kExtendedBaseForLimitedEDProducer;
    static const std::string kExtendedBaseForLimitedEDFilter;
    static const std::string kExtendedBaseForLimitedOutputModule;

    static const std::string& extendedBaseType(one::EDAnalyzerBase const*) { return kExtendedBaseForOneEDAnalyzer; }
    static const std::string& extendedBaseType(one::EDProducerBase const*) { return kExtendedBaseForOneEDProducer; }
    static const std::string& extendedBaseType(one::EDFilterBase const*) { return kExtendedBaseForOneEDFilter; }
    static const std::string& extendedBaseType(one::OutputModuleBase const*) { return kExtendedBaseForOneOutputModule; }
    static const std::string& extendedBaseType(stream::EDAnalyzerBase const*) {
      return kExtendedBaseForStreamEDAnalyzer;
    }
    static const std::string& extendedBaseType(stream::EDProducerBase const*) {
      return kExtendedBaseForStreamEDProducer;
    }
    static const std::string& extendedBaseType(stream::EDFilterBase const*) { return kExtendedBaseForStreamEDFilter; }
    static const std::string& extendedBaseType(global::EDAnalyzerBase const*) {
      return kExtendedBaseForGlobalEDAnalyzer;
    }
    static const std::string& extendedBaseType(global::EDProducerBase const*) {
      return kExtendedBaseForGlobalEDProducer;
    }
    static const std::string& extendedBaseType(global::EDFilterBase const*) { return kExtendedBaseForGlobalEDFilter; }
    static const std::string& extendedBaseType(global::OutputModuleBase const*) {
      return kExtendedBaseForGlobalOutputModule;
    }
    static const std::string& extendedBaseType(limited::EDAnalyzerBase const*) {
      return kExtendedBaseForLimitedEDAnalyzer;
    }
    static const std::string& extendedBaseType(limited::EDProducerBase const*) {
      return kExtendedBaseForLimitedEDProducer;
    }
    static const std::string& extendedBaseType(limited::EDFilterBase const*) { return kExtendedBaseForLimitedEDFilter; }
    static const std::string& extendedBaseType(limited::OutputModuleBase const*) {
      return kExtendedBaseForLimitedOutputModule;
    }
    static const std::string& extendedBaseType(void const*) { return kEmpty; }

  private:
    // ---------- member data --------------------------------
  };

}  // namespace edm
#endif