GCC Code Coverage Report


Directory: src/
File: src/common/include/core.h
Date: 2023-03-02 23:19:03
Exec Total Coverage
Lines: 4 11 36.4%
Functions: 2 4 50.0%
Branches: 0 14 0.0%

Line Branch Exec Source
1 #ifndef _CORE_H_
2 #define _CORE_H_
3
4 #include <node_api.h>
5 #include <glib.h>
6
7 #include <utils.h>
8 #include <type.h>
9 #include <comparator.h>
10
11 extern const char *msgTooFewArguments;
12 extern const char *msgCorrupt;
13
14 #define getEsGTreeNode(node) ((BTreeNode) g_tree_node_key(node))
15
16 void
17 nativeInsertNode(napi_env env, napi_value esBtree, napi_value box);
18 #define getNodeEsKey(env, node) getNodeEsField(env, node, KEY)
19 #define getNodeEsValue(env, node) getNodeEsField(env, node, VALUE)
20
21 #define CHECK_TREE_CORRUPT(env, node) \
22 if (node == NULL) { \
23 NAPI_CALL(env, false, \
24 napi_throw_error(env, NULL, msgCorrupt)); \
25 \
26 return true; \
27 }
28
29 napi_value
30 getEsUndef(napi_env env);
31
32 napi_value
33 getEsNull(napi_env env);
34
35 napi_value
36 getEsGlobal(napi_env env);
37
38 GPtrArray*
39 gtreeToPtrArray(GTree *gtree);
40
41 napi_value
42 unrefBtreeNodeEsObject(napi_env env, napi_ref ref, napi_value *key, napi_value *value);
43
44 napi_value
45 cloneBtreeWrapper(napi_env env, napi_value orig, BTree_t **btree);
46
47 napi_value
48 cloneInternalEsObject(napi_env env, napi_ref ref);
49
50 napi_ref
51 cloneInternalEsRef(napi_env env, napi_ref ref);
52
53
54 // Inline tools
55
56 inline napi_value
57 getEsConstructor(napi_env env) {
58 extern napi_ref btreeConstructorRef;
59 napi_value constructor;
60
61 NAPI_CALL(env, true,
62 napi_get_reference_value(env, btreeConstructorRef, &constructor));
63
64 return constructor;
65 }
66
67 inline napi_value
68 extractEsComparator(napi_env env, BTree_t *btree) {
69 napi_value comparator;
70
71 g_assert_nonnull(btree->comparator);
72
73 NAPI_CALL(env, false,
74 napi_get_reference_value(env, btree->comparator, &comparator));
75
76 return comparator;
77 }
78
79 inline gint
80 9 compareBTreeNodes(BTreeNode a, BTreeNode b, BTree_t *btree) {
81 9 return nativeComparator((gconstpointer) a, (gconstpointer) b, (gpointer) btree);
82 }
83
84 #ifdef HAS_GTREE_NODE
85
86 GTreeNode*
87 btreeLookup(napi_env env, BTree_t *gtree, napi_value key);
88
89 napi_value
90 getNodeEsObject(napi_env env, GTreeNode *g_node);
91
92 napi_value
93 getNodeEsField(napi_env env, GTreeNode *g_node, const char *field);
94
95 napi_value
96 getNodeEsFieldPair(napi_env env, GTreeNode *g_node);
97
98
99 BTreeNode
100 cloneBTreeNode(napi_env env, BTree_t *btree, GTreeNode *node);
101
102 inline gint
103 9 compareGTreeNodes(GTreeNode *a, GTreeNode *b, BTree_t *btree) {
104 9 return compareBTreeNodes(getEsGTreeNode(a), getEsGTreeNode(b), btree);
105 }
106
107 #endif // HAS_GTREE_NODE
108
109 #endif //_CORE_H_
110
111