summaryrefslogtreecommitdiff
path: root/include/libnslayout/error.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libnslayout/error.h')
-rw-r--r--include/libnslayout/error.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/include/libnslayout/error.h b/include/libnslayout/error.h
new file mode 100644
index 0000000..0e2321f
--- /dev/null
+++ b/include/libnslayout/error.h
@@ -0,0 +1,109 @@
+/*
+ * This file is part of LibNSLayout
+ * Licensed under the ISC License, http://opensource.org/licenses/ISC
+ * Copyright 2015 Michael Drake <tlsa@netsurf-browser.org>
+ */
+
+/** \file include/libnslayout/error.h
+ * Layout object handling
+ */
+
+#ifndef nslayout_error_h_
+#define nslayout_error_h_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/**
+ * Libnslayout return codes
+ *
+ * NSLAYOUT_OK indicates no error.
+ */
+typedef enum nslayout_error {
+ /** No error code */
+ NSLAYOUT_OK = 0,
+
+ /** Error provenance */
+ NSLAYOUT_NSLAYOUT = (1 << 0),
+ NSLAYOUT_LIBDOM = (1 << 1),
+ NSLAYOUT_LIBCSS = (1 << 2),
+
+ /** LibNSLayout errors */
+ NSLAYOUT_NO_MEM = (1 << 8) + NSLAYOUT_NSLAYOUT,
+} nslayout_error;
+
+
+/**
+ * Check if error is from libnslayout
+ *
+ * \param[in] err Error code to test
+ * \return true iff error is from libnslayout
+ */
+static inline bool nslayout_error_is_layout(nslayout_error err)
+{
+ return err & NSLAYOUT_NSLAYOUT;
+}
+
+
+/**
+ * Check if error is from libdom
+ *
+ * \param[in] err Error code to test
+ * \return true iff error is from libdom
+ */
+static inline bool nslayout_error_is_libdom(nslayout_error err)
+{
+ return err & NSLAYOUT_LIBDOM;
+}
+
+/**
+ * Check if error is from libcss
+ *
+ * \param[in] err Error code to test
+ * \return true iff error is from libcss
+ */
+static inline bool nslayout_error_is_libcss(nslayout_error err)
+{
+ return err & NSLAYOUT_LIBCSS;
+}
+
+/**
+ * Turn libnslayout return code into libnslayout error
+ *
+ * \param[in] err Error code to convert
+ * \return libnslayout error
+ */
+static inline nslayout_error nslayout_error_to_layout(nslayout_error err)
+{
+ return err;
+}
+
+/**
+ * Turn libnslayout return code into libdom error
+ *
+ * \param[in] err Error code to convert
+ * \return dom exception
+ */
+static inline dom_exception nslayout_error_to_libdom(nslayout_error err)
+{
+ return err >> 8;
+}
+
+/**
+ * Turn libnslayout return code into libcss error
+ *
+ * \param[in] err Error code to convert
+ * \return libcss error
+ */
+static inline css_error nslayout_error_to_libcss(nslayout_error err)
+{
+ return err >> 8;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif