summaryrefslogtreecommitdiff
path: root/src/dom.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dom.c')
-rw-r--r--src/dom.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/dom.c b/src/dom.c
new file mode 100644
index 0000000..b163d28
--- /dev/null
+++ b/src/dom.c
@@ -0,0 +1,69 @@
+/*
+ * This file is part of libdom.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org>
+ */
+
+#include <stdbool.h>
+
+#include <dom/dom.h>
+
+#include "utils/namespace.h"
+
+static bool __initialised;
+
+/**
+ * Initialise the dom library
+ *
+ * \param alloc Pointer to memory (de)allocation function
+ * \param pw Pointer to client-specific private data
+ * \return DOM_NO_ERR on success.
+ *
+ * This must be the first DOM library method called.
+ */
+dom_exception dom_initialise(dom_alloc alloc, void *pw)
+{
+ dom_exception err;
+
+ /* Ensure we only initialise once */
+ if (__initialised) {
+ return DOM_NO_ERR;
+ }
+
+ err = _dom_namespace_initialise(alloc, pw);
+ if (err != DOM_NO_ERR) {
+ return err;
+ }
+
+ __initialised = true;
+
+ return DOM_NO_ERR;
+}
+
+/**
+ * Finalise the dom library
+ *
+ * \return DOM_NO_ERR on success.
+ *
+ * This must be the last DOM library method called.
+ */
+dom_exception dom_finalise(void)
+{
+ dom_exception err;
+
+ /* Ensure we only finalise once */
+ if (__initialised == false) {
+ return DOM_NO_ERR;
+ }
+
+ err = _dom_namespace_finalise();
+ if (err != DOM_NO_ERR) {
+ return err;
+ }
+
+ __initialised = false;
+
+ return DOM_NO_ERR;
+}
+