aboutsummaryrefslogtreecommitdiff
path: root/src/iset.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/iset.h')
-rw-r--r--src/iset.h48
1 files changed, 45 insertions, 3 deletions
diff --git a/src/iset.h b/src/iset.h
index 3c8118a..4eb8c6c 100644
--- a/src/iset.h
+++ b/src/iset.h
@@ -1,3 +1,7 @@
+/** \file
+ * \brief The integer set implementation.
+ * \note The C equivalent of \c std::set<uintptr_t>
+ */
/*
* Copyright (c) 2019-2021 David Timber <mieabby@gmail.com>
*
@@ -25,19 +29,57 @@
#include <stddef.h>
+/* Alias declaration */
typedef struct prne_iset prne_iset_t;
typedef uintptr_t prne_iset_val_t;
struct prne_iset {
- prne_iset_val_t *arr;
- size_t size;
+ prne_iset_val_t *arr; // The set sorted in ascending order
+ size_t size; // The size of the set, the number of elements in the array
};
+/**
+ * \brief Initialise the integer set object.
+ * \param s The pointer to the integer set object.
+ * \note \p s can be freed using \c prne_free_iset() once initialised.
+ * \see \c prne_free_iset()
+ */
void prne_init_iset (prne_iset_t *s);
+/**
+ * \brief Free resources allocated for the integer set object.
+ * \param s The pointer to the integer set object.
+ * \see \c prne_init_iset()
+ */
void prne_free_iset (prne_iset_t *s);
-
+/**
+ * \brief Clear the elements of the integer set object.
+ * \param s The pointer to the integer set object.
+ * \warning The function call may have the exact same effect as
+ * \c prne_free_iset() but \c prne_free_iset() must always be used to free the
+ * resources allocated for the object.
+ */
void prne_iset_clear (prne_iset_t *s);
+/**
+ * \brief Insert an integer into the integer set object.
+ * \param s The pointer to the integer set object.
+ * \param v The integer.
+ * \retval true if the integer has been inserted into the set.
+ * \retval false if a memory allocation error has occurred and \c errno is set
+ * to \c ENOMEM
+ */
bool prne_iset_insert (prne_iset_t *s, const prne_iset_val_t v);
+/**
+ * \brief Erase the integer from the integer set object.
+ * \param s The integer set object.
+ * \param v The integer.
+ */
void prne_iset_erase (prne_iset_t *s, const prne_iset_val_t v);
+/**
+ * \brief Look up the integer in the integer set object.
+ * \param s The integer set object.
+ * \param v The integer.
+ * \retval true if the integer is in the set.
+ * \retval false otherwise.
+ */
bool prne_iset_lookup (prne_iset_t *s, const prne_iset_val_t v);