00001 #ifndef FWCore_ServiceRegistry_ActivityRegistry_h
00002 #define FWCore_ServiceRegistry_ActivityRegistry_h
00003
00004
00005
00006
00007
00016
00017
00018
00019
00020
00021
00022
00023 #include "sigc++/signal.h"
00024 #include "boost/bind.hpp"
00025 #include "boost/mem_fn.hpp"
00026 #include "boost/utility.hpp"
00027
00028
00029
00030 #define AR_WATCH_USING_METHOD_0(method) template<class TClass, class TMethod> void method (TClass* iObject, TMethod iMethod) { method (boost::bind(boost::mem_fn(iMethod), iObject)); }
00031 #define AR_WATCH_USING_METHOD_1(method) template<class TClass, class TMethod> void method (TClass* iObject, TMethod iMethod) { method (boost::bind(boost::mem_fn(iMethod), iObject, _1)); }
00032 #define AR_WATCH_USING_METHOD_2(method) template<class TClass, class TMethod> void method (TClass* iObject, TMethod iMethod) { method (boost::bind(boost::mem_fn(iMethod), iObject, _1, _2)); }
00033
00034 namespace edm {
00035 class EventID;
00036 class LuminosityBlockID;
00037 class RunID;
00038 class Timestamp;
00039 class ModuleDescription;
00040 class Event;
00041 class LuminosityBlock;
00042 class Run;
00043 class EventSetup;
00044 class HLTPathStatus;
00045
00046 class ActivityRegistry : private boost::noncopyable {
00047 public:
00048 ActivityRegistry() {}
00049
00050
00051 typedef sigc::signal<void> PostBeginJob;
00053 PostBeginJob postBeginJobSignal_;
00055 void watchPostBeginJob(PostBeginJob::slot_type const& iSlot) {
00056 postBeginJobSignal_.connect(iSlot);
00057 }
00058 AR_WATCH_USING_METHOD_0(watchPostBeginJob)
00059
00060 typedef sigc::signal<void> PostEndJob;
00062 PostEndJob postEndJobSignal_;
00063 void watchPostEndJob(PostEndJob::slot_type const& iSlot) {
00064 PostEndJob::slot_list_type sl = postEndJobSignal_.slots();
00065 sl.push_front(iSlot);
00066 }
00067 AR_WATCH_USING_METHOD_0(watchPostEndJob)
00068
00069 typedef sigc::signal<void> JobFailure;
00072 JobFailure jobFailureSignal_;
00074 void watchJobFailure(JobFailure::slot_type const& iSlot) {
00075 JobFailure::slot_list_type sl = jobFailureSignal_.slots();
00076 sl.push_front(iSlot);
00077 }
00078 AR_WATCH_USING_METHOD_0(watchJobFailure)
00079
00080
00081 typedef sigc::signal<void> PreSource;
00082 PreSource preSourceSignal_;
00083 void watchPreSource(PreSource::slot_type const& iSlot) {
00084 preSourceSignal_.connect(iSlot);
00085 }
00086 AR_WATCH_USING_METHOD_0(watchPreSource)
00087
00088
00089 typedef sigc::signal<void> PostSource;
00090 PostSource postSourceSignal_;
00091 void watchPostSource(PostSource::slot_type const& iSlot) {
00092 PostSource::slot_list_type sl = postSourceSignal_.slots();
00093 sl.push_front(iSlot);
00094 }
00095 AR_WATCH_USING_METHOD_0(watchPostSource)
00096
00097
00098 typedef sigc::signal<void> PreSourceLumi;
00099 PreSourceLumi preSourceLumiSignal_;
00100 void watchPreSourceLumi(PreSourceLumi::slot_type const& iSlot) {
00101 preSourceLumiSignal_.connect(iSlot);
00102 }
00103 AR_WATCH_USING_METHOD_0(watchPreSourceLumi)
00104
00105
00106 typedef sigc::signal<void> PostSourceLumi;
00107 PostSourceLumi postSourceLumiSignal_;
00108 void watchPostSourceLumi(PostSourceLumi::slot_type const& iSlot) {
00109 PostSourceLumi::slot_list_type sl = postSourceLumiSignal_.slots();
00110 sl.push_front(iSlot);
00111 }
00112 AR_WATCH_USING_METHOD_0(watchPostSourceLumi)
00113
00114
00115 typedef sigc::signal<void> PreSourceRun;
00116 PreSourceRun preSourceRunSignal_;
00117 void watchPreSourceRun(PreSourceRun::slot_type const& iSlot) {
00118 preSourceRunSignal_.connect(iSlot);
00119 }
00120 AR_WATCH_USING_METHOD_0(watchPreSourceRun)
00121
00122
00123 typedef sigc::signal<void> PostSourceRun;
00124 PostSourceRun postSourceRunSignal_;
00125 void watchPostSourceRun(PostSourceRun::slot_type const& iSlot) {
00126 PostSourceRun::slot_list_type sl = postSourceRunSignal_.slots();
00127 sl.push_front(iSlot);
00128 }
00129 AR_WATCH_USING_METHOD_0(watchPostSourceRun)
00130
00131
00132 typedef sigc::signal<void> PreOpenFile;
00133 PreOpenFile preOpenFileSignal_;
00134 void watchPreOpenFile(PreOpenFile::slot_type const& iSlot) {
00135 preOpenFileSignal_.connect(iSlot);
00136 }
00137 AR_WATCH_USING_METHOD_0(watchPreOpenFile)
00138
00139
00140
00141 typedef sigc::signal<void> PostOpenFile;
00142 PostOpenFile postOpenFileSignal_;
00143 void watchPostOpenFile(PostOpenFile::slot_type const& iSlot) {
00144 PostOpenFile::slot_list_type sl = postOpenFileSignal_.slots();
00145 sl.push_front(iSlot);
00146 }
00147 AR_WATCH_USING_METHOD_0(watchPostOpenFile)
00148
00149
00150
00151
00152 typedef sigc::signal<void, std::string const&, bool> PreCloseFile;
00153 PreCloseFile preCloseFileSignal_;
00154 void watchPreCloseFile(PreCloseFile::slot_type const& iSlot) {
00155 preCloseFileSignal_.connect(iSlot);
00156 }
00157 AR_WATCH_USING_METHOD_2(watchPreCloseFile)
00158
00159
00160 typedef sigc::signal<void> PostCloseFile;
00161 PostCloseFile postCloseFileSignal_;
00162 void watchPostCloseFile(PostCloseFile::slot_type const& iSlot) {
00163 PostCloseFile::slot_list_type sl = postCloseFileSignal_.slots();
00164 sl.push_front(iSlot);
00165 }
00166 AR_WATCH_USING_METHOD_0(watchPostCloseFile)
00167
00168 typedef sigc::signal<void, EventID const&, Timestamp const&> PreProcessEvent;
00170 PreProcessEvent preProcessEventSignal_;
00171 void watchPreProcessEvent(PreProcessEvent::slot_type const& iSlot) {
00172 preProcessEventSignal_.connect(iSlot);
00173 }
00174 AR_WATCH_USING_METHOD_2(watchPreProcessEvent)
00175
00176 typedef sigc::signal<void, Event const&, EventSetup const&> PostProcessEvent;
00178 PostProcessEvent postProcessEventSignal_;
00179 void watchPostProcessEvent(PostProcessEvent::slot_type const& iSlot) {
00180 PostProcessEvent::slot_list_type sl = postProcessEventSignal_.slots();
00181 sl.push_front(iSlot);
00182 }
00183 AR_WATCH_USING_METHOD_2(watchPostProcessEvent)
00184
00185 typedef sigc::signal<void, RunID const&, Timestamp const&> PreBeginRun;
00187 PreBeginRun preBeginRunSignal_;
00188 void watchPreBeginRun(PreBeginRun::slot_type const& iSlot) {
00189 preBeginRunSignal_.connect(iSlot);
00190 }
00191 AR_WATCH_USING_METHOD_2(watchPreBeginRun)
00192
00193 typedef sigc::signal<void, Run const&, EventSetup const&> PostBeginRun;
00195 PostBeginRun postBeginRunSignal_;
00196 void watchPostBeginRun(PostBeginRun::slot_type const& iSlot) {
00197 PostBeginRun::slot_list_type sl = postBeginRunSignal_.slots();
00198 sl.push_front(iSlot);
00199 }
00200 AR_WATCH_USING_METHOD_2(watchPostBeginRun)
00201
00202 typedef sigc::signal<void, RunID const&, Timestamp const&> PreEndRun;
00204 PreEndRun preEndRunSignal_;
00205 void watchPreEndRun(PreEndRun::slot_type const& iSlot) {
00206 preEndRunSignal_.connect(iSlot);
00207 }
00208 AR_WATCH_USING_METHOD_2(watchPreEndRun)
00209
00210 typedef sigc::signal<void, Run const&, EventSetup const&> PostEndRun;
00212 PostEndRun postEndRunSignal_;
00213 void watchPostEndRun(PostEndRun::slot_type const& iSlot) {
00214 PostEndRun::slot_list_type sl = postEndRunSignal_.slots();
00215 sl.push_front(iSlot);
00216 }
00217 AR_WATCH_USING_METHOD_2(watchPostEndRun)
00218
00219 typedef sigc::signal<void, LuminosityBlockID const&, Timestamp const&> PreBeginLumi;
00221 PreBeginLumi preBeginLumiSignal_;
00222 void watchPreBeginLumi(PreBeginLumi::slot_type const& iSlot) {
00223 preBeginLumiSignal_.connect(iSlot);
00224 }
00225 AR_WATCH_USING_METHOD_2(watchPreBeginLumi)
00226
00227 typedef sigc::signal<void, LuminosityBlock const&, EventSetup const&> PostBeginLumi;
00229 PostBeginLumi postBeginLumiSignal_;
00230 void watchPostBeginLumi(PostBeginLumi::slot_type const& iSlot) {
00231 PostBeginLumi::slot_list_type sl = postBeginLumiSignal_.slots();
00232 sl.push_front(iSlot);
00233 }
00234 AR_WATCH_USING_METHOD_2(watchPostBeginLumi)
00235
00236 typedef sigc::signal<void, LuminosityBlockID const&, Timestamp const&> PreEndLumi;
00238 PreEndLumi preEndLumiSignal_;
00239 void watchPreEndLumi(PreEndLumi::slot_type const& iSlot) {
00240 preEndLumiSignal_.connect(iSlot);
00241 }
00242 AR_WATCH_USING_METHOD_2(watchPreEndLumi)
00243
00244 typedef sigc::signal<void, LuminosityBlock const&, EventSetup const&> PostEndLumi;
00246 PostEndLumi postEndLumiSignal_;
00247 void watchPostEndLumi(PostEndLumi::slot_type const& iSlot) {
00248 PostEndLumi::slot_list_type sl = postEndLumiSignal_.slots();
00249 sl.push_front(iSlot);
00250 }
00251 AR_WATCH_USING_METHOD_2(watchPostEndLumi)
00252
00253
00254 typedef sigc::signal<void, std::string const&> PreProcessPath;
00255 PreProcessPath preProcessPathSignal_;
00256 void watchPreProcessPath(PreProcessPath::slot_type const& iSlot) {
00257 preProcessPathSignal_.connect(iSlot);
00258 }
00259 AR_WATCH_USING_METHOD_1(watchPreProcessPath)
00260
00261
00262 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostProcessPath;
00263 PostProcessPath postProcessPathSignal_;
00264 void watchPostProcessPath(PostProcessPath::slot_type const& iSlot) {
00265 PostProcessPath::slot_list_type sl = postProcessPathSignal_.slots();
00266 sl.push_front(iSlot);
00267 }
00268 AR_WATCH_USING_METHOD_2(watchPostProcessPath)
00269
00270
00271 typedef sigc::signal<void, std::string const&> PrePathBeginRun;
00272 PrePathBeginRun prePathBeginRunSignal_;
00273 void watchPrePathBeginRun(PrePathBeginRun::slot_type const& iSlot) {
00274 prePathBeginRunSignal_.connect(iSlot);
00275 }
00276 AR_WATCH_USING_METHOD_1(watchPrePathBeginRun)
00277
00278
00279 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostPathBeginRun;
00280 PostPathBeginRun postPathBeginRunSignal_;
00281 void watchPostPathBeginRun(PostPathBeginRun::slot_type const& iSlot) {
00282 PostPathBeginRun::slot_list_type sl = postPathBeginRunSignal_.slots();
00283 sl.push_front(iSlot);
00284 }
00285 AR_WATCH_USING_METHOD_2(watchPostPathBeginRun)
00286
00287
00288 typedef sigc::signal<void, std::string const&> PrePathEndRun;
00289 PrePathEndRun prePathEndRunSignal_;
00290 void watchPrePathEndRun(PrePathEndRun::slot_type const& iSlot) {
00291 prePathEndRunSignal_.connect(iSlot);
00292 }
00293 AR_WATCH_USING_METHOD_1(watchPrePathEndRun)
00294
00295
00296 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostPathEndRun;
00297 PostPathEndRun postPathEndRunSignal_;
00298 void watchPostPathEndRun(PostPathEndRun::slot_type const& iSlot) {
00299 PostPathEndRun::slot_list_type sl = postPathEndRunSignal_.slots();
00300 sl.push_front(iSlot);
00301 }
00302 AR_WATCH_USING_METHOD_2(watchPostPathEndRun)
00303
00304
00305 typedef sigc::signal<void, std::string const&> PrePathBeginLumi;
00306 PrePathBeginLumi prePathBeginLumiSignal_;
00307 void watchPrePathBeginLumi(PrePathBeginLumi::slot_type const& iSlot) {
00308 prePathBeginLumiSignal_.connect(iSlot);
00309 }
00310 AR_WATCH_USING_METHOD_1(watchPrePathBeginLumi)
00311
00312
00313 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostPathBeginLumi;
00314 PostPathBeginLumi postPathBeginLumiSignal_;
00315 void watchPostPathBeginLumi(PostPathBeginLumi::slot_type const& iSlot) {
00316 PostPathBeginLumi::slot_list_type sl = postPathBeginLumiSignal_.slots();
00317 sl.push_front(iSlot);
00318 }
00319 AR_WATCH_USING_METHOD_2(watchPostPathBeginLumi)
00320
00321
00322 typedef sigc::signal<void, std::string const&> PrePathEndLumi;
00323 PrePathEndLumi prePathEndLumiSignal_;
00324 void watchPrePathEndLumi(PrePathEndLumi::slot_type const& iSlot) {
00325 prePathEndLumiSignal_.connect(iSlot);
00326 }
00327 AR_WATCH_USING_METHOD_1(watchPrePathEndLumi)
00328
00329
00330 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostPathEndLumi;
00331 PostPathEndLumi postPathEndLumiSignal_;
00332 void watchPostPathEndLumi(PostPathEndLumi::slot_type const& iSlot) {
00333 PostPathEndLumi::slot_list_type sl = postPathEndLumiSignal_.slots();
00334 sl.push_front(iSlot);
00335 }
00336 AR_WATCH_USING_METHOD_2(watchPostPathEndLumi)
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351 typedef sigc::signal<void, ModuleDescription const&> PreModuleConstruction;
00352 PreModuleConstruction preModuleConstructionSignal_;
00353 void watchPreModuleConstruction(PreModuleConstruction::slot_type const& iSlot) {
00354 preModuleConstructionSignal_.connect(iSlot);
00355 }
00356
00357 AR_WATCH_USING_METHOD_1(watchPreModuleConstruction)
00358
00359
00360 typedef sigc::signal<void, ModuleDescription const&> PostModuleConstruction;
00361 PostModuleConstruction postModuleConstructionSignal_;
00362 void watchPostModuleConstruction(PostModuleConstruction::slot_type const& iSlot) {
00363 PostModuleConstruction::slot_list_type sl = postModuleConstructionSignal_.slots();
00364 sl.push_front(iSlot);
00365 }
00366
00367 AR_WATCH_USING_METHOD_1(watchPostModuleConstruction)
00368
00369
00370 typedef sigc::signal<void, ModuleDescription const&> PreModuleBeginJob;
00371 PreModuleBeginJob preModuleBeginJobSignal_;
00372 void watchPreModuleBeginJob(PreModuleBeginJob::slot_type const& iSlot) {
00373 preModuleBeginJobSignal_.connect(iSlot);
00374 }
00375 AR_WATCH_USING_METHOD_1(watchPreModuleBeginJob)
00376
00377
00378 typedef sigc::signal<void, ModuleDescription const&> PostModuleBeginJob;
00379 PostModuleBeginJob postModuleBeginJobSignal_;
00380 void watchPostModuleBeginJob(PostModuleBeginJob::slot_type const& iSlot) {
00381 PostModuleBeginJob::slot_list_type sl = postModuleBeginJobSignal_.slots();
00382 sl.push_front(iSlot);
00383 }
00384 AR_WATCH_USING_METHOD_1(watchPostModuleBeginJob)
00385
00386
00387 typedef sigc::signal<void, ModuleDescription const&> PreModuleEndJob;
00388 PreModuleEndJob preModuleEndJobSignal_;
00389 void watchPreModuleEndJob(PreModuleEndJob::slot_type const& iSlot) {
00390 preModuleEndJobSignal_.connect(iSlot);
00391 }
00392 AR_WATCH_USING_METHOD_1(watchPreModuleEndJob)
00393
00394
00395 typedef sigc::signal<void, ModuleDescription const&> PostModuleEndJob;
00396 PostModuleEndJob postModuleEndJobSignal_;
00397 void watchPostModuleEndJob(PostModuleEndJob::slot_type const& iSlot) {
00398 PostModuleEndJob::slot_list_type sl = postModuleEndJobSignal_.slots();
00399 sl.push_front(iSlot);
00400 }
00401 AR_WATCH_USING_METHOD_1(watchPostModuleEndJob)
00402
00403
00404 typedef sigc::signal<void, ModuleDescription const&> PreModule;
00405 PreModule preModuleSignal_;
00406 void watchPreModule(PreModule::slot_type const& iSlot) {
00407 preModuleSignal_.connect(iSlot);
00408 }
00409 AR_WATCH_USING_METHOD_1(watchPreModule)
00410
00411
00412 typedef sigc::signal<void, ModuleDescription const&> PostModule;
00413 PostModule postModuleSignal_;
00414 void watchPostModule(PostModule::slot_type const& iSlot) {
00415 PostModule::slot_list_type sl = postModuleSignal_.slots();
00416 sl.push_front(iSlot);
00417 }
00418 AR_WATCH_USING_METHOD_1(watchPostModule)
00419
00420
00421 typedef sigc::signal<void, ModuleDescription const&> PreModuleBeginRun;
00422 PreModuleBeginRun preModuleBeginRunSignal_;
00423 void watchPreModuleBeginRun(PreModuleBeginRun::slot_type const& iSlot) {
00424 preModuleBeginRunSignal_.connect(iSlot);
00425 }
00426 AR_WATCH_USING_METHOD_1(watchPreModuleBeginRun)
00427
00428
00429 typedef sigc::signal<void, ModuleDescription const&> PostModuleBeginRun;
00430 PostModuleBeginRun postModuleBeginRunSignal_;
00431 void watchPostModuleBeginRun(PostModuleBeginRun::slot_type const& iSlot) {
00432 PostModuleBeginRun::slot_list_type sl = postModuleBeginRunSignal_.slots();
00433 sl.push_front(iSlot);
00434 }
00435 AR_WATCH_USING_METHOD_1(watchPostModuleBeginRun)
00436
00437
00438 typedef sigc::signal<void, ModuleDescription const&> PreModuleEndRun;
00439 PreModuleEndRun preModuleEndRunSignal_;
00440 void watchPreModuleEndRun(PreModuleEndRun::slot_type const& iSlot) {
00441 preModuleEndRunSignal_.connect(iSlot);
00442 }
00443 AR_WATCH_USING_METHOD_1(watchPreModuleEndRun)
00444
00445
00446 typedef sigc::signal<void, ModuleDescription const&> PostModuleEndRun;
00447 PostModuleEndRun postModuleEndRunSignal_;
00448 void watchPostModuleEndRun(PostModuleEndRun::slot_type const& iSlot) {
00449 PostModuleEndRun::slot_list_type sl = postModuleEndRunSignal_.slots();
00450 sl.push_front(iSlot);
00451 }
00452 AR_WATCH_USING_METHOD_1(watchPostModuleEndRun)
00453
00454
00455 typedef sigc::signal<void, ModuleDescription const&> PreModuleBeginLumi;
00456 PreModuleBeginLumi preModuleBeginLumiSignal_;
00457 void watchPreModuleBeginLumi(PreModuleBeginLumi::slot_type const& iSlot) {
00458 preModuleBeginLumiSignal_.connect(iSlot);
00459 }
00460 AR_WATCH_USING_METHOD_1(watchPreModuleBeginLumi)
00461
00462
00463 typedef sigc::signal<void, ModuleDescription const&> PostModuleBeginLumi;
00464 PostModuleBeginLumi postModuleBeginLumiSignal_;
00465 void watchPostModuleBeginLumi(PostModuleBeginLumi::slot_type const& iSlot) {
00466 PostModuleBeginLumi::slot_list_type sl = postModuleBeginLumiSignal_.slots();
00467 sl.push_front(iSlot);
00468 }
00469 AR_WATCH_USING_METHOD_1(watchPostModuleBeginLumi)
00470
00471
00472 typedef sigc::signal<void, ModuleDescription const&> PreModuleEndLumi;
00473 PreModuleEndLumi preModuleEndLumiSignal_;
00474 void watchPreModuleEndLumi(PreModuleEndLumi::slot_type const& iSlot) {
00475 preModuleEndLumiSignal_.connect(iSlot);
00476 }
00477 AR_WATCH_USING_METHOD_1(watchPreModuleEndLumi)
00478
00479
00480 typedef sigc::signal<void, ModuleDescription const&> PostModuleEndLumi;
00481 PostModuleEndLumi postModuleEndLumiSignal_;
00482 void watchPostModuleEndLumi(PostModuleEndLumi::slot_type const& iSlot) {
00483 PostModuleEndLumi::slot_list_type sl = postModuleEndLumiSignal_.slots();
00484 sl.push_front(iSlot);
00485 }
00486 AR_WATCH_USING_METHOD_1(watchPostModuleEndLumi)
00487
00488
00489 typedef sigc::signal<void, ModuleDescription const&> PreSourceConstruction;
00490 PreSourceConstruction preSourceConstructionSignal_;
00491 void watchPreSourceConstruction(PreSourceConstruction::slot_type const& iSlot) {
00492 preSourceConstructionSignal_.connect(iSlot);
00493 }
00494
00495 AR_WATCH_USING_METHOD_1(watchPreSourceConstruction)
00496
00497
00498 typedef sigc::signal<void, ModuleDescription const&> PostSourceConstruction;
00499 PostSourceConstruction postSourceConstructionSignal_;
00500 void watchPostSourceConstruction(PostSourceConstruction::slot_type const& iSlot) {
00501 PostSourceConstruction::slot_list_type sl = postSourceConstructionSignal_.slots();
00502 sl.push_front(iSlot);
00503 }
00504
00505 AR_WATCH_USING_METHOD_1(watchPostSourceConstruction)
00506
00507
00508 typedef sigc::signal<void> PreForkReleaseResources;
00509 PreForkReleaseResources preForkReleaseResourcesSignal_;
00510 void watchPreForkReleaseResources(PreForkReleaseResources::slot_type const& iSlot) {
00511 PreForkReleaseResources::slot_list_type sl = preForkReleaseResourcesSignal_.slots();
00512 sl.push_front(iSlot);
00513 }
00514 AR_WATCH_USING_METHOD_0(watchPreForkReleaseResources)
00515
00516
00517 typedef sigc::signal<void, unsigned int, unsigned int> PostForkReacquireResources;
00518 PostForkReacquireResources postForkReacquireResourcesSignal_;
00519 void watchPostForkReacquireResources(PostForkReacquireResources::slot_type const& iSlot) {
00520 PostForkReacquireResources::slot_list_type sl = postForkReacquireResourcesSignal_.slots();
00521 sl.push_front(iSlot);
00522 }
00523 AR_WATCH_USING_METHOD_2(watchPostForkReacquireResources)
00524
00525
00526
00527
00528 void connect(ActivityRegistry& iOther);
00529
00532 void connectToSubProcess(ActivityRegistry& iOther);
00533
00539 void copySlotsFrom(ActivityRegistry& iOther);
00540
00541 private:
00542
00543 void connectGlobals(ActivityRegistry& iOther);
00544
00545
00546 void connectLocals(ActivityRegistry& iOther);
00547 };
00548 }
00549 #undef AR_WATCH_USING_METHOD
00550 #endif