]> granicus.if.org Git - libmatroska/commitdiff
algorithm conversions
authorMoritz Bunkus <moritz@bunkus.org>
Mon, 22 Jun 2020 08:45:59 +0000 (10:45 +0200)
committerMoritz Bunkus <moritz@bunkus.org>
Mon, 22 Jun 2020 08:48:00 +0000 (10:48 +0200)
src/KaxCues.cpp
src/KaxSeekHead.cpp

index 0fd1e54ad91690366960918ab14f0b36bedd386d..2fc9885076ec4110f992e2794ec3e398776b98a5 100644 (file)
@@ -67,11 +67,11 @@ bool KaxCues::AddBlockGroup(const KaxBlockGroup & BlockRef)
 bool KaxCues::AddBlockBlob(const KaxBlockBlob & BlockReference)
 {
   // Do not add the element if it's already present.
-  std::vector<const KaxBlockBlob *>::iterator ListIdx;
-
-  for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ++ListIdx)
-    if (*ListIdx == &BlockReference)
-      return true;
+  bool present = std::any_of(myTempReferences.begin(), myTempReferences.end(),
+    [&](const KaxBlockBlob *myTempReference) { return myTempReference == &BlockReference; });
+  if (present) {
+    return true;
+  }
 
   myTempReferences.push_back(&BlockReference);
   return true;
@@ -80,34 +80,31 @@ bool KaxCues::AddBlockBlob(const KaxBlockBlob & BlockReference)
 void KaxCues::PositionSet(const KaxBlockBlob & BlockReference)
 {
   // look for the element in the temporary references
-  std::vector<const KaxBlockBlob *>::iterator ListIdx;
-
-  for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ++ListIdx) {
-    if (*ListIdx == &BlockReference) {
-      // found, now add the element to the entry list
-      auto & NewPoint = AddNewChild<KaxCuePoint>(*this);
-      NewPoint.PositionSet(BlockReference, GlobalTimecodeScale());
-      myTempReferences.erase(ListIdx);
-      break;
-    }
+  auto it = std::find_if(myTempReferences.begin(), myTempReferences.end(),
+    [&](const KaxBlockBlob *myTempReference){ return myTempReference == &BlockReference; });
+
+  if (it != myTempReferences.end()) {
+    // found, now add the element to the entry list
+    auto & NewPoint = AddNewChild<KaxCuePoint>(*this);
+    NewPoint.PositionSet(BlockReference, GlobalTimecodeScale());
+    myTempReferences.erase(it);
   }
 }
 
 void KaxCues::PositionSet(const KaxBlockGroup & BlockRef)
 {
   // look for the element in the temporary references
-  std::vector<const KaxBlockBlob *>::iterator ListIdx;
-
-  for (ListIdx = myTempReferences.begin(); ListIdx != myTempReferences.end(); ++ListIdx) {
-    const KaxInternalBlock &refTmp = **ListIdx;
-    if (refTmp.GlobalTimecode() == BlockRef.GlobalTimecode() &&
-        refTmp.TrackNum() == BlockRef.TrackNumber()) {
-      // found, now add the element to the entry list
-      auto & NewPoint = AddNewChild<KaxCuePoint>(*this);
-      NewPoint.PositionSet(**ListIdx, GlobalTimecodeScale());
-      myTempReferences.erase(ListIdx);
-      break;
-    }
+  auto it = std::find_if(myTempReferences.begin(), myTempReferences.end(),
+    [&](const KaxBlockBlob *myTempReference)
+      { const KaxInternalBlock &refTmp = *myTempReference;
+        return refTmp.GlobalTimecode() == BlockRef.GlobalTimecode()
+            && refTmp.TrackNum() == BlockRef.TrackNumber(); });
+
+  if(it != myTempReferences.end()) {
+    // found, now add the element to the entry list
+    auto & NewPoint = AddNewChild<KaxCuePoint>(*this);
+    NewPoint.PositionSet(**it, GlobalTimecodeScale());
+    myTempReferences.erase(it);
   }
 }
 
index f1ed42d11be9769eb3d0a58ef725ff6787d6ecee..6372fe34a43ee7c3e36f81fc15e3ceaea9b8d951 100644 (file)
@@ -68,14 +68,13 @@ KaxSeek * KaxSeekHead::FindFirstOf(const EbmlCallbacks & Callbacks) const
   while (aElt != nullptr) {
     KaxSeekID * aId = nullptr;
     EBML_MASTER_ITERATOR Itr;
-    for (Itr = aElt->begin(); Itr != aElt->end(); ++Itr) {
-      if (EbmlId(*(*Itr)) == EBML_ID(KaxSeekID)) {
-        aId = static_cast<KaxSeekID*>(*Itr);
-        EbmlId aEbmlId(aId->GetBuffer(), aId->GetSize());
-        if (aEbmlId == EBML_INFO_ID(Callbacks)) {
-          return aElt;
-        }
-        break;
+    auto it = std::find_if(aElt->begin(), aElt->end(), [&](EbmlElement *Elt)
+      { return (EbmlId(*Elt) == EBML_ID(KaxSeekID)); });
+    if (it != aElt->end()) {
+      aId = static_cast<KaxSeekID*>(*it);
+      EbmlId aEbmlId(aId->GetBuffer(), aId->GetSize());
+      if (aEbmlId == EBML_INFO_ID(Callbacks)) {
+        return aElt;
       }
     }
     aElt = static_cast<KaxSeek *>(FindNextElt(*aElt));