#include <cstdlib>
#include "AliHLTBlockDataCollection.h"
#include "AliHLTComponent.h"
#include "TString.h"
ClassImp(AliHLTBlockDataCollection)
AliHLTBlockDataCollection::AliHLTBlockDataCollection()
: TObject()
, AliHLTLogging()
, fFilterRules()
{
}
AliHLTBlockDataCollection::~AliHLTBlockDataCollection()
{
}
int AliHLTBlockDataCollection::Add(const AliHLTComponentBlockData& block)
{
fFilterRules.push_back(block);
return fFilterRules.size();
}
int AliHLTBlockDataCollection::ScanArgument( int argc, const char** argv )
{
int iResult=0;
TString argument="";
int bMissingParam=0;
AliHLTComponentBlockData rule;
AliHLTComponent::FillBlockData(rule);
int i=0;
for (; i<argc && iResult>=0; i++) {
argument=argv[i];
if (argument.IsNull()) continue;
if (argument.CompareTo("-datatype")==0) {
if ((bMissingParam=(i+2>=argc))) break;
if (!MatchExactly(rule.fDataType,kAliHLTAnyDataType)) {
fFilterRules.push_back(rule);
AliHLTComponent::FillBlockData(rule);
}
AliHLTComponent::SetDataType(rule.fDataType, argv[i+1], argv[i+2]);
i+=2;
} else if (argument.CompareTo("-origin")==0) {
if ((bMissingParam=(i+1>=argc))) break;
if (!MatchExactly(rule.fDataType,kAliHLTAnyDataType)) {
fFilterRules.push_back(rule);
AliHLTComponent::FillBlockData(rule);
}
AliHLTComponent::SetDataType(rule.fDataType, NULL, argv[i+1]);
i+=1;
} else if (argument.CompareTo("-typeid")==0) {
if ((bMissingParam=(i+1>=argc))) break;
if (!MatchExactly(rule.fDataType,kAliHLTAnyDataType)) {
fFilterRules.push_back(rule);
AliHLTComponent::FillBlockData(rule);
}
AliHLTComponent::SetDataType(rule.fDataType, argv[i+1], NULL);
i+=1;
} else if (argument.CompareTo("-dataspec")==0) {
if ((bMissingParam=(++i>=argc))) break;
if (rule.fSpecification!=kAliHLTVoidDataSpec) {
fFilterRules.push_back(rule);
AliHLTComponent::FillBlockData(rule);
}
TString parameter(argv[i]);
parameter.Remove(TString::kLeading, ' ');
char* pRemnant=NULL;
rule.fSpecification=strtoul(parameter.Data(), &pRemnant, 0);
if (pRemnant!=NULL && pRemnant[0]!=0) {
HLTError("invalid parameter/remnant (%s) for argument %s, number expected", pRemnant, argument.Data());
iResult=-EINVAL;
}
} else {
break;
}
}
if (bMissingParam) {
HLTError("missing parameter for argument %s", argument.Data());
iResult=-EPROTO;
}
if (iResult>=0) {
if (rule.fSpecification!=kAliHLTVoidDataSpec || !MatchExactly(rule.fDataType,kAliHLTAnyDataType)) {
fFilterRules.push_back(rule);
AliHLTComponent::FillBlockData(rule);
}
iResult=i;
}
return iResult;
}
int AliHLTBlockDataCollection::IsSelected(const AliHLTComponentBlockData& block)
{
AliHLTComponentBlockDataList::iterator desc=fFilterRules.begin();
if (desc==fFilterRules.end()) return 1;
do {
if (((*desc).fDataType==block.fDataType) &&
((*desc).fSpecification==block.fSpecification || (*desc).fSpecification==kAliHLTVoidDataSpec) &&
(!MatchExactly((*desc).fDataType,kAliHLTAnyDataType) || (*desc).fSpecification!=kAliHLTVoidDataSpec)) {
return 1;
}
} while (++desc!=fFilterRules.end());
return 0;
}
int AliHLTBlockDataCollection::IsEmpty()
{
if (fFilterRules.size()==0) return 1;
return 0;
}
AliHLTBlockDataCollection.cxx:1 AliHLTBlockDataCollection.cxx:2 AliHLTBlockDataCollection.cxx:3 AliHLTBlockDataCollection.cxx:4 AliHLTBlockDataCollection.cxx:5 AliHLTBlockDataCollection.cxx:6 AliHLTBlockDataCollection.cxx:7 AliHLTBlockDataCollection.cxx:8 AliHLTBlockDataCollection.cxx:9 AliHLTBlockDataCollection.cxx:10 AliHLTBlockDataCollection.cxx:11 AliHLTBlockDataCollection.cxx:12 AliHLTBlockDataCollection.cxx:13 AliHLTBlockDataCollection.cxx:14 AliHLTBlockDataCollection.cxx:15 AliHLTBlockDataCollection.cxx:16 AliHLTBlockDataCollection.cxx:17 AliHLTBlockDataCollection.cxx:18 AliHLTBlockDataCollection.cxx:19 AliHLTBlockDataCollection.cxx:20 AliHLTBlockDataCollection.cxx:21 AliHLTBlockDataCollection.cxx:22 AliHLTBlockDataCollection.cxx:23 AliHLTBlockDataCollection.cxx:24 AliHLTBlockDataCollection.cxx:25 AliHLTBlockDataCollection.cxx:26 AliHLTBlockDataCollection.cxx:27 AliHLTBlockDataCollection.cxx:28 AliHLTBlockDataCollection.cxx:29 AliHLTBlockDataCollection.cxx:30 AliHLTBlockDataCollection.cxx:31 AliHLTBlockDataCollection.cxx:32 AliHLTBlockDataCollection.cxx:33 AliHLTBlockDataCollection.cxx:34 AliHLTBlockDataCollection.cxx:35 AliHLTBlockDataCollection.cxx:36 AliHLTBlockDataCollection.cxx:37 AliHLTBlockDataCollection.cxx:38 AliHLTBlockDataCollection.cxx:39 AliHLTBlockDataCollection.cxx:40 AliHLTBlockDataCollection.cxx:41 AliHLTBlockDataCollection.cxx:42 AliHLTBlockDataCollection.cxx:43 AliHLTBlockDataCollection.cxx:44 AliHLTBlockDataCollection.cxx:45 AliHLTBlockDataCollection.cxx:46 AliHLTBlockDataCollection.cxx:47 AliHLTBlockDataCollection.cxx:48 AliHLTBlockDataCollection.cxx:49 AliHLTBlockDataCollection.cxx:50 AliHLTBlockDataCollection.cxx:51 AliHLTBlockDataCollection.cxx:52 AliHLTBlockDataCollection.cxx:53 AliHLTBlockDataCollection.cxx:54 AliHLTBlockDataCollection.cxx:55 AliHLTBlockDataCollection.cxx:56 AliHLTBlockDataCollection.cxx:57 AliHLTBlockDataCollection.cxx:58 AliHLTBlockDataCollection.cxx:59 AliHLTBlockDataCollection.cxx:60 AliHLTBlockDataCollection.cxx:61 AliHLTBlockDataCollection.cxx:62 AliHLTBlockDataCollection.cxx:63 AliHLTBlockDataCollection.cxx:64 AliHLTBlockDataCollection.cxx:65 AliHLTBlockDataCollection.cxx:66 AliHLTBlockDataCollection.cxx:67 AliHLTBlockDataCollection.cxx:68 AliHLTBlockDataCollection.cxx:69 AliHLTBlockDataCollection.cxx:70 AliHLTBlockDataCollection.cxx:71 AliHLTBlockDataCollection.cxx:72 AliHLTBlockDataCollection.cxx:73 AliHLTBlockDataCollection.cxx:74 AliHLTBlockDataCollection.cxx:75 AliHLTBlockDataCollection.cxx:76 AliHLTBlockDataCollection.cxx:77 AliHLTBlockDataCollection.cxx:78 AliHLTBlockDataCollection.cxx:79 AliHLTBlockDataCollection.cxx:80 AliHLTBlockDataCollection.cxx:81 AliHLTBlockDataCollection.cxx:82 AliHLTBlockDataCollection.cxx:83 AliHLTBlockDataCollection.cxx:84 AliHLTBlockDataCollection.cxx:85 AliHLTBlockDataCollection.cxx:86 AliHLTBlockDataCollection.cxx:87 AliHLTBlockDataCollection.cxx:88 AliHLTBlockDataCollection.cxx:89 AliHLTBlockDataCollection.cxx:90 AliHLTBlockDataCollection.cxx:91 AliHLTBlockDataCollection.cxx:92 AliHLTBlockDataCollection.cxx:93 AliHLTBlockDataCollection.cxx:94 AliHLTBlockDataCollection.cxx:95 AliHLTBlockDataCollection.cxx:96 AliHLTBlockDataCollection.cxx:97 AliHLTBlockDataCollection.cxx:98 AliHLTBlockDataCollection.cxx:99 AliHLTBlockDataCollection.cxx:100 AliHLTBlockDataCollection.cxx:101 AliHLTBlockDataCollection.cxx:102 AliHLTBlockDataCollection.cxx:103 AliHLTBlockDataCollection.cxx:104 AliHLTBlockDataCollection.cxx:105 AliHLTBlockDataCollection.cxx:106 AliHLTBlockDataCollection.cxx:107 AliHLTBlockDataCollection.cxx:108 AliHLTBlockDataCollection.cxx:109 AliHLTBlockDataCollection.cxx:110 AliHLTBlockDataCollection.cxx:111 AliHLTBlockDataCollection.cxx:112 AliHLTBlockDataCollection.cxx:113 AliHLTBlockDataCollection.cxx:114 AliHLTBlockDataCollection.cxx:115 AliHLTBlockDataCollection.cxx:116 AliHLTBlockDataCollection.cxx:117 AliHLTBlockDataCollection.cxx:118 AliHLTBlockDataCollection.cxx:119 AliHLTBlockDataCollection.cxx:120 AliHLTBlockDataCollection.cxx:121 AliHLTBlockDataCollection.cxx:122 AliHLTBlockDataCollection.cxx:123 AliHLTBlockDataCollection.cxx:124 AliHLTBlockDataCollection.cxx:125 AliHLTBlockDataCollection.cxx:126 AliHLTBlockDataCollection.cxx:127 AliHLTBlockDataCollection.cxx:128 AliHLTBlockDataCollection.cxx:129 AliHLTBlockDataCollection.cxx:130 AliHLTBlockDataCollection.cxx:131 AliHLTBlockDataCollection.cxx:132 AliHLTBlockDataCollection.cxx:133 AliHLTBlockDataCollection.cxx:134 AliHLTBlockDataCollection.cxx:135 AliHLTBlockDataCollection.cxx:136 AliHLTBlockDataCollection.cxx:137 AliHLTBlockDataCollection.cxx:138 AliHLTBlockDataCollection.cxx:139 AliHLTBlockDataCollection.cxx:140 AliHLTBlockDataCollection.cxx:141 AliHLTBlockDataCollection.cxx:142 AliHLTBlockDataCollection.cxx:143 AliHLTBlockDataCollection.cxx:144 AliHLTBlockDataCollection.cxx:145 AliHLTBlockDataCollection.cxx:146 AliHLTBlockDataCollection.cxx:147 AliHLTBlockDataCollection.cxx:148 AliHLTBlockDataCollection.cxx:149 AliHLTBlockDataCollection.cxx:150 AliHLTBlockDataCollection.cxx:151 AliHLTBlockDataCollection.cxx:152 AliHLTBlockDataCollection.cxx:153 AliHLTBlockDataCollection.cxx:154 AliHLTBlockDataCollection.cxx:155 AliHLTBlockDataCollection.cxx:156 AliHLTBlockDataCollection.cxx:157 AliHLTBlockDataCollection.cxx:158 AliHLTBlockDataCollection.cxx:159 AliHLTBlockDataCollection.cxx:160 AliHLTBlockDataCollection.cxx:161 AliHLTBlockDataCollection.cxx:162 AliHLTBlockDataCollection.cxx:163 AliHLTBlockDataCollection.cxx:164 AliHLTBlockDataCollection.cxx:165 AliHLTBlockDataCollection.cxx:166 AliHLTBlockDataCollection.cxx:167 AliHLTBlockDataCollection.cxx:168 AliHLTBlockDataCollection.cxx:169 AliHLTBlockDataCollection.cxx:170 AliHLTBlockDataCollection.cxx:171 AliHLTBlockDataCollection.cxx:172 AliHLTBlockDataCollection.cxx:173 AliHLTBlockDataCollection.cxx:174 AliHLTBlockDataCollection.cxx:175 AliHLTBlockDataCollection.cxx:176 AliHLTBlockDataCollection.cxx:177 AliHLTBlockDataCollection.cxx:178 AliHLTBlockDataCollection.cxx:179 AliHLTBlockDataCollection.cxx:180 AliHLTBlockDataCollection.cxx:181