1
/* $Id: Source.h,v 1.2 2003/04/21 18:25:32 terpstra Exp $
3
* Source.h - Common segment interface
5
* Copyright (C) 2002 - Wesley W. Terpstra
9
* Authors: 'Wesley W. Terpstra' <wesley@terpstra.ca>
11
* This program is free software; you can redistribute it and/or modify
12
* it under the terms of the GNU General Public License as published by
13
* the Free Software Foundation; version 2.1.
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
20
* You should have received a copy of the GNU General Public License
21
* along with this program; if not, write to the Free Software
22
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31
/** One of the database fragments.
38
/** The tail of the returned key.
39
* The length is for the whole key.
40
* The tail includes only what is not compressed.
41
* -- these are not initialized till first call of advance
43
* The tail MUST be unsigned. Why? Because std::string compares
44
* as though it were unsigned. ie: '\0x7f' < '\0x80' even though
45
* if it were really lexicographical compare it wouldn't.
47
const unsigned char* tail;
49
unsigned int dup; // amount in common with last
51
/** Advance to the next key in the source.
52
* -1 on error, errno = 0 -> eof.
54
virtual int advance() = 0;