155714Skris/*
255714Skris * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
355714Skris * Distributed under the terms of the MIT License.
455714Skris */
555714Skris#ifndef ATTRIBUTE_INDEXER_H
655714Skris#define ATTRIBUTE_INDEXER_H
755714Skris
855714Skris
955714Skris#include <SupportDefs.h>
1055714Skris
1155714Skris
1255714Skrisclass AttributeIndex;
1355714Skrisclass AttributeIndexTreeValue;
1455714Skrisclass IndexedAttributeOwner;
1555714Skris
1655714Skris
1755714Skrisclass AttributeIndexer {
1855714Skrispublic:
1955714Skris								AttributeIndexer(AttributeIndex* index);
2055714Skris								~AttributeIndexer();
2155714Skris
2255714Skris			status_t			CreateCookie(IndexedAttributeOwner* owner,
2355714Skris									void* attributeCookie, uint32 attributeType,
2455714Skris									size_t attributeSize, void*& _data,
2555714Skris									size_t& _toRead);
2655714Skris			void				DeleteCookie();
2755714Skris
2855714Skris			AttributeIndexTreeValue* Cookie() const
2955714Skris									{ return fCookie; }
3055714Skris
3155714Skris			const char*			IndexName() const
3255714Skris									{ return fIndexName; }
3355714Skris
3455714Skrisprivate:
3555714Skris			AttributeIndex*		fIndex;
3655714Skris			const char*			fIndexName;
3755714Skris			uint32				fIndexType;
3855714Skris			AttributeIndexTreeValue* fCookie;
3955714Skris};
4055714Skris
4155714Skris
4255714Skris#endif	// ATTRIBUTE_INDEX_H
4355714Skris