diff options
Diffstat (limited to 'kdat/Range.h')
-rw-r--r-- | kdat/Range.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/kdat/Range.h b/kdat/Range.h new file mode 100644 index 0000000..5b042c3 --- /dev/null +++ b/kdat/Range.h @@ -0,0 +1,107 @@ +// KDat - a tar-based DAT archiver +// Copyright (C) 1998-2000 Sean Vyain, svyain@mail.tds.net +// Copyright (C) 2001-2002 Lawrence Widman, kdat@cardiothink.com +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +#ifndef _Range_h_ +#define _Range_h_ + +#include <qptrlist.h> + +/** + * @short This class represents a range of tar records. + */ +class Range { + int _start; + int _end; +public: + /** + * Create a new range. + * + * @param start The first tar record in the range. + * @param end The last tar record in the range. + */ + Range( int start = 0, int end = 0 ); + + /** + * Get the first tar record in this range. + * + * @return The starting tar record. + */ + int getStart(); + + /** + * Get the last tar record in this range. + * + * @return The ending tar record. + */ + int getEnd(); + + /** + * Set the first tar record in this range. + * + * @param start The starting tar record. + */ + void setStart( int start ); + + /** + * Set the last tar record in this range. + * + * @param end The ending tar record. + */ + void setEnd( int end ); +}; + +/** + * A simple list of Ranges. + */ +class RangeList { + QPtrList<Range> _ranges; +public: + /** + * Create an empty list of ranges. + */ + RangeList(); + + /** + * Destroy each range in the list. + */ + ~RangeList(); + + /** + * Get the simplified list of ranges. + * + * @return The list of ranges. + */ + const QPtrList<Range>& getRanges() const; + + /** + * Intelligently add the given range to the list of ranges. If possible, + * the new range is merged with one (or two) of the existing ranges in + * the list. Otherwise, a new range is added to the list. + * + * @param start The starting tar record. + * @param end The ending tar record. + */ + void addRange( int start, int end ); + + /** + * Erase the list of ranges. + */ + void clear(); +}; + +#endif |