File indexing completed on 2024-04-06 12:12:04
0001 #ifndef FWCore_Framework_OccurrenceTraits_h
0002 #define FWCore_Framework_OccurrenceTraits_h
0003
0004
0005
0006
0007
0008
0009
0010 #include "DataFormats/Provenance/interface/LuminosityBlockID.h"
0011 #include "DataFormats/Provenance/interface/ModuleDescription.h"
0012 #include "FWCore/Framework/interface/BranchActionType.h"
0013 #include "FWCore/Framework/interface/EventPrincipal.h"
0014 #include "FWCore/Framework/interface/LuminosityBlockPrincipal.h"
0015 #include "FWCore/Framework/interface/ProcessBlockPrincipal.h"
0016 #include "FWCore/Utilities/interface/RunIndex.h"
0017 #include "FWCore/Framework/interface/RunPrincipal.h"
0018 #include "FWCore/Framework/interface/TransitionInfoTypes.h"
0019 #include "FWCore/ServiceRegistry/interface/ActivityRegistry.h"
0020 #include "FWCore/ServiceRegistry/interface/GlobalContext.h"
0021 #include "FWCore/ServiceRegistry/interface/ModuleCallingContext.h"
0022 #include "FWCore/ServiceRegistry/interface/ParentContext.h"
0023 #include "FWCore/ServiceRegistry/interface/PathContext.h"
0024 #include "FWCore/ServiceRegistry/interface/StreamContext.h"
0025 #include "FWCore/Utilities/interface/LuminosityBlockIndex.h"
0026 #include "FWCore/Utilities/interface/Transition.h"
0027
0028 #include <string>
0029
0030 namespace edm {
0031
0032 class ProcessContext;
0033
0034 template <typename T, BranchActionType B>
0035 class OccurrenceTraits;
0036
0037 template <>
0038 class OccurrenceTraits<EventPrincipal, BranchActionStreamBegin> {
0039 public:
0040 using MyPrincipal = EventPrincipal;
0041 using TransitionInfoType = EventTransitionInfo;
0042 using Context = StreamContext;
0043 static BranchType constexpr branchType_ = InEvent;
0044 static bool constexpr begin_ = true;
0045 static bool constexpr isEvent_ = true;
0046 static Transition constexpr transition_ = Transition::Event;
0047
0048 static void setStreamContext(StreamContext& streamContext, MyPrincipal const& principal) {
0049 streamContext.setTransition(StreamContext::Transition::kEvent);
0050 streamContext.setEventID(principal.id());
0051 streamContext.setTimestamp(principal.time());
0052 }
0053
0054 static void preScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0055 a->preEventSignal_(*streamContext);
0056 }
0057 static void postScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0058 a->postEventSignal_(*streamContext);
0059 }
0060 static void prePathSignal(ActivityRegistry* a, PathContext const* pathContext) {
0061 a->prePathEventSignal_(*pathContext->streamContext(), *pathContext);
0062 }
0063 static void postPathSignal(ActivityRegistry* a, HLTPathStatus const& status, PathContext const* pathContext) {
0064 a->postPathEventSignal_(*pathContext->streamContext(), *pathContext, status);
0065 }
0066
0067 static const char* transitionName() { return "Event"; }
0068 };
0069
0070 template <>
0071 class OccurrenceTraits<RunPrincipal, BranchActionGlobalBegin> {
0072 public:
0073 using MyPrincipal = RunPrincipal;
0074 using TransitionInfoType = RunTransitionInfo;
0075 using Context = GlobalContext;
0076 static BranchType constexpr branchType_ = InRun;
0077 static bool constexpr begin_ = true;
0078 static bool constexpr isEvent_ = false;
0079 static Transition constexpr transition_ = Transition::BeginRun;
0080
0081 static GlobalContext makeGlobalContext(MyPrincipal const& principal, ProcessContext const* processContext) {
0082 return GlobalContext(GlobalContext::Transition::kBeginRun,
0083 LuminosityBlockID(principal.run(), 0),
0084 principal.index(),
0085 LuminosityBlockIndex::invalidLuminosityBlockIndex(),
0086 principal.beginTime(),
0087 processContext);
0088 }
0089
0090 static void preScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0091 a->preGlobalBeginRunSignal_(*globalContext);
0092 }
0093 static void postScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0094 a->postGlobalBeginRunSignal_(*globalContext);
0095 }
0096 static void prePathSignal(ActivityRegistry*, PathContext const*) {}
0097 static void postPathSignal(ActivityRegistry*, HLTPathStatus const&, PathContext const*) {}
0098 static void preModuleSignal(ActivityRegistry* a,
0099 GlobalContext const* globalContext,
0100 ModuleCallingContext const* moduleCallingContext) {
0101 a->preModuleGlobalBeginRunSignal_(*globalContext, *moduleCallingContext);
0102 }
0103 static void postModuleSignal(ActivityRegistry* a,
0104 GlobalContext const* globalContext,
0105 ModuleCallingContext const* moduleCallingContext) {
0106 a->postModuleGlobalBeginRunSignal_(*globalContext, *moduleCallingContext);
0107 }
0108 static const char* transitionName() { return "global begin Run"; }
0109 };
0110
0111 template <>
0112 class OccurrenceTraits<RunPrincipal, BranchActionStreamBegin> {
0113 public:
0114 using MyPrincipal = RunPrincipal;
0115 using TransitionInfoType = RunTransitionInfo;
0116 using Context = StreamContext;
0117 static BranchType constexpr branchType_ = InRun;
0118 static bool constexpr begin_ = true;
0119 static bool constexpr isEvent_ = false;
0120 static Transition constexpr transition_ = Transition::BeginRun;
0121
0122 static void setStreamContext(StreamContext& streamContext, MyPrincipal const& principal) {
0123 streamContext.setTransition(StreamContext::Transition::kBeginRun);
0124 streamContext.setEventID(EventID(principal.run(), 0, 0));
0125 streamContext.setRunIndex(principal.index());
0126 streamContext.setLuminosityBlockIndex(LuminosityBlockIndex::invalidLuminosityBlockIndex());
0127 streamContext.setTimestamp(principal.beginTime());
0128 }
0129
0130 static void preScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0131 a->preStreamBeginRunSignal_(*streamContext);
0132 }
0133 static void postScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0134 a->postStreamBeginRunSignal_(*streamContext);
0135 }
0136 static void prePathSignal(ActivityRegistry*, PathContext const*) {}
0137 static void postPathSignal(ActivityRegistry*, HLTPathStatus const&, PathContext const*) {}
0138 static void preModuleSignal(ActivityRegistry* a,
0139 StreamContext const* streamContext,
0140 ModuleCallingContext const* moduleCallingContext) {
0141 a->preModuleStreamBeginRunSignal_(*streamContext, *moduleCallingContext);
0142 }
0143 static void postModuleSignal(ActivityRegistry* a,
0144 StreamContext const* streamContext,
0145 ModuleCallingContext const* moduleCallingContext) {
0146 a->postModuleStreamBeginRunSignal_(*streamContext, *moduleCallingContext);
0147 }
0148 static const char* transitionName() { return "stream begin Run"; }
0149 };
0150
0151 template <>
0152 class OccurrenceTraits<RunPrincipal, BranchActionStreamEnd> {
0153 public:
0154 using MyPrincipal = RunPrincipal;
0155 using TransitionInfoType = RunTransitionInfo;
0156 using Context = StreamContext;
0157 static BranchType constexpr branchType_ = InRun;
0158 static bool constexpr begin_ = false;
0159 static bool constexpr isEvent_ = false;
0160 static Transition constexpr transition_ = Transition::EndRun;
0161
0162 static void setStreamContext(StreamContext& streamContext, MyPrincipal const& principal) {
0163 streamContext.setTransition(StreamContext::Transition::kEndRun);
0164 streamContext.setEventID(EventID(principal.run(), 0, 0));
0165 streamContext.setRunIndex(principal.index());
0166 streamContext.setLuminosityBlockIndex(LuminosityBlockIndex::invalidLuminosityBlockIndex());
0167 streamContext.setTimestamp(principal.endTime());
0168 }
0169
0170 static void preScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0171 a->preStreamEndRunSignal_(*streamContext);
0172 }
0173 static void postScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0174 a->postStreamEndRunSignal_(*streamContext);
0175 }
0176 static void prePathSignal(ActivityRegistry*, PathContext const*) {}
0177 static void postPathSignal(ActivityRegistry*, HLTPathStatus const&, PathContext const*) {}
0178 static void preModuleSignal(ActivityRegistry* a,
0179 StreamContext const* streamContext,
0180 ModuleCallingContext const* moduleCallingContext) {
0181 a->preModuleStreamEndRunSignal_(*streamContext, *moduleCallingContext);
0182 }
0183 static void postModuleSignal(ActivityRegistry* a,
0184 StreamContext const* streamContext,
0185 ModuleCallingContext const* moduleCallingContext) {
0186 a->postModuleStreamEndRunSignal_(*streamContext, *moduleCallingContext);
0187 }
0188 static const char* transitionName() { return "stream end Run"; }
0189 };
0190
0191 template <>
0192 class OccurrenceTraits<RunPrincipal, BranchActionGlobalEnd> {
0193 public:
0194 using MyPrincipal = RunPrincipal;
0195 using TransitionInfoType = RunTransitionInfo;
0196 using Context = GlobalContext;
0197 static BranchType constexpr branchType_ = InRun;
0198 static bool constexpr begin_ = false;
0199 static bool constexpr isEvent_ = false;
0200 static Transition constexpr transition_ = Transition::EndRun;
0201
0202 static GlobalContext makeGlobalContext(MyPrincipal const& principal, ProcessContext const* processContext) {
0203 return GlobalContext(GlobalContext::Transition::kEndRun,
0204 LuminosityBlockID(principal.run(), 0),
0205 principal.index(),
0206 LuminosityBlockIndex::invalidLuminosityBlockIndex(),
0207 principal.endTime(),
0208 processContext);
0209 }
0210
0211 static void preScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0212 a->preGlobalEndRunSignal_(*globalContext);
0213 }
0214 static void postScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0215 a->postGlobalEndRunSignal_(*globalContext);
0216 }
0217 static void prePathSignal(ActivityRegistry*, PathContext const*) {}
0218 static void postPathSignal(ActivityRegistry*, HLTPathStatus const&, PathContext const*) {}
0219 static void preModuleSignal(ActivityRegistry* a,
0220 GlobalContext const* globalContext,
0221 ModuleCallingContext const* moduleCallingContext) {
0222 a->preModuleGlobalEndRunSignal_(*globalContext, *moduleCallingContext);
0223 }
0224 static void postModuleSignal(ActivityRegistry* a,
0225 GlobalContext const* globalContext,
0226 ModuleCallingContext const* moduleCallingContext) {
0227 a->postModuleGlobalEndRunSignal_(*globalContext, *moduleCallingContext);
0228 }
0229 static const char* transitionName() { return "global end Run"; }
0230 };
0231
0232 template <>
0233 class OccurrenceTraits<LuminosityBlockPrincipal, BranchActionGlobalBegin> {
0234 public:
0235 using MyPrincipal = LuminosityBlockPrincipal;
0236 using TransitionInfoType = LumiTransitionInfo;
0237 using Context = GlobalContext;
0238 static BranchType constexpr branchType_ = InLumi;
0239 static bool constexpr begin_ = true;
0240 static bool constexpr isEvent_ = false;
0241 static Transition constexpr transition_ = Transition::BeginLuminosityBlock;
0242
0243 static GlobalContext makeGlobalContext(MyPrincipal const& principal, ProcessContext const* processContext) {
0244 return GlobalContext(GlobalContext::Transition::kBeginLuminosityBlock,
0245 principal.id(),
0246 principal.runPrincipal().index(),
0247 principal.index(),
0248 principal.beginTime(),
0249 processContext);
0250 }
0251
0252 static void preScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0253 a->preGlobalBeginLumiSignal_(*globalContext);
0254 }
0255 static void postScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0256 a->postGlobalBeginLumiSignal_(*globalContext);
0257 }
0258 static void prePathSignal(ActivityRegistry*, PathContext const*) {}
0259 static void postPathSignal(ActivityRegistry*, HLTPathStatus const&, PathContext const*) {}
0260 static void preModuleSignal(ActivityRegistry* a,
0261 GlobalContext const* globalContext,
0262 ModuleCallingContext const* moduleCallingContext) {
0263 a->preModuleGlobalBeginLumiSignal_(*globalContext, *moduleCallingContext);
0264 }
0265 static void postModuleSignal(ActivityRegistry* a,
0266 GlobalContext const* globalContext,
0267 ModuleCallingContext const* moduleCallingContext) {
0268 a->postModuleGlobalBeginLumiSignal_(*globalContext, *moduleCallingContext);
0269 }
0270 static const char* transitionName() { return "global begin LuminosityBlock"; }
0271 };
0272
0273 template <>
0274 class OccurrenceTraits<LuminosityBlockPrincipal, BranchActionStreamBegin> {
0275 public:
0276 using MyPrincipal = LuminosityBlockPrincipal;
0277 using TransitionInfoType = LumiTransitionInfo;
0278 using Context = StreamContext;
0279 static BranchType constexpr branchType_ = InLumi;
0280 static bool constexpr begin_ = true;
0281 static bool constexpr isEvent_ = false;
0282 static Transition constexpr transition_ = Transition::BeginLuminosityBlock;
0283
0284 static void setStreamContext(StreamContext& streamContext, MyPrincipal const& principal) {
0285 streamContext.setTransition(StreamContext::Transition::kBeginLuminosityBlock);
0286 streamContext.setEventID(EventID(principal.run(), principal.luminosityBlock(), 0));
0287 streamContext.setRunIndex(principal.runPrincipal().index());
0288 streamContext.setLuminosityBlockIndex(principal.index());
0289 streamContext.setTimestamp(principal.beginTime());
0290 }
0291
0292 static void preScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0293 a->preStreamBeginLumiSignal_(*streamContext);
0294 }
0295 static void postScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0296 a->postStreamBeginLumiSignal_(*streamContext);
0297 }
0298 static void prePathSignal(ActivityRegistry*, PathContext const*) {}
0299 static void postPathSignal(ActivityRegistry*, HLTPathStatus const&, PathContext const*) {}
0300 static void preModuleSignal(ActivityRegistry* a,
0301 StreamContext const* streamContext,
0302 ModuleCallingContext const* moduleCallingContext) {
0303 a->preModuleStreamBeginLumiSignal_(*streamContext, *moduleCallingContext);
0304 }
0305 static void postModuleSignal(ActivityRegistry* a,
0306 StreamContext const* streamContext,
0307 ModuleCallingContext const* moduleCallingContext) {
0308 a->postModuleStreamBeginLumiSignal_(*streamContext, *moduleCallingContext);
0309 }
0310 static const char* transitionName() { return "stream begin LuminosityBlock"; }
0311 };
0312
0313 template <>
0314 class OccurrenceTraits<LuminosityBlockPrincipal, BranchActionStreamEnd> {
0315 public:
0316 using MyPrincipal = LuminosityBlockPrincipal;
0317 using TransitionInfoType = LumiTransitionInfo;
0318 using Context = StreamContext;
0319 static BranchType constexpr branchType_ = InLumi;
0320 static bool constexpr begin_ = false;
0321 static bool constexpr isEvent_ = false;
0322 static Transition constexpr transition_ = Transition::EndLuminosityBlock;
0323
0324 static StreamContext const* context(StreamContext const* s, GlobalContext const*) { return s; }
0325
0326 static void setStreamContext(StreamContext& streamContext, MyPrincipal const& principal) {
0327 streamContext.setTransition(StreamContext::Transition::kEndLuminosityBlock);
0328 streamContext.setEventID(EventID(principal.run(), principal.luminosityBlock(), 0));
0329 streamContext.setRunIndex(principal.runPrincipal().index());
0330 streamContext.setLuminosityBlockIndex(principal.index());
0331 streamContext.setTimestamp(principal.endTime());
0332 }
0333
0334 static void preScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0335 a->preStreamEndLumiSignal_(*streamContext);
0336 }
0337 static void postScheduleSignal(ActivityRegistry* a, StreamContext const* streamContext) {
0338 a->postStreamEndLumiSignal_(*streamContext);
0339 }
0340 static void prePathSignal(ActivityRegistry*, PathContext const*) {}
0341 static void postPathSignal(ActivityRegistry*, HLTPathStatus const&, PathContext const*) {}
0342 static void preModuleSignal(ActivityRegistry* a,
0343 StreamContext const* streamContext,
0344 ModuleCallingContext const* moduleCallingContext) {
0345 a->preModuleStreamEndLumiSignal_(*streamContext, *moduleCallingContext);
0346 }
0347 static void postModuleSignal(ActivityRegistry* a,
0348 StreamContext const* streamContext,
0349 ModuleCallingContext const* moduleCallingContext) {
0350 a->postModuleStreamEndLumiSignal_(*streamContext, *moduleCallingContext);
0351 }
0352 static const char* transitionName() { return "end stream LuminosityBlock"; }
0353 };
0354
0355 template <>
0356 class OccurrenceTraits<LuminosityBlockPrincipal, BranchActionGlobalEnd> {
0357 public:
0358 using MyPrincipal = LuminosityBlockPrincipal;
0359 using TransitionInfoType = LumiTransitionInfo;
0360 using Context = GlobalContext;
0361 static BranchType constexpr branchType_ = InLumi;
0362 static bool constexpr begin_ = false;
0363 static bool constexpr isEvent_ = false;
0364 static Transition constexpr transition_ = Transition::EndLuminosityBlock;
0365
0366 static GlobalContext makeGlobalContext(MyPrincipal const& principal, ProcessContext const* processContext) {
0367 return GlobalContext(GlobalContext::Transition::kEndLuminosityBlock,
0368 principal.id(),
0369 principal.runPrincipal().index(),
0370 principal.index(),
0371 principal.beginTime(),
0372 processContext);
0373 }
0374
0375 static void preScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0376 a->preGlobalEndLumiSignal_(*globalContext);
0377 }
0378 static void postScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0379 a->postGlobalEndLumiSignal_(*globalContext);
0380 }
0381 static void prePathSignal(ActivityRegistry*, PathContext const*) {}
0382 static void postPathSignal(ActivityRegistry*, HLTPathStatus const&, PathContext const*) {}
0383 static void preModuleSignal(ActivityRegistry* a,
0384 GlobalContext const* globalContext,
0385 ModuleCallingContext const* moduleCallingContext) {
0386 a->preModuleGlobalEndLumiSignal_(*globalContext, *moduleCallingContext);
0387 }
0388 static void postModuleSignal(ActivityRegistry* a,
0389 GlobalContext const* globalContext,
0390 ModuleCallingContext const* moduleCallingContext) {
0391 a->postModuleGlobalEndLumiSignal_(*globalContext, *moduleCallingContext);
0392 }
0393 static const char* transitionName() { return "end global LuminosityBlock"; }
0394 };
0395
0396 template <>
0397 class OccurrenceTraits<ProcessBlockPrincipal, BranchActionGlobalBegin> {
0398 public:
0399 using MyPrincipal = ProcessBlockPrincipal;
0400 using TransitionInfoType = ProcessBlockTransitionInfo;
0401 using Context = GlobalContext;
0402 static BranchType constexpr branchType_ = InProcess;
0403 static bool constexpr isEvent_ = false;
0404 static Transition constexpr transition_ = Transition::BeginProcessBlock;
0405
0406 static GlobalContext makeGlobalContext(MyPrincipal const& principal, ProcessContext const* processContext) {
0407 return GlobalContext(GlobalContext::Transition::kBeginProcessBlock,
0408 LuminosityBlockID(),
0409 RunIndex::invalidRunIndex(),
0410 LuminosityBlockIndex::invalidLuminosityBlockIndex(),
0411 Timestamp::invalidTimestamp(),
0412 processContext);
0413 }
0414
0415 static void preScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0416 a->preBeginProcessBlockSignal_(*globalContext);
0417 }
0418 static void postScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0419 a->postBeginProcessBlockSignal_(*globalContext);
0420 }
0421 static void preModuleSignal(ActivityRegistry* a,
0422 GlobalContext const* globalContext,
0423 ModuleCallingContext const* moduleCallingContext) {
0424 a->preModuleBeginProcessBlockSignal_(*globalContext, *moduleCallingContext);
0425 }
0426 static void postModuleSignal(ActivityRegistry* a,
0427 GlobalContext const* globalContext,
0428 ModuleCallingContext const* moduleCallingContext) {
0429 a->postModuleBeginProcessBlockSignal_(*globalContext, *moduleCallingContext);
0430 }
0431 static const char* transitionName() { return "begin ProcessBlock"; }
0432 };
0433
0434 template <>
0435 class OccurrenceTraits<ProcessBlockPrincipal, BranchActionProcessBlockInput> {
0436 public:
0437 using MyPrincipal = ProcessBlockPrincipal;
0438 using TransitionInfoType = ProcessBlockTransitionInfo;
0439 using Context = GlobalContext;
0440 static BranchType constexpr branchType_ = InProcess;
0441 static bool constexpr isEvent_ = false;
0442 static Transition constexpr transition_ = Transition::AccessInputProcessBlock;
0443
0444 static GlobalContext makeGlobalContext(MyPrincipal const& principal, ProcessContext const* processContext) {
0445 return GlobalContext(GlobalContext::Transition::kAccessInputProcessBlock,
0446 LuminosityBlockID(),
0447 RunIndex::invalidRunIndex(),
0448 LuminosityBlockIndex::invalidLuminosityBlockIndex(),
0449 Timestamp::invalidTimestamp(),
0450 processContext);
0451 }
0452
0453 static void preScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0454 a->preAccessInputProcessBlockSignal_(*globalContext);
0455 }
0456 static void postScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0457 a->postAccessInputProcessBlockSignal_(*globalContext);
0458 }
0459 static void preModuleSignal(ActivityRegistry* a,
0460 GlobalContext const* globalContext,
0461 ModuleCallingContext const* moduleCallingContext) {
0462 a->preModuleAccessInputProcessBlockSignal_(*globalContext, *moduleCallingContext);
0463 }
0464 static void postModuleSignal(ActivityRegistry* a,
0465 GlobalContext const* globalContext,
0466 ModuleCallingContext const* moduleCallingContext) {
0467 a->postModuleAccessInputProcessBlockSignal_(*globalContext, *moduleCallingContext);
0468 }
0469 static const char* transitionName() { return "access input ProcessBlock"; }
0470 };
0471
0472 template <>
0473 class OccurrenceTraits<ProcessBlockPrincipal, BranchActionGlobalEnd> {
0474 public:
0475 using MyPrincipal = ProcessBlockPrincipal;
0476 using TransitionInfoType = ProcessBlockTransitionInfo;
0477 using Context = GlobalContext;
0478 static BranchType constexpr branchType_ = InProcess;
0479 static bool constexpr isEvent_ = false;
0480 static Transition constexpr transition_ = Transition::EndProcessBlock;
0481
0482 static GlobalContext makeGlobalContext(MyPrincipal const& principal, ProcessContext const* processContext) {
0483 return GlobalContext(GlobalContext::Transition::kEndProcessBlock,
0484 LuminosityBlockID(),
0485 RunIndex::invalidRunIndex(),
0486 LuminosityBlockIndex::invalidLuminosityBlockIndex(),
0487 Timestamp::invalidTimestamp(),
0488 processContext);
0489 }
0490
0491 static void preScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0492 a->preEndProcessBlockSignal_(*globalContext);
0493 }
0494 static void postScheduleSignal(ActivityRegistry* a, GlobalContext const* globalContext) {
0495 a->postEndProcessBlockSignal_(*globalContext);
0496 }
0497 static void preModuleSignal(ActivityRegistry* a,
0498 GlobalContext const* globalContext,
0499 ModuleCallingContext const* moduleCallingContext) {
0500 a->preModuleEndProcessBlockSignal_(*globalContext, *moduleCallingContext);
0501 }
0502 static void postModuleSignal(ActivityRegistry* a,
0503 GlobalContext const* globalContext,
0504 ModuleCallingContext const* moduleCallingContext) {
0505 a->postModuleEndProcessBlockSignal_(*globalContext, *moduleCallingContext);
0506 }
0507 static const char* transitionName() { return "end ProcessBlock"; }
0508 };
0509
0510 }
0511 #endif