ProcessContext

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
#ifndef FWCore_ServiceRegistry_ProcessContext_h
#define FWCore_ServiceRegistry_ProcessContext_h

/**\class edm::ProcessContext

 Description: Holds pointer to ProcessConfiguration and
if this is a SubProcess also a pointer to the parent
ProcessContext. This is intended primarily to be passed
to Services as an argument to their callback functions.

 Usage:


*/
//
// Original Author: W. David Dagenhart
//         Created: 7/2/2013

#include "DataFormats/Provenance/interface/ParameterSetID.h"
#include "DataFormats/Provenance/interface/ProcessConfiguration.h"

#include <iosfwd>
#include <string>

namespace edm {

  class ProcessContext {
  public:
    ProcessContext();

    std::string const& processName() const { return processConfiguration_->processName(); }
    ParameterSetID const& parameterSetID() const { return processConfiguration_->parameterSetID(); }
    ProcessConfiguration const* processConfiguration() const { return processConfiguration_; }
    bool isSubProcess() const { return parentProcessContext_ != nullptr; }
    ProcessContext const& parentProcessContext() const;

    void setProcessConfiguration(ProcessConfiguration const* processConfiguration);
    void setParentProcessContext(ProcessContext const* parentProcessContext);

  private:
    ProcessConfiguration const* processConfiguration_;

    // If this is a SubProcess this points to the parent process,
    // otherwise it is null.
    ProcessContext const* parentProcessContext_;
  };

  std::ostream& operator<<(std::ostream&, ProcessContext const&);
}  // namespace edm
#endif