1/* 2 * Copyright 2007, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * All rights reserved. Distributed under the terms of the MIT license. 4 */ 5#ifndef INDEX_DIRECTORY_H 6#define INDEX_DIRECTORY_H 7 8#include "List.h" 9 10class AttributeIndex; 11class Index; 12class LastModifiedIndex; 13class NameIndex; 14class SizeIndex; 15class Volume; 16 17class IndexDirectory { 18public: 19 IndexDirectory(Volume *volume); 20 ~IndexDirectory(); 21 22 status_t InitCheck() const; 23 24 status_t CreateIndex(const char *name, uint32 type, 25 AttributeIndex **index = NULL); 26 bool DeleteIndex(const char *name, uint32 type); 27 bool DeleteIndex(Index *index); 28 29 Index *FindIndex(const char *name); 30 Index *FindIndex(const char *name, uint32 type); 31 AttributeIndex *FindAttributeIndex(const char *name); 32 AttributeIndex *FindAttributeIndex(const char *name, uint32 type); 33 34 bool IsSpecialIndex(Index *index) const; 35 NameIndex *GetNameIndex() const { return fNameIndex; } 36 LastModifiedIndex *GetLastModifiedIndex() const 37 { return fLastModifiedIndex; } 38 SizeIndex *GetSizeIndex() const { return fSizeIndex; } 39 40 Index *IndexAt(int32 index) const { return fIndices.ItemAt(index); } 41 42private: 43 Volume *fVolume; 44 NameIndex *fNameIndex; 45 LastModifiedIndex *fLastModifiedIndex; 46 SizeIndex *fSizeIndex; 47 List<Index*> fIndices; 48}; 49 50#endif // INDEX_DIRECTORY_H 51