summaryrefslogtreecommitdiffstats
path: root/zix
diff options
context:
space:
mode:
Diffstat (limited to 'zix')
-rw-r--r--zix/common.h17
-rw-r--r--zix/ring.h20
-rw-r--r--zix/sorted_array.h2
-rw-r--r--zix/tree.h16
4 files changed, 48 insertions, 7 deletions
diff --git a/zix/common.h b/zix/common.h
index c0dffeb..ab7e431 100644
--- a/zix/common.h
+++ b/zix/common.h
@@ -17,8 +17,6 @@
#ifndef ZIX_COMMON_H
#define ZIX_COMMON_H
-#include <stdbool.h>
-
/**
@addtogroup zix
@{
@@ -26,7 +24,7 @@
/** @cond */
#ifdef ZIX_SHARED
-# ifdef __WIN32__
+# ifdef _WIN32
# define ZIX_LIB_IMPORT __declspec(dllimport)
# define ZIX_LIB_EXPORT __declspec(dllexport)
# else
@@ -43,6 +41,12 @@
#endif
/** @endcond */
+#ifdef __cplusplus
+extern "C" {
+#else
+# include <stdbool.h>
+#endif
+
typedef enum {
ZIX_STATUS_SUCCESS,
ZIX_STATUS_ERROR,
@@ -66,7 +70,12 @@ typedef bool (*ZixEqualFunc)(const void* a, const void* b);
*/
typedef void (*ZixDestroyFunc)(void* ptr);
-/**@}
+/**
+ @}
*/
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
#endif /* ZIX_COMMON_H */
diff --git a/zix/ring.h b/zix/ring.h
index 3abb1e8..34ba2fa 100644
--- a/zix/ring.h
+++ b/zix/ring.h
@@ -21,6 +21,17 @@
#include "zix/common.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ @addtogroup zix
+ @{
+ @name Ring
+ @{
+*/
+
/**
A lock-free ring buffer.
@@ -107,4 +118,13 @@ zix_ring_skip(ZixRing* ring, uint32_t size);
uint32_t
zix_ring_write(ZixRing* ring, const void* src, uint32_t size);
+/**
+ @}
+ @}
+*/
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
#endif /* ZIX_RING_H */
diff --git a/zix/sorted_array.h b/zix/sorted_array.h
index 1d508f2..06177dd 100644
--- a/zix/sorted_array.h
+++ b/zix/sorted_array.h
@@ -18,8 +18,6 @@
#ifndef ZIX_SORTED_ARRAY_H
#define ZIX_SORTED_ARRAY_H
-#include <stdbool.h>
-
#include "zix/common.h"
#ifdef __cplusplus
diff --git a/zix/tree.h b/zix/tree.h
index 378db28..b54087c 100644
--- a/zix/tree.h
+++ b/zix/tree.h
@@ -17,7 +17,6 @@
#ifndef ZIX_TREE_H
#define ZIX_TREE_H
-#include <stdbool.h>
#include <stddef.h>
#include "zix/common.h"
@@ -46,6 +45,7 @@ typedef struct ZixTreeNodeImpl ZixTreeIter;
/**
Create a new (empty) tree.
*/
+ZIX_API
ZixTree*
zix_tree_new(bool allow_duplicates,
ZixComparator cmp,
@@ -55,24 +55,28 @@ zix_tree_new(bool allow_duplicates,
/**
Free @a t.
*/
+ZIX_API
void
zix_tree_free(ZixTree* t);
/**
Return the number of elements in @a t.
*/
+ZIX_API
size_t
zix_tree_size(ZixTree* t);
/**
Insert the element @a e into @a t and point @a ti at the new element.
*/
+ZIX_API
ZixStatus
zix_tree_insert(ZixTree* t, void* e, ZixTreeIter** ti);
/**
Remove the item pointed at by @a ti from @a t.
*/
+ZIX_API
ZixStatus
zix_tree_remove(ZixTree* t, ZixTreeIter* ti);
@@ -80,60 +84,70 @@ zix_tree_remove(ZixTree* t, ZixTreeIter* ti);
Set @a ti to an element equal to @a e in @a t.
If no such item exists, @a ti is set to NULL.
*/
+ZIX_API
ZixStatus
zix_tree_find(const ZixTree* t, const void* e, ZixTreeIter** ti);
/**
Return the data associated with the given tree item.
*/
+ZIX_API
void*
zix_tree_get(ZixTreeIter* ti);
/**
Return an iterator to the first (smallest) element in @a t.
*/
+ZIX_API
ZixTreeIter*
zix_tree_begin(ZixTree* t);
/**
Return an iterator the the element one past the last element in @a t.
*/
+ZIX_API
ZixTreeIter*
zix_tree_end(ZixTree* t);
/**
Return true iff @a i is an iterator to the end of its tree.
*/
+ZIX_API
bool
zix_tree_iter_is_end(ZixTreeIter* i);
/**
Return an iterator to the last (largest) element in @a t.
*/
+ZIX_API
ZixTreeIter*
zix_tree_rbegin(ZixTree* t);
/**
Return an iterator the the element one before the first element in @a t.
*/
+ZIX_API
ZixTreeIter*
zix_tree_rend(ZixTree* t);
/**
Return true iff @a i is an iterator to the reverse end of its tree.
*/
+ZIX_API
bool
zix_tree_iter_is_rend(ZixTreeIter* i);
/**
Return an iterator that points to the element one past @a i.
*/
+ZIX_API
ZixTreeIter*
zix_tree_iter_next(ZixTreeIter* i);
/**
Return an iterator that points to the element one before @a i.
*/
+ZIX_API
ZixTreeIter*
zix_tree_iter_prev(ZixTreeIter* i);