more bugfixes on data type operator semantics: earlier workarounds have been cleaned now
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 31 Jan 2008 21:16:58 +0000 (21:16 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 31 Jan 2008 21:16:58 +0000 (21:16 +0000)
HLT/BASE/AliHLTComponent.cxx
HLT/BASE/AliHLTDataBuffer.cxx
HLT/BASE/AliHLTOUT.cxx
HLT/BASE/util/AliHLTBlockFilterComponent.cxx

index b3c7ff459ba63c85a2654247c96fb475728457bf..0277c343bc333405217f0b83839c74f127da6559 100644 (file)
@@ -409,8 +409,7 @@ int AliHLTComponent::FindMatchingDataTypes(AliHLTComponent* pConsumer, AliHLTCom
       AliHLTComponentDataTypeList::iterator otype=otypes.begin();
       while (otype!=otypes.end() && (*itype)!=(*otype)) otype++;
       //if (otype!=otypes.end()) PrintDataTypeContent(*otype, "publisher \'%s\'");
-      if (otype!=otypes.end() ||
-         (*itype)==kAliHLTAnyDataType) {
+      if (otype!=otypes.end()) {
        if (tgtList) tgtList->push_back(*itype);
        iResult++;
       }
@@ -597,11 +596,7 @@ int AliHLTComponent::FindInputBlock(const AliHLTComponentDataType& dt, int start
        AliHLTUInt32_t firstWord=*((AliHLTUInt32_t*)fpInputBlocks[idx].fPtr);
        if (firstWord!=fpInputBlocks[idx].fSize-sizeof(AliHLTUInt32_t)) continue;
       }
-      if (dt == kAliHLTAnyDataType || fpInputBlocks[idx].fDataType == dt ||
-         (memcmp(dt.fID, kAliHLTAnyDataTypeID, kAliHLTComponentDataTypefIDsize)==0 &&
-          memcmp(dt.fOrigin, fpInputBlocks[idx].fDataType.fOrigin, kAliHLTComponentDataTypefOriginSize)==0) ||
-         (memcmp(dt.fID, fpInputBlocks[idx].fDataType.fID, kAliHLTComponentDataTypefIDsize)==0) &&
-          memcmp(dt.fOrigin, kAliHLTDataOriginAny, kAliHLTComponentDataTypefOriginSize)==0) {
+      if (dt==fpInputBlocks[idx].fDataType) {
        iResult=idx;
       }
     }
index 5825dd55fd46c5b8b28a0ba359559728014fe63a..1f2fe78140b49eb47fd9dc30655be934ec00d5d8 100644 (file)
@@ -154,8 +154,7 @@ int AliHLTDataBuffer::FindMatchingDataSegments(const AliHLTComponent* pConsumer,
     while (segment!=fSegments.end()) {
       AliHLTComponentDataTypeList::iterator type=dtlist.begin();
       while (type!=dtlist.end()) {
-       if ((*segment).fDataType==(*type) ||
-           (*type)==kAliHLTAnyDataType) {
+       if ((*segment).fDataType==(*type)) {
          tgtList.push_back(*segment);
          iResult++;
          break;
index 1962ebafff4b94e992d0a724fb185a7ae4f01019..d84707cce2783927c23bbd1163ae9cfd08053476 100644 (file)
@@ -107,7 +107,7 @@ int AliHLTOUT::FindAndSelectDataBlock()
   if (CheckStatusFlag(kLocked)) return -EPERM;
   int iResult=-ENOENT;
   while (fCurrent!=fBlockDescList.end() && iResult==-ENOENT) {
-    if ((fSearchDataType==kAliHLTAnyDataType || (*fCurrent)==fSearchDataType) &&
+    if ((*fCurrent)==fSearchDataType &&
        fSearchSpecification==kAliHLTVoidDataSpec || (*fCurrent)==fSearchSpecification &&
        1/*fSearchHandlerType==AliHLTModuleAgent::kUnknownOutput*/) {
       iResult=0;
index 1366fab7a626777cf4db3469d5f9b08904f32f69..f88cc931b6f8b376e008e801d1223dce1fccd8c5 100644 (file)
@@ -105,7 +105,7 @@ int AliHLTBlockFilterComponent::DoInit( int argc, const char** argv )
     if (argument.CompareTo("-datatype")==0) {
       if ((bMissingParam=(i+2>=argc))) break;
 
-      if (rule.fDataType!=kAliHLTAnyDataType) {
+      if (!MatchExactly(rule.fDataType,kAliHLTAnyDataType)) {
        // the data type has already been set, add to list
        // and reset
        fFilterRules.push_back(rule);
@@ -140,7 +140,7 @@ int AliHLTBlockFilterComponent::DoInit( int argc, const char** argv )
       break;
     }
   }
-  if (iResult>=0 && (rule.fSpecification!=kAliHLTVoidDataSpec || rule.fDataType!=kAliHLTAnyDataType)) {
+  if (iResult>=0 && (rule.fSpecification!=kAliHLTVoidDataSpec || !MatchExactly(rule.fDataType,kAliHLTAnyDataType))) {
     // add the pending rule
     fFilterRules.push_back(rule);
     FillBlockData(rule);
@@ -202,9 +202,9 @@ int AliHLTBlockFilterComponent::IsSelected(const AliHLTComponentBlockData& block
     // 2. data spec match or filter data wpec not set
     // 3. either filter data type or spec is set
     //HLTDebug("check rule : %s spec %#x", DataType2Text((*desc).fDataType, 2).c_str(), block.fSpecification);
-    if (((*desc).fDataType==block.fDataType || (*desc).fDataType==kAliHLTAnyDataType) &&
+    if (((*desc).fDataType==block.fDataType) &&
        ((*desc).fSpecification==block.fSpecification || (*desc).fSpecification==kAliHLTVoidDataSpec) &&
-       ((*desc).fDataType!=kAliHLTAnyDataType || (*desc).fSpecification!=kAliHLTVoidDataSpec)) {
+       (!MatchExactly((*desc).fDataType,kAliHLTAnyDataType) || (*desc).fSpecification!=kAliHLTVoidDataSpec)) {
       return 1;
     }
   } while (++desc!=fFilterRules.end());