* Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de.
* All rights reserved. Distributed under the terms of the MIT license.
*/
#ifndef ATTRIBUTE_INDEX_IMPL_H
#define ATTRIBUTE_INDEX_IMPL_H
#include "AttributeIndex.h"
class AttributeIndexImpl : public AttributeIndex {
public:
AttributeIndexImpl(Volume *volume, const char *name, uint32 type,
size_t keyLength);
virtual ~AttributeIndexImpl();
virtual int32 CountEntries() const;
virtual status_t Changed(Attribute *attribute,
const uint8 *oldKey, size_t oldLength);
private:
virtual status_t Added(Attribute *attribute);
virtual bool Removed(Attribute *attribute);
protected:
virtual AbstractIndexEntryIterator *InternalGetIterator();
virtual AbstractIndexEntryIterator *InternalFind(const uint8 *key,
size_t length);
private:
class Iterator;
class IteratorList;
class AttributeTree;
class PrimaryKey;
class GetPrimaryKey;
class PrimaryKeyCompare;
friend class Iterator;
private:
void _AddIterator(Iterator *iterator);
void _RemoveIterator(Iterator *iterator);
private:
AttributeTree *fAttributes;
IteratorList *fIterators;
};
#endif