* Copyright 2001-2025, Axel DΓΆrfler, axeld@pinc-software.de.
* This file may be used under the terms of the MIT License.
*/
#ifndef INDEX_H
#define INDEX_H
#include "system_dependencies.h"
class Transaction;
class Volume;
class Inode;
class Index {
public:
Index(Volume* volume);
~Index();
status_t SetTo(const char* name);
void Unset();
Inode* Node() const { return fNode; };
uint32 Type();
size_t KeySize();
status_t Create(Transaction& transaction, const char* name,
uint32 type);
status_t Update(Transaction& transaction, const char* name,
int32 type, const uint8* oldKey,
uint16 oldLength, const uint8* newKey,
uint16 newLength, Inode* inode,
bool updateLiveQueries = true);
status_t InsertName(Transaction& transaction,
const char* name, Inode* inode);
status_t RemoveName(Transaction& transaction,
const char* name, Inode* inode);
status_t UpdateName(Transaction& transaction,
const char* oldName, const char* newName,
Inode* inode, bool updateLiveQueries = true);
status_t InsertSize(Transaction& transaction, Inode* inode);
status_t RemoveSize(Transaction& transaction, Inode* inode);
status_t UpdateSize(Transaction& transaction, Inode* inode);
status_t InsertLastModified(Transaction& transaction,
Inode* inode);
status_t RemoveLastModified(Transaction& transaction,
Inode* inode);
status_t UpdateLastModified(Transaction& transaction,
Inode* inode, bigtime_t modified = -1);
status_t UpdateNodeID(Transaction& transaction, const uint8* key, uint16 length,
off_t oldInodeID, off_t newInodeID);
private:
Index(const Index& other);
Index& operator=(const Index& other);
private:
Volume* fVolume;
Inode* fNode;
const char* fName;
};
#endif