]> granicus.if.org Git - libmatroska/commitdiff
v1: favor the use of iterators rather than direct access in the tables (nicer for...
authorSteve Lhomme <slhomme@matroska.org>
Mon, 19 Apr 2010 08:32:50 +0000 (08:32 +0000)
committerSteve Lhomme <slhomme@matroska.org>
Mon, 19 Apr 2010 08:32:50 +0000 (08:32 +0000)
git-svn-id: https://matroska.svn.sourceforge.net/svnroot/matroska/trunk/libmatroska@131 a6f86f6d-0131-4f8e-9e7b-e335508773d5

src/KaxCluster.cpp
src/KaxCues.cpp
src/KaxSeekHead.cpp

index 2f1208a7c2312c5cad81ead642be8bc482b0b12b..d6e485f566192a27b16c50337e3f68561b84b05a 100644 (file)
@@ -168,7 +168,8 @@ bool KaxCluster::AddFrame(const KaxTrackEntry & track, uint64 timecode, DataBuff
 filepos_t KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bSaveDefault)\r
 {\r
        filepos_t Result = 0;\r
-       size_t TrkIndex, Index;\r
+    size_t Index;\r
+    EBML_MASTER_ITERATOR TrkItr, Itr;\r
 \r
        // update the Timecode of the Cluster before writing\r
        KaxClusterTimecode * Timecode = static_cast<KaxClusterTimecode *>(this->FindElt(EBML_INFO(KaxClusterTimecode)));\r
@@ -182,20 +183,22 @@ filepos_t KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bS
                if (bSilentTracksUsed)\r
                {\r
                        KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));\r
-                       for (TrkIndex = 0; TrkIndex < MyTracks.ListSize(); TrkIndex++) {\r
-                               if (EbmlId(*MyTracks[TrkIndex]) == EBML_ID(KaxTrackEntry))\r
+               for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr)\r
+            {\r
+                               if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry))\r
                                {\r
-                                       KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(MyTracks[TrkIndex]);\r
+                                       KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr);\r
                                        uint32 tracknum = entry.TrackNumber();\r
-                                       for (Index = 0; Index < ListSize(); Index++) {\r
-                                               if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {\r
-                                                       KaxBlockGroup & group = *static_cast<KaxBlockGroup *>((*this)[Index]);\r
+                       for (Itr = begin(); Itr != end(); ++Itr)\r
+                    {\r
+                                               if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {\r
+                                                       KaxBlockGroup & group = *static_cast<KaxBlockGroup *>(*Itr);\r
                                                        if (group.TrackNumber() == tracknum)\r
                                                                break; // this track is used\r
                                                }\r
                                        }\r
                                        // the track wasn't found in this cluster\r
-                                       if (Index == ListSize())\r
+                                       if (Itr == end())\r
                                        {\r
                                                KaxClusterSilentTracks * SilentTracks = static_cast<KaxClusterSilentTracks *>(this->FindFirstElt(EBML_INFO(KaxClusterSilentTracks)));\r
                                                assert(SilentTracks != NULL); // the flag bSilentTracksUsed should be set when creating the Cluster\r
@@ -209,9 +212,10 @@ filepos_t KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bS
                Result = EbmlMaster::Render(output, bSaveDefault);\r
                // For all Blocks add their position on the CueEntry\r
                \r
-               for (Index = 0; Index < ListSize(); Index++) {\r
-                       if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {\r
-                               CueToUpdate.PositionSet(*static_cast<const KaxBlockGroup *>((*this)[Index]));\r
+        for (Itr = begin(); Itr != end(); ++Itr)\r
+        {\r
+                       if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {\r
+                               CueToUpdate.PositionSet(*static_cast<const KaxBlockGroup *>(*Itr));\r
                        }\r
                }\r
        } else {\r
@@ -231,10 +235,11 @@ filepos_t KaxCluster::Render(IOCallback & output, KaxCues & CueToUpdate, bool bS
                if (bSilentTracksUsed)\r
                {\r
                        KaxTracks & MyTracks = *static_cast<KaxTracks *>(ParentSegment->FindElt(EBML_INFO(KaxTracks)));\r
-                       for (TrkIndex = 0; TrkIndex < MyTracks.ListSize(); TrkIndex++) {\r
-                               if (EbmlId(*MyTracks[TrkIndex]) == EBML_ID(KaxTrackEntry))\r
+               for (TrkItr = MyTracks.begin(); TrkItr != MyTracks.end(); ++TrkItr)\r
+            {\r
+                               if (EbmlId(*(*TrkItr)) == EBML_ID(KaxTrackEntry))\r
                                {\r
-                                       KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(MyTracks[TrkIndex]);\r
+                                       KaxTrackEntry & entry = *static_cast<KaxTrackEntry *>(*TrkItr);\r
                                        uint32 tracknum = entry.TrackNumber();\r
                                        for (Index = 0; Index<Blobs.size(); Index++) {\r
                                                if (((KaxInternalBlock&)*Blobs[Index]).TrackNum() == tracknum)\r
@@ -311,11 +316,11 @@ KaxBlockGroup & KaxCluster::GetNewBlock()
 \r
 void KaxCluster::ReleaseFrames()\r
 {\r
-       size_t Index;\r
-       \r
-       for (Index = 0; Index < ListSize(); Index++) {\r
-               if (EbmlId(*(*this)[Index]) == EBML_ID(KaxBlockGroup)) {\r
-                       static_cast<KaxBlockGroup*>((*this)[Index])->ReleaseFrames();\r
+    EBML_MASTER_ITERATOR Itr;\r
+    for (Itr = begin(); Itr != end(); ++Itr)\r
+    {\r
+               if (EbmlId(*(*Itr)) == EBML_ID(KaxBlockGroup)) {\r
+                       static_cast<KaxBlockGroup*>(*Itr)->ReleaseFrames();\r
                }\r
        }\r
 }\r
index 7fdf9bdb81b55ef27c5eead12b1cfb007d2aa464..dc588b67303b4010a7d23794ba60ffdf40723891 100644 (file)
@@ -125,10 +125,11 @@ const KaxCuePoint * KaxCues::GetTimecodePoint(uint64 aTimecode) const
        const KaxCuePoint * aPointNext = NULL;\r
        uint64 aNextTime = EBML_PRETTYLONGINT(0xFFFFFFFFFFFF);\r
 \r
-       for (unsigned int i=0; i<ListSize(); i++)\r
-       {\r
-               if (EbmlId(*(*this)[i]) == EBML_ID(KaxCuePoint)) {\r
-                       const KaxCuePoint *tmp = static_cast<const KaxCuePoint *>((*this)[i]);\r
+    EBML_MASTER_ITERATOR Itr;\r
+       for (Itr = begin(); Itr != end(); ++Itr)\r
+    {\r
+               if (EbmlId(*(*Itr)) == EBML_ID(KaxCuePoint)) {\r
+                       const KaxCuePoint *tmp = static_cast<const KaxCuePoint *>(*Itr);\r
                        // check the tile\r
                        const KaxCueTime *aTime = static_cast<const KaxCueTime *>(tmp->FindFirstElt(EBML_INFO(KaxCueTime)));\r
                        if (aTime != NULL)\r
index cbc459e06e0defdfe251a567da521abe67e5c7a2..64cf02a90b4ed655d7491adc26c82ac9552c99de 100644 (file)
@@ -82,9 +82,11 @@ KaxSeek * KaxSeekHead::FindFirstOf(const EbmlCallbacks & Callbacks) const
        while (aElt != NULL)\r
        {\r
                KaxSeekID * aId = NULL;\r
-               for (unsigned int i = 0; i<aElt->ListSize(); i++) {\r
-                       if (EbmlId(*(*aElt)[i]) == EBML_ID(KaxSeekID)) {\r
-                               aId = static_cast<KaxSeekID*>((*aElt)[i]);\r
+        EBML_MASTER_ITERATOR Itr;\r
+               for (Itr = aElt->begin(); Itr != aElt->end(); ++Itr)\r
+        {\r
+                       if (EbmlId(*(*Itr)) == EBML_ID(KaxSeekID)) {\r
+                               aId = static_cast<KaxSeekID*>(*Itr);\r
                                EbmlId aEbmlId(aId->GetBuffer(), aId->GetSize());\r
                                if (aEbmlId == EBML_INFO_ID(Callbacks))\r
                                {\r
@@ -101,23 +103,24 @@ KaxSeek * KaxSeekHead::FindFirstOf(const EbmlCallbacks & Callbacks) const
 \r
 KaxSeek * KaxSeekHead::FindNextOf(const KaxSeek &aPrev) const\r
 {\r
-       unsigned int iIndex;\r
+    EBML_MASTER_ITERATOR Itr;\r
        KaxSeek *tmp;\r
        \r
        // look for the previous in the list\r
-       for (iIndex = 0; iIndex<ListSize(); iIndex++)\r
-       {\r
-               if ((*this)[iIndex] == static_cast<const EbmlElement*>(&aPrev))\r
+       for (Itr = begin(); Itr != end(); ++Itr)\r
+    {\r
+               if (*Itr == static_cast<const EbmlElement*>(&aPrev))\r
                        break;\r
        }\r
 \r
-       if (iIndex <ListSize()) {\r
-               iIndex++;\r
-               for (; iIndex<ListSize(); iIndex++)\r
-               {\r
-                       if (EbmlId(*((*this)[iIndex])) == EBML_ID(KaxSeek))\r
+       if (Itr != end())\r
+    {\r
+               ++Itr;\r
+           for (; Itr != end(); ++Itr)\r
+        {\r
+                       if (EbmlId(*(*Itr)) == EBML_ID(KaxSeek))\r
                        {\r
-                               tmp = (KaxSeek *)((*this)[iIndex]);\r
+                               tmp = (KaxSeek *)(*Itr);\r
                                if (tmp->IsEbmlId(aPrev))\r
                                        return tmp;\r
                        }\r