summaryrefslogtreecommitdiff
path: root/include/libnslayout/error.h
blob: 0e2321f19a852bca4dcc652b07736ab04915aaf3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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