summaryrefslogtreecommitdiffstats
path: root/3rdparty/clucene/src/CLucene/store/Directory.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/clucene/src/CLucene/store/Directory.h')
-rw-r--r--3rdparty/clucene/src/CLucene/store/Directory.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/3rdparty/clucene/src/CLucene/store/Directory.h b/3rdparty/clucene/src/CLucene/store/Directory.h
new file mode 100644
index 000000000..818bc7af9
--- /dev/null
+++ b/3rdparty/clucene/src/CLucene/store/Directory.h
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
+ *
+ * Distributable under the terms of either the Apache License (Version 2.0) or
+ * the GNU Lesser General Public License, as specified in the COPYING file.
+ *
+ * Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+*/
+#ifndef _lucene_store_Directory
+#define _lucene_store_Directory
+
+#if defined(_LUCENE_PRAGMA_ONCE)
+# pragma once
+#endif
+
+#include <QtCore/QStringList>
+
+#include "CLucene/store/Lock.h"
+#include "CLucene/util/VoidList.h"
+#include "CLucene/util/Misc.h"
+
+#include "IndexInput.h"
+#include "IndexOutput.h"
+
+CL_NS_DEF(store)
+
+/** A Directory is a flat list of files. Files may be written once, when they
+* are created. Once a file is created it may only be opened for read, or
+* deleted. Random access is permitted both when reading and writing.
+*
+* <p> Direct i/o is not used directly, but rather all i/o is
+* through this API. This permits things such as: <ul>
+* <li> implementation of RAM-based indices;
+* <li> implementation indices stored in a database, via a database;
+* <li> implementation of an index as a single file;
+* </ul>
+*
+*/
+class Directory : LUCENE_REFBASE
+{
+protected:
+ Directory() {}
+ // Removes an existing file in the directory.
+ virtual bool doDeleteFile(const QString& name) = 0;
+
+public:
+ DEFINE_MUTEX(THIS_LOCK)
+
+ virtual ~Directory() {};
+
+ // Returns an array of strings, one for each file in the directory.
+ virtual QStringList list() const = 0;
+
+ // Returns true iff a file with the given name exists.
+ virtual bool fileExists(const QString& name) const = 0;
+
+ // Returns the time the named file was last modified.
+ virtual int64_t fileModified(const QString& name) const = 0;
+
+ // Returns the length of a file in the directory.
+ virtual int64_t fileLength(const QString& name) const = 0;
+
+ // Returns a stream reading an existing file.
+ virtual IndexInput* openInput(const QString& name) = 0;
+ virtual IndexInput* openInput(const QString& name, int32_t bufferSize)
+ {
+ // didnt overload bufferSize
+ return openInput(name);
+ }
+
+ // Set the modified time of an existing file to now.
+ virtual void touchFile(const QString& name) = 0;
+
+ // Removes an existing file in the directory.
+ virtual bool deleteFile(const QString& name, const bool throwError = true) {
+ bool ret = doDeleteFile(name);
+ if (!ret && throwError) {
+ char buffer[200];
+ _snprintf(buffer, 200, "couldn't delete file %s",
+ name.toLocal8Bit().constData());
+ _CLTHROWA(CL_ERR_IO, buffer);
+ }
+ return ret;
+ }
+
+ // Renames an existing file in the directory.
+ // If a file already exists with the new name, then it is replaced.
+ virtual void renameFile(const QString& from, const QString& to) = 0;
+
+ // Creates a new, empty file in the directory with the given name.
+ // Returns a stream writing this file.
+ virtual IndexOutput* createOutput(const QString& name) = 0;
+
+ // Construct a {@link Lock}.
+ // @param name the name of the lock file
+ virtual LuceneLock* makeLock(const QString& name) = 0;
+
+ // Closes the store.
+ virtual void close() = 0;
+
+ virtual QString toString() const = 0;
+
+ virtual QString getDirectoryType() const = 0;
+};
+
+CL_NS_END
+
+#endif