source: Sophya/trunk/Poubelle/archTOI.old/toiflagger.cc@ 640

Last change on this file since 640 was 556, checked in by ansari, 26 years ago

portage cxx en cours

File size: 1.4 KB
Line 
1// toiflagger.cc
2// Eric Aubourg CEA/DAPNIA/SPP octobre 1999
3
4
5#include "toiflagger.h"
6#include "toimanager.h"
7#include "archexc.h"
8
9TOIFlagger::TOIFlagger() {
10}
11
12
13string TOIFlagger::getName() {
14 return("TOIFlagger 1.0");
15}
16
17bool TOIFlagger::canProduce(TOI const& toi) {
18 // 1. Already in cache ?
19 map<TOI, map<TOI, TOIProducer*> >::const_iterator j = neededTOIs.find(toi);
20 if (j != neededTOIs.end()) return true;
21
22 // 2. Should have flag
23 if (toi.options.find("flag") == toi.options.end()) return false;
24
25 // 3. Can get non flag
26 TOI toi2 = toi;
27 toi2.options.erase("flag");
28 TOIProducer* prod = TOIManager::findTOIProducer(toi2);
29 set<string> opts = prod->getAvailOptions(toi2);
30 if (opts.find("flag") != opts.end()) return false; // already handled
31
32 map<TOI, TOIProducer*> fullInputTOI;
33 fullInputTOI[toi2] = prod;
34 neededTOIs[toi] = fullInputTOI;
35 return true;
36}
37
38set<TOI> TOIFlagger::reqTOIFor(TOI const& toi) {
39 set<TOI> x;
40 if (!canProduce(toi)) return x;
41 x.insert((*neededTOIs[toi].begin()).first);
42 return x;
43}
44
45bool TOIFlagger::canGetValue(long, TOI const& ) {
46 return true;
47}
48
49bool TOIFlagger::canGetValueLater(long, TOI const& ) {
50 return false;
51}
52
53double TOIFlagger::getValue(long sampleNum, TOI const& toi) {
54 map<TOI, TOIProducer*> & inp = neededTOIs[toi];
55 TOIProducer* prod = (*inp.begin()).second;
56 TOI inTOI = (*inp.begin()).first;
57
58 return (prod->canGetValue(sampleNum, inTOI)) ? 1 : 0;
59}
60
61
Note: See TracBrowser for help on using the repository browser.