Improve coding style in determineElementPosition()

This commit is contained in:
Martchus 2018-02-05 00:59:34 +01:00
parent ae4e46869d
commit 6068bb09dc
1 changed files with 16 additions and 13 deletions

View File

@ -343,22 +343,25 @@ generateRandomId:
*/
ElementPosition MatroskaContainer::determineElementPosition(uint64 elementId) const
{
if(m_firstElement && m_segmentCount == 1) {
if(const EbmlElement *segmentElement = m_firstElement->siblingById(MatroskaIds::Segment, true)) {
for(const EbmlElement *childElement = segmentElement->firstChild(); childElement; childElement = childElement->nextSibling()) {
if(childElement->id() == elementId) {
return ElementPosition::BeforeData;
} else if(childElement->id() == MatroskaIds::Cluster) {
for(const auto &seekInfo : m_seekInfos) {
for(const auto &info : seekInfo->info()) {
if(info.first == elementId) {
return ElementPosition::AfterData;
}
}
if(!m_firstElement || m_segmentCount != 1) {
return ElementPosition::Keep;
}
const auto *const segmentElement = m_firstElement->siblingById(MatroskaIds::Segment, true);
if(!segmentElement) {
return ElementPosition::Keep;
}
for(const EbmlElement *childElement = segmentElement->firstChild(); childElement; childElement = childElement->nextSibling()) {
if(childElement->id() == elementId) {
return ElementPosition::BeforeData;
} else if(childElement->id() == MatroskaIds::Cluster) {
for(const auto &seekInfo : m_seekInfos) {
for(const auto &info : seekInfo->info()) {
if(info.first == elementId) {
return ElementPosition::AfterData;
}
return ElementPosition::Keep;
}
}
return ElementPosition::Keep;
}
}
return ElementPosition::Keep;