about summary refs log tree commit diff
path: root/src/globals.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/globals.hh')
-rw-r--r--src/globals.hh60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/globals.hh b/src/globals.hh
new file mode 100644
index 000000000000..d4fe4b370f2a
--- /dev/null
+++ b/src/globals.hh
@@ -0,0 +1,60 @@
+#ifndef __GLOBALS_H
+#define __GLOBALS_H
+
+#include <string>
+
+using namespace std;
+
+
+/* Database names. */
+
+/* dbRefs :: Hash -> FileName
+
+   Maintains a mapping from hashes to filenames within the NixValues
+   directory.  This mapping is for performance only; it can be
+   reconstructed unambiguously.  The reason is that names in this
+   directory are not printed hashes but also might carry some
+   descriptive element (e.g., "aterm-2.0-ae749a...").  Without this
+   mapping, looking up a value would take O(n) time because we would
+   need to read the entire directory. */
+extern string dbRefs;
+
+/* dbNFs :: Hash -> Hash
+
+   Each pair (h1, h2) in this mapping records the fact that the value
+   referenced by h2 is a normal form obtained by evaluating the value
+   referenced by value h1.
+*/
+extern string dbNFs;
+
+/* dbNetSources :: Hash -> URL
+
+   Each pair (hash, url) in this mapping states that the value
+   identified by hash can be obtained by fetching the value pointed
+   to by url.
+
+   TODO: this should be Hash -> [URL]
+
+   TODO: factor this out into a separate tool? */
+extern string dbNetSources;
+
+
+/* Path names. */
+
+/* nixValues is the directory where all Nix values (both files and
+   directories, and both normal and non-normal forms) live. */
+extern string nixValues;
+
+/* nixLogDir is the directory where we log evaluations. */ 
+extern string nixLogDir;
+
+/* nixDB is the file name of the Berkeley DB database where we
+   maintain the dbXXX mappings. */
+extern string nixDB;
+
+
+/* Initialize the databases. */
+void initDB();
+
+
+#endif /* !__GLOBALS_H */