diff options
author | Jochen Dolze <vdr@dolze.de> | 2010-05-25 19:23:47 +0200 |
---|---|---|
committer | Jochen Dolze <vdr@dolze.de> | 2010-05-25 19:23:47 +0200 |
commit | 4c668726b7de321f0411064dcb286ed6ad05a307 (patch) | |
tree | 4c7556b13b9042e3b4f3478d1a0dbc56f4392193 /command/marks.cpp | |
parent | bfdd9d54165fc1d9897d71d8b9c94c32291e882c (diff) | |
download | vdr-plugin-markad-4c668726b7de321f0411064dcb286ed6ad05a307.tar.gz vdr-plugin-markad-4c668726b7de321f0411064dcb286ed6ad05a307.tar.bz2 |
Added Clear()-function to demuxer,paket classes
Added marks DelAll, DelTill functions
Diffstat (limited to 'command/marks.cpp')
-rw-r--r-- | command/marks.cpp | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/command/marks.cpp b/command/marks.cpp index 67358fc..929589b 100644 --- a/command/marks.cpp +++ b/command/marks.cpp @@ -32,7 +32,7 @@ clMark::~clMark() clMarks::~clMarks() { - Clear(); + DelAll(); } int clMarks::Count(int Type) @@ -64,25 +64,50 @@ void clMarks::Del(int Type) } } -void clMarks::Clear(int Before) +void clMarks::DelTill(int Position, bool FromStart) { clMark *next,*mark=first; + if (!FromStart) + { + while (mark) + { + if (mark->position>Position) break; + mark=mark->Next(); + } + } + while (mark) { next=mark->Next(); - if (mark->position<Before) + if (FromStart) + { + if (mark->position<Position) + { + Del(mark); + } + } + else { Del(mark); } mark=next; } - if (Before==0x7FFFFFFF) +} + +void clMarks::DelAll() +{ + clMark *next,*mark=first; + while (mark) { - first=NULL; - last=NULL; + next=mark->Next(); + Del(mark); + mark=next; } + first=NULL; + last=NULL; } + void clMarks::Del(clMark *Mark) { if (!Mark) return; |