void DataStream_SequenceBase::WriteRecordSequenceL(DataStream *target, BOOL start_after, DataStream *start_with_this, DataStream *stop_after_this) { DS_DEBUG_Start(); OP_ASSERT(target != this); int stepw = 0; DataStream *item = First(); DS_Debug_Printf0("------------ Starting to Write Record ------------\n"); if(start_with_this) { // Fast Forward while(item) { if(item == start_with_this && !start_after) break; if(item == stop_after_this) return; item = item->Suc(); stepw++; if(item && start_with_this == item->Pred()) break; } } WriteActionL(stepw++, (item && item->Pred() ? item->Pred()->GetItemID() : (uint32) DataStream_SequenceBase::STRUCTURE_START)); while(item) { if(item->GetEnabledRecord()) item->WriteRecordL(GetOutputTarget(target)); WriteActionL(stepw++, item->GetItemID()); BOOL is_last_element = (item == stop_after_this ? TRUE : FALSE); item = item->Suc(); if(item && is_last_element) { DS_Debug_Printf0("------------ Finished Writing Record (1) ------------\n"); return; } } WriteActionL(stepw++, DataStream_SequenceBase::STRUCTURE_FINISHED); DS_Debug_Printf0("------------ Finished Writing Record ------------\n"); }