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 typedef sigc::signal<void> PostOpenFile;
00141 PostOpenFile postOpenFileSignal_;
00142 void watchPostOpenFile(PostOpenFile::slot_type const& iSlot) {
00143 PostOpenFile::slot_list_type sl = postOpenFileSignal_.slots();
00144 sl.push_front(iSlot);
00145 }
00146 AR_WATCH_USING_METHOD_0(watchPostOpenFile)
00147
00148
00149 typedef sigc::signal<void> PreCloseFile;
00150 PreCloseFile preCloseFileSignal_;
00151 void watchPreCloseFile(PreCloseFile::slot_type const& iSlot) {
00152 preCloseFileSignal_.connect(iSlot);
00153 }
00154 AR_WATCH_USING_METHOD_0(watchPreCloseFile)
00155
00156
00157 typedef sigc::signal<void> PostCloseFile;
00158 PostCloseFile postCloseFileSignal_;
00159 void watchPostCloseFile(PostCloseFile::slot_type const& iSlot) {
00160 PostCloseFile::slot_list_type sl = postCloseFileSignal_.slots();
00161 sl.push_front(iSlot);
00162 }
00163 AR_WATCH_USING_METHOD_0(watchPostCloseFile)
00164
00165 typedef sigc::signal<void, EventID const&, Timestamp const&> PreProcessEvent;
00167 PreProcessEvent preProcessEventSignal_;
00168 void watchPreProcessEvent(PreProcessEvent::slot_type const& iSlot) {
00169 preProcessEventSignal_.connect(iSlot);
00170 }
00171 AR_WATCH_USING_METHOD_2(watchPreProcessEvent)
00172
00173 typedef sigc::signal<void, Event const&, EventSetup const&> PostProcessEvent;
00175 PostProcessEvent postProcessEventSignal_;
00176 void watchPostProcessEvent(PostProcessEvent::slot_type const& iSlot) {
00177 PostProcessEvent::slot_list_type sl = postProcessEventSignal_.slots();
00178 sl.push_front(iSlot);
00179 }
00180 AR_WATCH_USING_METHOD_2(watchPostProcessEvent)
00181
00182 typedef sigc::signal<void, RunID const&, Timestamp const&> PreBeginRun;
00184 PreBeginRun preBeginRunSignal_;
00185 void watchPreBeginRun(PreBeginRun::slot_type const& iSlot) {
00186 preBeginRunSignal_.connect(iSlot);
00187 }
00188 AR_WATCH_USING_METHOD_2(watchPreBeginRun)
00189
00190 typedef sigc::signal<void, Run const&, EventSetup const&> PostBeginRun;
00192 PostBeginRun postBeginRunSignal_;
00193 void watchPostBeginRun(PostBeginRun::slot_type const& iSlot) {
00194 PostBeginRun::slot_list_type sl = postBeginRunSignal_.slots();
00195 sl.push_front(iSlot);
00196 }
00197 AR_WATCH_USING_METHOD_2(watchPostBeginRun)
00198
00199 typedef sigc::signal<void, RunID const&, Timestamp const&> PreEndRun;
00201 PreEndRun preEndRunSignal_;
00202 void watchPreEndRun(PreEndRun::slot_type const& iSlot) {
00203 preEndRunSignal_.connect(iSlot);
00204 }
00205 AR_WATCH_USING_METHOD_2(watchPreEndRun)
00206
00207 typedef sigc::signal<void, Run const&, EventSetup const&> PostEndRun;
00209 PostEndRun postEndRunSignal_;
00210 void watchPostEndRun(PostEndRun::slot_type const& iSlot) {
00211 PostEndRun::slot_list_type sl = postEndRunSignal_.slots();
00212 sl.push_front(iSlot);
00213 }
00214 AR_WATCH_USING_METHOD_2(watchPostEndRun)
00215
00216 typedef sigc::signal<void, LuminosityBlockID const&, Timestamp const&> PreBeginLumi;
00218 PreBeginLumi preBeginLumiSignal_;
00219 void watchPreBeginLumi(PreBeginLumi::slot_type const& iSlot) {
00220 preBeginLumiSignal_.connect(iSlot);
00221 }
00222 AR_WATCH_USING_METHOD_2(watchPreBeginLumi)
00223
00224 typedef sigc::signal<void, LuminosityBlock const&, EventSetup const&> PostBeginLumi;
00226 PostBeginLumi postBeginLumiSignal_;
00227 void watchPostBeginLumi(PostBeginLumi::slot_type const& iSlot) {
00228 PostBeginLumi::slot_list_type sl = postBeginLumiSignal_.slots();
00229 sl.push_front(iSlot);
00230 }
00231 AR_WATCH_USING_METHOD_2(watchPostBeginLumi)
00232
00233 typedef sigc::signal<void, LuminosityBlockID const&, Timestamp const&> PreEndLumi;
00235 PreEndLumi preEndLumiSignal_;
00236 void watchPreEndLumi(PreEndLumi::slot_type const& iSlot) {
00237 preEndLumiSignal_.connect(iSlot);
00238 }
00239 AR_WATCH_USING_METHOD_2(watchPreEndLumi)
00240
00241 typedef sigc::signal<void, LuminosityBlock const&, EventSetup const&> PostEndLumi;
00243 PostEndLumi postEndLumiSignal_;
00244 void watchPostEndLumi(PostEndLumi::slot_type const& iSlot) {
00245 PostEndLumi::slot_list_type sl = postEndLumiSignal_.slots();
00246 sl.push_front(iSlot);
00247 }
00248 AR_WATCH_USING_METHOD_2(watchPostEndLumi)
00249
00250
00251 typedef sigc::signal<void, std::string const&> PreProcessPath;
00252 PreProcessPath preProcessPathSignal_;
00253 void watchPreProcessPath(PreProcessPath::slot_type const& iSlot) {
00254 preProcessPathSignal_.connect(iSlot);
00255 }
00256 AR_WATCH_USING_METHOD_1(watchPreProcessPath)
00257
00258
00259 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostProcessPath;
00260 PostProcessPath postProcessPathSignal_;
00261 void watchPostProcessPath(PostProcessPath::slot_type const& iSlot) {
00262 PostProcessPath::slot_list_type sl = postProcessPathSignal_.slots();
00263 sl.push_front(iSlot);
00264 }
00265 AR_WATCH_USING_METHOD_2(watchPostProcessPath)
00266
00267
00268 typedef sigc::signal<void, std::string const&> PrePathBeginRun;
00269 PrePathBeginRun prePathBeginRunSignal_;
00270 void watchPrePathBeginRun(PrePathBeginRun::slot_type const& iSlot) {
00271 prePathBeginRunSignal_.connect(iSlot);
00272 }
00273 AR_WATCH_USING_METHOD_1(watchPrePathBeginRun)
00274
00275
00276 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostPathBeginRun;
00277 PostPathBeginRun postPathBeginRunSignal_;
00278 void watchPostPathBeginRun(PostPathBeginRun::slot_type const& iSlot) {
00279 PostPathBeginRun::slot_list_type sl = postPathBeginRunSignal_.slots();
00280 sl.push_front(iSlot);
00281 }
00282 AR_WATCH_USING_METHOD_2(watchPostPathBeginRun)
00283
00284
00285 typedef sigc::signal<void, std::string const&> PrePathEndRun;
00286 PrePathEndRun prePathEndRunSignal_;
00287 void watchPrePathEndRun(PrePathEndRun::slot_type const& iSlot) {
00288 prePathEndRunSignal_.connect(iSlot);
00289 }
00290 AR_WATCH_USING_METHOD_1(watchPrePathEndRun)
00291
00292
00293 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostPathEndRun;
00294 PostPathEndRun postPathEndRunSignal_;
00295 void watchPostPathEndRun(PostPathEndRun::slot_type const& iSlot) {
00296 PostPathEndRun::slot_list_type sl = postPathEndRunSignal_.slots();
00297 sl.push_front(iSlot);
00298 }
00299 AR_WATCH_USING_METHOD_2(watchPostPathEndRun)
00300
00301
00302 typedef sigc::signal<void, std::string const&> PrePathBeginLumi;
00303 PrePathBeginLumi prePathBeginLumiSignal_;
00304 void watchPrePathBeginLumi(PrePathBeginLumi::slot_type const& iSlot) {
00305 prePathBeginLumiSignal_.connect(iSlot);
00306 }
00307 AR_WATCH_USING_METHOD_1(watchPrePathBeginLumi)
00308
00309
00310 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostPathBeginLumi;
00311 PostPathBeginLumi postPathBeginLumiSignal_;
00312 void watchPostPathBeginLumi(PostPathBeginLumi::slot_type const& iSlot) {
00313 PostPathBeginLumi::slot_list_type sl = postPathBeginLumiSignal_.slots();
00314 sl.push_front(iSlot);
00315 }
00316 AR_WATCH_USING_METHOD_2(watchPostPathBeginLumi)
00317
00318
00319 typedef sigc::signal<void, std::string const&> PrePathEndLumi;
00320 PrePathEndLumi prePathEndLumiSignal_;
00321 void watchPrePathEndLumi(PrePathEndLumi::slot_type const& iSlot) {
00322 prePathEndLumiSignal_.connect(iSlot);
00323 }
00324 AR_WATCH_USING_METHOD_1(watchPrePathEndLumi)
00325
00326
00327 typedef sigc::signal<void, std::string const&, HLTPathStatus const&> PostPathEndLumi;
00328 PostPathEndLumi postPathEndLumiSignal_;
00329 void watchPostPathEndLumi(PostPathEndLumi::slot_type const& iSlot) {
00330 PostPathEndLumi::slot_list_type sl = postPathEndLumiSignal_.slots();
00331 sl.push_front(iSlot);
00332 }
00333 AR_WATCH_USING_METHOD_2(watchPostPathEndLumi)
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348 typedef sigc::signal<void, ModuleDescription const&> PreModuleConstruction;
00349 PreModuleConstruction preModuleConstructionSignal_;
00350 void watchPreModuleConstruction(PreModuleConstruction::slot_type const& iSlot) {
00351 preModuleConstructionSignal_.connect(iSlot);
00352 }
00353
00354 AR_WATCH_USING_METHOD_1(watchPreModuleConstruction)
00355
00356
00357 typedef sigc::signal<void, ModuleDescription const&> PostModuleConstruction;
00358 PostModuleConstruction postModuleConstructionSignal_;
00359 void watchPostModuleConstruction(PostModuleConstruction::slot_type const& iSlot) {
00360 PostModuleConstruction::slot_list_type sl = postModuleConstructionSignal_.slots();
00361 sl.push_front(iSlot);
00362 }
00363
00364 AR_WATCH_USING_METHOD_1(watchPostModuleConstruction)
00365
00366
00367 typedef sigc::signal<void, ModuleDescription const&> PreModuleBeginJob;
00368 PreModuleBeginJob preModuleBeginJobSignal_;
00369 void watchPreModuleBeginJob(PreModuleBeginJob::slot_type const& iSlot) {
00370 preModuleBeginJobSignal_.connect(iSlot);
00371 }
00372 AR_WATCH_USING_METHOD_1(watchPreModuleBeginJob)
00373
00374
00375 typedef sigc::signal<void, ModuleDescription const&> PostModuleBeginJob;
00376 PostModuleBeginJob postModuleBeginJobSignal_;
00377 void watchPostModuleBeginJob(PostModuleBeginJob::slot_type const& iSlot) {
00378 PostModuleBeginJob::slot_list_type sl = postModuleBeginJobSignal_.slots();
00379 sl.push_front(iSlot);
00380 }
00381 AR_WATCH_USING_METHOD_1(watchPostModuleBeginJob)
00382
00383
00384 typedef sigc::signal<void, ModuleDescription const&> PreModuleEndJob;
00385 PreModuleEndJob preModuleEndJobSignal_;
00386 void watchPreModuleEndJob(PreModuleEndJob::slot_type const& iSlot) {
00387 preModuleEndJobSignal_.connect(iSlot);
00388 }
00389 AR_WATCH_USING_METHOD_1(watchPreModuleEndJob)
00390
00391
00392 typedef sigc::signal<void, ModuleDescription const&> PostModuleEndJob;
00393 PostModuleEndJob postModuleEndJobSignal_;
00394 void watchPostModuleEndJob(PostModuleEndJob::slot_type const& iSlot) {
00395 PostModuleEndJob::slot_list_type sl = postModuleEndJobSignal_.slots();
00396 sl.push_front(iSlot);
00397 }
00398 AR_WATCH_USING_METHOD_1(watchPostModuleEndJob)
00399
00400
00401 typedef sigc::signal<void, ModuleDescription const&> PreModule;
00402 PreModule preModuleSignal_;
00403 void watchPreModule(PreModule::slot_type const& iSlot) {
00404 preModuleSignal_.connect(iSlot);
00405 }
00406 AR_WATCH_USING_METHOD_1(watchPreModule)
00407
00408
00409 typedef sigc::signal<void, ModuleDescription const&> PostModule;
00410 PostModule postModuleSignal_;
00411 void watchPostModule(PostModule::slot_type const& iSlot) {
00412 PostModule::slot_list_type sl = postModuleSignal_.slots();
00413 sl.push_front(iSlot);
00414 }
00415 AR_WATCH_USING_METHOD_1(watchPostModule)
00416
00417
00418 typedef sigc::signal<void, ModuleDescription const&> PreModuleBeginRun;
00419 PreModuleBeginRun preModuleBeginRunSignal_;
00420 void watchPreModuleBeginRun(PreModuleBeginRun::slot_type const& iSlot) {
00421 preModuleBeginRunSignal_.connect(iSlot);
00422 }
00423 AR_WATCH_USING_METHOD_1(watchPreModuleBeginRun)
00424
00425
00426 typedef sigc::signal<void, ModuleDescription const&> PostModuleBeginRun;
00427 PostModuleBeginRun postModuleBeginRunSignal_;
00428 void watchPostModuleBeginRun(PostModuleBeginRun::slot_type const& iSlot) {
00429 PostModuleBeginRun::slot_list_type sl = postModuleBeginRunSignal_.slots();
00430 sl.push_front(iSlot);
00431 }
00432 AR_WATCH_USING_METHOD_1(watchPostModuleBeginRun)
00433
00434
00435 typedef sigc::signal<void, ModuleDescription const&> PreModuleEndRun;
00436 PreModuleEndRun preModuleEndRunSignal_;
00437 void watchPreModuleEndRun(PreModuleEndRun::slot_type const& iSlot) {
00438 preModuleEndRunSignal_.connect(iSlot);
00439 }
00440 AR_WATCH_USING_METHOD_1(watchPreModuleEndRun)
00441
00442
00443 typedef sigc::signal<void, ModuleDescription const&> PostModuleEndRun;
00444 PostModuleEndRun postModuleEndRunSignal_;
00445 void watchPostModuleEndRun(PostModuleEndRun::slot_type const& iSlot) {
00446 PostModuleEndRun::slot_list_type sl = postModuleEndRunSignal_.slots();
00447 sl.push_front(iSlot);
00448 }
00449 AR_WATCH_USING_METHOD_1(watchPostModuleEndRun)
00450
00451
00452 typedef sigc::signal<void, ModuleDescription const&> PreModuleBeginLumi;
00453 PreModuleBeginLumi preModuleBeginLumiSignal_;
00454 void watchPreModuleBeginLumi(PreModuleBeginLumi::slot_type const& iSlot) {
00455 preModuleBeginLumiSignal_.connect(iSlot);
00456 }
00457 AR_WATCH_USING_METHOD_1(watchPreModuleBeginLumi)
00458
00459
00460 typedef sigc::signal<void, ModuleDescription const&> PostModuleBeginLumi;
00461 PostModuleBeginLumi postModuleBeginLumiSignal_;
00462 void watchPostModuleBeginLumi(PostModuleBeginLumi::slot_type const& iSlot) {
00463 PostModuleBeginLumi::slot_list_type sl = postModuleBeginLumiSignal_.slots();
00464 sl.push_front(iSlot);
00465 }
00466 AR_WATCH_USING_METHOD_1(watchPostModuleBeginLumi)
00467
00468
00469 typedef sigc::signal<void, ModuleDescription const&> PreModuleEndLumi;
00470 PreModuleEndLumi preModuleEndLumiSignal_;
00471 void watchPreModuleEndLumi(PreModuleEndLumi::slot_type const& iSlot) {
00472 preModuleEndLumiSignal_.connect(iSlot);
00473 }
00474 AR_WATCH_USING_METHOD_1(watchPreModuleEndLumi)
00475
00476
00477 typedef sigc::signal<void, ModuleDescription const&> PostModuleEndLumi;
00478 PostModuleEndLumi postModuleEndLumiSignal_;
00479 void watchPostModuleEndLumi(PostModuleEndLumi::slot_type const& iSlot) {
00480 PostModuleEndLumi::slot_list_type sl = postModuleEndLumiSignal_.slots();
00481 sl.push_front(iSlot);
00482 }
00483 AR_WATCH_USING_METHOD_1(watchPostModuleEndLumi)
00484
00485
00486 typedef sigc::signal<void, ModuleDescription const&> PreSourceConstruction;
00487 PreSourceConstruction preSourceConstructionSignal_;
00488 void watchPreSourceConstruction(PreSourceConstruction::slot_type const& iSlot) {
00489 preSourceConstructionSignal_.connect(iSlot);
00490 }
00491
00492 AR_WATCH_USING_METHOD_1(watchPreSourceConstruction)
00493
00494
00495 typedef sigc::signal<void, ModuleDescription const&> PostSourceConstruction;
00496 PostSourceConstruction postSourceConstructionSignal_;
00497 void watchPostSourceConstruction(PostSourceConstruction::slot_type const& iSlot) {
00498 PostSourceConstruction::slot_list_type sl = postSourceConstructionSignal_.slots();
00499 sl.push_front(iSlot);
00500 }
00501
00502 AR_WATCH_USING_METHOD_1(watchPostSourceConstruction)
00503
00504
00505 typedef sigc::signal<void> PreForkReleaseResources;
00506 PreForkReleaseResources preForkReleaseResourcesSignal_;
00507 void watchPreForkReleaseResources(PreForkReleaseResources::slot_type const& iSlot) {
00508 PreForkReleaseResources::slot_list_type sl = preForkReleaseResourcesSignal_.slots();
00509 sl.push_front(iSlot);
00510 }
00511 AR_WATCH_USING_METHOD_0(watchPreForkReleaseResources)
00512
00513
00514 typedef sigc::signal<void, unsigned int, unsigned int> PostForkReacquireResources;
00515 PostForkReacquireResources postForkReacquireResourcesSignal_;
00516 void watchPostForkReacquireResources(PostForkReacquireResources::slot_type const& iSlot) {
00517 PostForkReacquireResources::slot_list_type sl = postForkReacquireResourcesSignal_.slots();
00518 sl.push_front(iSlot);
00519 }
00520 AR_WATCH_USING_METHOD_2(watchPostForkReacquireResources)
00521
00522
00523
00524
00525 void connect(ActivityRegistry& iOther);
00526
00529 void connectToSubProcess(ActivityRegistry& iOther);
00530
00536 void copySlotsFrom(ActivityRegistry& iOther);
00537
00538 private:
00539
00540 void connectGlobals(ActivityRegistry& iOther);
00541
00542
00543 void connectLocals(ActivityRegistry& iOther);
00544 };
00545 }
00546 #undef AR_WATCH_USING_METHOD
00547 #endif