summaryrefslogtreecommitdiff
path: root/src/libmowgli/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmowgli/base')
-rw-r--r--src/libmowgli/base/argstack.c63
-rw-r--r--src/libmowgli/base/argstack.h14
-rw-r--r--src/libmowgli/base/bitvector.c46
-rw-r--r--src/libmowgli/base/bitvector.h4
-rw-r--r--src/libmowgli/base/formatter.c20
-rw-r--r--src/libmowgli/base/hash.c46
-rw-r--r--src/libmowgli/base/hook.c5
-rw-r--r--src/libmowgli/base/hook.h23
-rw-r--r--src/libmowgli/base/memslice.c11
-rw-r--r--src/libmowgli/base/memslice.h1
-rw-r--r--src/libmowgli/base/mowgli_signal.c8
-rw-r--r--src/libmowgli/base/mowgli_signal.h2
-rw-r--r--src/libmowgli/base/random.c37
-rw-r--r--src/libmowgli/base/random.h4
14 files changed, 162 insertions, 122 deletions
diff --git a/src/libmowgli/base/argstack.c b/src/libmowgli/base/argstack.c
index ea67da2..560c83e 100644
--- a/src/libmowgli/base/argstack.c
+++ b/src/libmowgli/base/argstack.c
@@ -30,7 +30,8 @@ static mowgli_object_class_t klass;
*
* \param vptr pointer to mowgli_argstack_t to destroy.
*/
-static void mowgli_argstack_destroy(void *vptr)
+static void
+mowgli_argstack_destroy(void *vptr)
{
mowgli_argstack_t *self = (mowgli_argstack_t *) vptr;
mowgli_node_t *n, *tn;
@@ -48,17 +49,18 @@ static void mowgli_argstack_destroy(void *vptr)
/*
* \brief Initialization code for the mowgli.argstack library.
- *
+ *
* Side Effects:
* - the mowgli_argstack_t object class is registered.
*/
-void mowgli_argstack_bootstrap(void)
+void
+mowgli_argstack_bootstrap(void)
{
mowgli_object_class_init(&klass, "mowgli_argstack_t", mowgli_argstack_destroy, FALSE);
}
/*
- * \brief Creates an argument stack from a va_list and an appropriate
+ * \brief Creates an argument stack from a va_list and an appropriate
* description schema.
*
* \param descstr a description string which describes the argument stack, where:
@@ -70,20 +72,20 @@ void mowgli_argstack_bootstrap(void)
*
* \return a mowgli_argstack_t (mowgli.argstack) object.
*/
-mowgli_argstack_t *mowgli_argstack_create_from_va_list(const char *descstr, va_list va)
+mowgli_argstack_t *
+mowgli_argstack_create_from_va_list(const char *descstr, va_list va)
{
+ return_null_if_fail(descstr != NULL);
+
const char *cp = descstr;
mowgli_argstack_t *out = mowgli_alloc(sizeof(mowgli_argstack_t));
mowgli_object_init(mowgli_object(out), descstr, &klass, NULL);
- if (descstr == NULL)
- mowgli_throw_exception_val(mowgli.argstack.invalid_description, NULL);
-
while (*cp)
{
mowgli_argstack_element_t *e = mowgli_alloc(sizeof(mowgli_argstack_element_t));
- switch(*cp)
+ switch (*cp)
{
case 's':
e->data.string = va_arg(va, char *);
@@ -104,7 +106,8 @@ mowgli_argstack_t *mowgli_argstack_create_from_va_list(const char *descstr, va_l
default:
va_end(va);
mowgli_object_unref(out);
- mowgli_throw_exception_val(mowgli.argstack.invalid_description, NULL);
+ mowgli_log_warning("invalid description");
+ return NULL;
break;
}
@@ -127,14 +130,14 @@ mowgli_argstack_t *mowgli_argstack_create_from_va_list(const char *descstr, va_l
*
* \return a mowgli_argstack_t (mowgli.argstack) object.
*/
-mowgli_argstack_t *mowgli_argstack_create(const char *descstr, ...)
+mowgli_argstack_t *
+mowgli_argstack_create(const char *descstr, ...)
{
+ return_null_if_fail(descstr != NULL);
+
va_list va;
mowgli_argstack_t *out;
- if (descstr == NULL)
- mowgli_throw_exception_val(mowgli.argstack.invalid_description, NULL);
-
va_start(va, descstr);
out = mowgli_argstack_create_from_va_list(descstr, va);
va_end(va);
@@ -152,14 +155,14 @@ mowgli_argstack_t *mowgli_argstack_create(const char *descstr, ...)
* Side Effects:
* - the argument is removed from the argstack.
*/
-const char *mowgli_argstack_pop_string(mowgli_argstack_t *self)
+const char *
+mowgli_argstack_pop_string(mowgli_argstack_t *self)
{
+ return_null_if_fail(self != NULL);
+
mowgli_node_t *n;
mowgli_argstack_element_t *e;
- if (self == NULL)
- mowgli_throw_exception_val(mowgli.null_pointer_exception, NULL);
-
n = self->stack.head;
mowgli_node_delete(n, &self->stack);
e = n->data;
@@ -178,14 +181,14 @@ const char *mowgli_argstack_pop_string(mowgli_argstack_t *self)
* Side Effects:
* - the argument is removed from the argstack.
*/
-int mowgli_argstack_pop_numeric(mowgli_argstack_t *self)
+int
+mowgli_argstack_pop_numeric(mowgli_argstack_t *self)
{
+ return_val_if_fail(self != NULL, 0);
+
mowgli_node_t *n;
mowgli_argstack_element_t *e;
- if (self == NULL)
- mowgli_throw_exception_val(mowgli.null_pointer_exception, 0);
-
n = self->stack.head;
mowgli_node_delete(n, &self->stack);
e = n->data;
@@ -204,14 +207,14 @@ int mowgli_argstack_pop_numeric(mowgli_argstack_t *self)
* Side Effects:
* - the argument is removed from the argstack.
*/
-mowgli_boolean_t mowgli_argstack_pop_boolean(mowgli_argstack_t *self)
+mowgli_boolean_t
+mowgli_argstack_pop_boolean(mowgli_argstack_t *self)
{
+ return_val_if_fail(self != NULL, false);
+
mowgli_node_t *n;
mowgli_argstack_element_t *e;
- if (self == NULL)
- mowgli_throw_exception_val(mowgli.null_pointer_exception, FALSE);
-
n = self->stack.head;
mowgli_node_delete(n, &self->stack);
e = n->data;
@@ -230,14 +233,14 @@ mowgli_boolean_t mowgli_argstack_pop_boolean(mowgli_argstack_t *self)
* Side Effects:
* - the argument is removed from the argstack.
*/
-void *mowgli_argstack_pop_pointer(mowgli_argstack_t *self)
+void *
+mowgli_argstack_pop_pointer(mowgli_argstack_t *self)
{
+ return_null_if_fail(self != NULL);
+
mowgli_node_t *n;
mowgli_argstack_element_t *e;
- if (self == NULL)
- mowgli_throw_exception_val(mowgli.null_pointer_exception, NULL);
-
n = self->stack.head;
mowgli_node_delete(n, &self->stack);
e = n->data;
diff --git a/src/libmowgli/base/argstack.h b/src/libmowgli/base/argstack.h
index adf68c2..b3b86f9 100644
--- a/src/libmowgli/base/argstack.h
+++ b/src/libmowgli/base/argstack.h
@@ -24,29 +24,33 @@
#ifndef __MOWGLI_ARGSTACK_H__
#define __MOWGLI_ARGSTACK_H__
-typedef enum {
+typedef enum
+{
MOWGLI_ARG_NUMERIC,
MOWGLI_ARG_POINTER,
MOWGLI_ARG_STRING,
MOWGLI_ARG_BOOLEAN
} mowgli_argstack_element_type_t;
-typedef struct {
- union {
+typedef struct
+{
+ union
+ {
int numeric;
void *pointer;
char *string;
mowgli_boolean_t boolean;
} data;
+
mowgli_argstack_element_type_t type;
} mowgli_argstack_element_t;
-typedef struct {
+typedef struct
+{
mowgli_object_t parent;
mowgli_list_t stack;
} mowgli_argstack_t;
-extern void mowgli_argstack_bootstrap(void);
extern mowgli_argstack_t *mowgli_argstack_create(const char *descstr, ...);
extern mowgli_argstack_t *mowgli_argstack_create_from_va_list(const char *descstr, va_list va);
extern const char *mowgli_argstack_pop_string(mowgli_argstack_t *);
diff --git a/src/libmowgli/base/bitvector.c b/src/libmowgli/base/bitvector.c
index b70df55..45fca31 100644
--- a/src/libmowgli/base/bitvector.c
+++ b/src/libmowgli/base/bitvector.c
@@ -39,7 +39,8 @@ static mowgli_object_class_t klass;
* Side Effects:
* - the mowgli_bitvector_t object class is registered.
*/
-void mowgli_bitvector_bootstrap(void)
+void
+mowgli_bitvector_bootstrap(void)
{
mowgli_object_class_init(&klass, "mowgli_bitvector_t", mowgli_free, FALSE);
}
@@ -58,14 +59,16 @@ void mowgli_bitvector_bootstrap(void)
* Side Effects:
* - none
*/
-mowgli_bitvector_t *mowgli_bitvector_create(int bits)
+mowgli_bitvector_t *
+mowgli_bitvector_create(int bits)
{
mowgli_bitvector_t *bv = (mowgli_bitvector_t *) mowgli_alloc(sizeof(mowgli_bitvector_t));
+
mowgli_object_init(mowgli_object(bv), "mowgli_bitvector_t", &klass, NULL);
- bv->bits = bits;
+ bv->bits = bits;
bv->divisor = sizeof(int);
- bv->vector = (unsigned int *) mowgli_alloc_array(bv->divisor, bv->bits / bv->divisor);
+ bv->vector = (unsigned int *) mowgli_alloc_array(bv->divisor, bv->bits / bv->divisor);
return bv;
}
@@ -86,19 +89,20 @@ mowgli_bitvector_t *mowgli_bitvector_create(int bits)
* Side Effects:
* - a bit is either set ON or OFF in the bitvector.
*/
-void mowgli_bitvector_set(mowgli_bitvector_t *bv, int slot, mowgli_boolean_t val)
+void
+mowgli_bitvector_set(mowgli_bitvector_t *bv, int slot, mowgli_boolean_t val)
{
int value = 1 << slot;
- switch(val)
+ switch (val)
{
- case FALSE:
- bv->vector[bv->bits / bv->divisor] &= ~value;
- break;
- default:
- case TRUE:
- bv->vector[bv->bits / bv->divisor] |= value;
- break;
+ case FALSE:
+ bv->vector[bv->bits / bv->divisor] &= ~value;
+ break;
+ default:
+ case TRUE:
+ bv->vector[bv->bits / bv->divisor] |= value;
+ break;
}
}
@@ -118,7 +122,8 @@ void mowgli_bitvector_set(mowgli_bitvector_t *bv, int slot, mowgli_boolean_t val
* Side Effects:
* - none
*/
-mowgli_boolean_t mowgli_bitvector_get(mowgli_bitvector_t *bv, int slot)
+mowgli_boolean_t
+mowgli_bitvector_get(mowgli_bitvector_t *bv, int slot)
{
int mask = 1 << slot;
@@ -139,7 +144,8 @@ mowgli_boolean_t mowgli_bitvector_get(mowgli_bitvector_t *bv, int slot)
* Side Effects:
* - none
*/
-mowgli_bitvector_t *mowgli_bitvector_combine(mowgli_bitvector_t *bv1, mowgli_bitvector_t *bv2)
+mowgli_bitvector_t *
+mowgli_bitvector_combine(mowgli_bitvector_t *bv1, mowgli_bitvector_t *bv2)
{
int bits, iter, bs;
mowgli_bitvector_t *out;
@@ -179,7 +185,8 @@ mowgli_bitvector_t *mowgli_bitvector_combine(mowgli_bitvector_t *bv1, mowgli_bit
* Side Effects:
* - none
*/
-mowgli_bitvector_t *mowgli_bitvector_xor(mowgli_bitvector_t *bv1, mowgli_bitvector_t *bv2)
+mowgli_bitvector_t *
+mowgli_bitvector_xor(mowgli_bitvector_t *bv1, mowgli_bitvector_t *bv2)
{
int bits, iter, bs;
mowgli_bitvector_t *out;
@@ -220,19 +227,18 @@ mowgli_bitvector_t *mowgli_bitvector_xor(mowgli_bitvector_t *bv1, mowgli_bitvect
* Side Effects:
* - none
*/
-mowgli_boolean_t mowgli_bitvector_compare(mowgli_bitvector_t *bv1, mowgli_bitvector_t *bv2)
+mowgli_boolean_t
+mowgli_bitvector_compare(mowgli_bitvector_t *bv1, mowgli_bitvector_t *bv2)
{
- int iter, bs;
+ int iter, bs;
mowgli_boolean_t ret = TRUE;
/* cache the size of the bitvector in memory. */
bs = bv1->bits / bv1->divisor;
for (iter = 0; iter < bs; iter++)
- {
if (!(bv1->vector[iter] & bv2->vector[iter]))
ret = FALSE;
- }
return ret;
}
diff --git a/src/libmowgli/base/bitvector.h b/src/libmowgli/base/bitvector.h
index 592ba59..f96709d 100644
--- a/src/libmowgli/base/bitvector.h
+++ b/src/libmowgli/base/bitvector.h
@@ -24,13 +24,13 @@
#ifndef __MOWGLI_BITVECTOR_H__
#define __MOWGLI_BITVECTOR_H__
-typedef struct {
+typedef struct
+{
unsigned int bits;
unsigned int divisor;
unsigned int *vector;
} mowgli_bitvector_t;
-extern void mowgli_bitvector_bootstrap(void);
extern mowgli_bitvector_t *mowgli_bitvector_create(int bits);
extern void mowgli_bitvector_set(mowgli_bitvector_t *bv, int slot, mowgli_boolean_t val);
extern mowgli_boolean_t mowgli_bitvector_get(mowgli_bitvector_t *bv, int slot);
diff --git a/src/libmowgli/base/formatter.c b/src/libmowgli/base/formatter.c
index 21d9e46..db908e7 100644
--- a/src/libmowgli/base/formatter.c
+++ b/src/libmowgli/base/formatter.c
@@ -23,7 +23,8 @@
#include "mowgli.h"
-void mowgli_formatter_format_from_argstack(char *buf, size_t bufstr, const char *fmtstr, const char *descstr, mowgli_argstack_t *stack)
+void
+mowgli_formatter_format_from_argstack(char *buf, size_t bufstr, const char *fmtstr, const char *descstr, mowgli_argstack_t *stack)
{
size_t pos = 0;
char *i = buf;
@@ -42,14 +43,17 @@ void mowgli_formatter_format_from_argstack(char *buf, size_t bufstr, const char
pos = strlen(buf);
- switch(*fiter)
+ switch (*fiter)
{
case '%':
fiter++;
arg = atoi(fiter);
e = mowgli_node_nth_data(&stack->stack, arg - 1);
- while (isdigit(*fiter)) fiter++;
+ while (isdigit(*fiter))
+ {
+ fiter++;
+ }
if (e == NULL)
{
@@ -58,7 +62,7 @@ void mowgli_formatter_format_from_argstack(char *buf, size_t bufstr, const char
continue;
}
- switch(e->type)
+ switch (e->type)
{
case MOWGLI_ARG_STRING:
arg = snprintf(i, bufstr - (i - buf), "%s", e->data.string);
@@ -77,7 +81,7 @@ void mowgli_formatter_format_from_argstack(char *buf, size_t bufstr, const char
i += arg;
break;
default:
- mowgli_throw_exception(mowgli.formatter.unhandled_type_exception);
+ mowgli_log("unhandled type");
break;
}
@@ -92,7 +96,8 @@ void mowgli_formatter_format_from_argstack(char *buf, size_t bufstr, const char
}
}
-void mowgli_formatter_format(char *buf, size_t bufstr, const char *fmtstr, const char *descstr, ...)
+void
+mowgli_formatter_format(char *buf, size_t bufstr, const char *fmtstr, const char *descstr, ...)
{
va_list va;
mowgli_argstack_t *stack;
@@ -104,7 +109,8 @@ void mowgli_formatter_format(char *buf, size_t bufstr, const char *fmtstr, const
mowgli_formatter_format_from_argstack(buf, bufstr, fmtstr, descstr, stack);
}
-void mowgli_formatter_print(const char *fmtstr, const char *descstr, ...)
+void
+mowgli_formatter_print(const char *fmtstr, const char *descstr, ...)
{
va_list va;
char buf[65535];
diff --git a/src/libmowgli/base/hash.c b/src/libmowgli/base/hash.c
index 7d70d8c..a2734d0 100644
--- a/src/libmowgli/base/hash.c
+++ b/src/libmowgli/base/hash.c
@@ -25,12 +25,13 @@
#define HASHINIT 0x811c9dc5
#define HASHBITS 16
-#define HASHSIZE (1 << HASHBITS) /* 2^16 = 65536 */
+#define HASHSIZE (1 << HASHBITS)/* 2^16 = 65536 */
-int mowgli_fnv_hash_string(const char *p)
+int
+mowgli_fnv_hash_string(const char *p)
{
static int htoast = 0;
- unsigned int hval = HASHINIT;
+ unsigned int hval = HASHINIT;
if (htoast == 0)
{
@@ -39,21 +40,23 @@ int mowgli_fnv_hash_string(const char *p)
mowgli_object_unref(r);
}
- if (!p)
- return (0);
- for (; *p != '\0'; ++p)
- {
- hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
- hval ^= (tolower(*p) ^ htoast);
- }
+ if (!p)
+ return 0;
- return ((hval >> HASHBITS) ^ (hval & ((1 << HASHBITS) - 1)) % HASHSIZE);
+ for (; *p != '\0'; ++p)
+ {
+ hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
+ hval ^= (tolower(*p) ^ htoast);
+ }
+
+ return (hval >> HASHBITS) ^ (hval & ((1 << HASHBITS) - 1)) % HASHSIZE;
}
-int mowgli_fnv_hash(unsigned int *p)
+int
+mowgli_fnv_hash(unsigned int *p)
{
static int htoast = 0;
- unsigned int hval = HASHINIT;
+ unsigned int hval = HASHINIT;
if (htoast == 0)
{
@@ -62,13 +65,14 @@ int mowgli_fnv_hash(unsigned int *p)
mowgli_object_unref(r);
}
- if (!p)
- return (0);
- for (; *p != '\0'; ++p)
- {
- hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
- hval ^= (tolower(*p) ^ htoast);
- }
+ if (!p)
+ return 0;
+
+ for (; *p != '\0'; ++p)
+ {
+ hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);
+ hval ^= (tolower(*p) ^ htoast);
+ }
- return ((hval >> HASHBITS) ^ (hval & ((1 << HASHBITS) - 1)) % HASHSIZE);
+ return (hval >> HASHBITS) ^ (hval & ((1 << HASHBITS) - 1)) % HASHSIZE;
}
diff --git a/src/libmowgli/base/hook.c b/src/libmowgli/base/hook.c
index 0af9660..315266a 100644
--- a/src/libmowgli/base/hook.c
+++ b/src/libmowgli/base/hook.c
@@ -27,7 +27,8 @@
static mowgli_patricia_t *mowgli_hooks = NULL;
static mowgli_heap_t *mowgli_hook_item_heap;
-static void _hook_key_canon(char *str)
+static void
+_hook_key_canon(char *str)
{
while (*str)
{
@@ -116,7 +117,7 @@ mowgli_hook_dissociate(const char *name, mowgli_hook_function_t func)
mowgli_heap_free(mowgli_hook_item_heap, hookitem);
return 0;
- }
+ }
}
return -1;
diff --git a/src/libmowgli/base/hook.h b/src/libmowgli/base/hook.h
index 366e123..5d8d317 100644
--- a/src/libmowgli/base/hook.h
+++ b/src/libmowgli/base/hook.h
@@ -27,21 +27,22 @@
typedef void (*mowgli_hook_function_t)(void *hook_data, void *user_data);
-typedef struct {
- mowgli_hook_function_t func;
- void *user_data;
- mowgli_node_t node;
+typedef struct
+{
+ mowgli_hook_function_t func;
+ void *user_data;
+ mowgli_node_t node;
} mowgli_hook_item_t;
-typedef struct {
- const char *name;
- mowgli_list_t items;
+typedef struct
+{
+ const char *name;
+ mowgli_list_t items;
} mowgli_hook_t;
-extern void mowgli_hook_bootstrap(void);
extern void mowgli_hook_register(const char *name);
-extern int mowgli_hook_associate(const char *name, mowgli_hook_function_t func, void * user_data);
-extern int mowgli_hook_dissociate(const char *name, mowgli_hook_function_t func);
-extern void mowgli_hook_call(const char *name, void * hook_data);
+extern int mowgli_hook_associate(const char *name, mowgli_hook_function_t func, void *user_data);
+extern int mowgli_hook_dissociate(const char *name, mowgli_hook_function_t func);
+extern void mowgli_hook_call(const char *name, void *hook_data);
#endif
diff --git a/src/libmowgli/base/memslice.c b/src/libmowgli/base/memslice.c
index a271821..8d8f3a2 100644
--- a/src/libmowgli/base/memslice.c
+++ b/src/libmowgli/base/memslice.c
@@ -26,7 +26,8 @@ static mowgli_heap_t *allocator_heap;
/*
* Our slice allocation engine.
*/
-typedef struct {
+typedef struct
+{
size_t size;
mowgli_heap_t *heap;
@@ -36,7 +37,8 @@ typedef struct {
/*
* Allocation tag.
*/
-typedef struct {
+typedef struct
+{
slice_alloc_t *owner;
} slice_tag_t;
@@ -49,6 +51,7 @@ nexthigher(size_t k)
size_t i;
k--;
+
for (i = 1; i < sizeof(k) * 8; i <<= 1)
k |= k >> i;
@@ -109,7 +112,7 @@ memslice_alloc(size_t i)
ptr = mowgli_heap_alloc(alloc->heap);
((slice_tag_t *) ptr)->owner = alloc;
- return ptr + sizeof(slice_tag_t);
+ return (char *) ptr + sizeof(slice_tag_t);
}
/*
@@ -122,7 +125,7 @@ memslice_free(void *ptr)
return_if_fail(ptr != NULL);
- tag = ptr - sizeof(slice_tag_t);
+ tag = (void *) ((char *) ptr - sizeof(slice_tag_t));
mowgli_heap_free(tag->owner->heap, tag);
}
diff --git a/src/libmowgli/base/memslice.h b/src/libmowgli/base/memslice.h
index 9d6e842..12ce8f7 100644
--- a/src/libmowgli/base/memslice.h
+++ b/src/libmowgli/base/memslice.h
@@ -21,7 +21,6 @@
#ifndef __MOWGLI_MEMSLICE_H__
#define __MOWGLI_MEMSLICE_H__
-void mowgli_memslice_bootstrap(void);
mowgli_allocation_policy_t *mowgli_memslice_get_policy(void);
#endif
diff --git a/src/libmowgli/base/mowgli_signal.c b/src/libmowgli/base/mowgli_signal.c
index 208ce37..60602b4 100644
--- a/src/libmowgli/base/mowgli_signal.c
+++ b/src/libmowgli/base/mowgli_signal.c
@@ -26,11 +26,15 @@
#include <signal.h>
#include "mowgli.h"
+#if defined(__linux__) && defined(__GNUC__) && defined(__STRICT_ANSI__)
+# error GCC/Linux in -std=c99 mode will not compile mowgli_signal; use -std=gnu99 instead
+#endif
+
static mowgli_signal_handler_t
-mowgli_signal_install_handler_full(int signum, mowgli_signal_handler_t handler,
- int *sigtoblock, size_t sigtoblocksize)
+mowgli_signal_install_handler_full(int signum, mowgli_signal_handler_t handler, int *sigtoblock, size_t sigtoblocksize)
{
struct sigaction action, old_action;
+
size_t i;
action.sa_handler = handler;
diff --git a/src/libmowgli/base/mowgli_signal.h b/src/libmowgli/base/mowgli_signal.h
index b194d8d..1c7f33e 100644
--- a/src/libmowgli/base/mowgli_signal.h
+++ b/src/libmowgli/base/mowgli_signal.h
@@ -24,7 +24,7 @@
#ifndef __MOWGLI_SIGNAL_H__
#define __MOWGLI_SIGNAL_H__
-typedef void (*mowgli_signal_handler_t) (int);
+typedef void (*mowgli_signal_handler_t)(int);
extern mowgli_signal_handler_t mowgli_signal_install_handler(int signum, mowgli_signal_handler_t handler);
diff --git a/src/libmowgli/base/random.c b/src/libmowgli/base/random.c
index b316033..a183057 100644
--- a/src/libmowgli/base/random.c
+++ b/src/libmowgli/base/random.c
@@ -27,9 +27,9 @@
/* period parameters */
#define N 624
#define M 397
-#define MATRIX_A 0x9908b0dfUL /* constant vector a */
-#define UPPER_MASK 0x80000000UL /* most significant w-r bits */
-#define LOWER_MASK 0x7fffffffUL /* least significant r bits */
+#define MATRIX_A 0x9908b0dfUL /* constant vector a */
+#define UPPER_MASK 0x80000000UL /* most significant w-r bits */
+#define LOWER_MASK 0x7fffffffUL /* least significant r bits */
/* mowgli_random_t contains state data which is private */
struct mowgli_random_
@@ -42,20 +42,24 @@ struct mowgli_random_
static mowgli_object_class_t klass;
/* initialization */
-void mowgli_random_bootstrap(void)
+void
+mowgli_random_bootstrap(void)
{
mowgli_object_class_init(&klass, "mowgli_random_t", NULL, FALSE);
}
/* construction and destruction. */
-mowgli_random_t *mowgli_random_create(void)
+mowgli_random_t *
+mowgli_random_create(void)
{
return mowgli_random_create_with_seed(time(NULL));
}
-mowgli_random_t *mowgli_random_create_with_seed(unsigned int seed)
+mowgli_random_t *
+mowgli_random_create_with_seed(unsigned int seed)
{
mowgli_random_t *out = mowgli_alloc(sizeof(mowgli_random_t));
+
mowgli_object_init(mowgli_object(out), NULL, &klass, NULL);
mowgli_random_reseed(out, seed);
@@ -64,11 +68,13 @@ mowgli_random_t *mowgli_random_create_with_seed(unsigned int seed)
}
/* reset seed */
-void mowgli_random_reseed(mowgli_random_t *self, unsigned int seed)
+void
+mowgli_random_reseed(mowgli_random_t *self, unsigned int seed)
{
return_if_fail(self != NULL);
self->mt[0] = seed & 0xffffffffUL;
+
for (self->mti = 1; self->mti < N; self->mti++)
{
self->mt[self->mti] = (1812433253UL * (self->mt[self->mti - 1] ^ (self->mt[self->mti - 1] >> 30)) + self->mti);
@@ -77,7 +83,8 @@ void mowgli_random_reseed(mowgli_random_t *self, unsigned int seed)
}
/* number retrieval */
-unsigned int mowgli_random_int(mowgli_random_t *self)
+unsigned int
+mowgli_random_int(mowgli_random_t *self)
{
unsigned int y;
static unsigned int mag01[2] = { 0x0UL, MATRIX_A };
@@ -97,7 +104,7 @@ unsigned int mowgli_random_int(mowgli_random_t *self)
for (; t < N - 1; t++)
{
y = (self->mt[t] & UPPER_MASK) | (self->mt[t + 1] & LOWER_MASK);
- self->mt[t] = self->mt[t + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1U];
+ self->mt[t] = self->mt[t + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1U];
}
y = (self->mt[N - 1] & UPPER_MASK) | (self->mt[0] & LOWER_MASK);
@@ -116,7 +123,8 @@ unsigned int mowgli_random_int(mowgli_random_t *self)
return y;
}
-int mowgli_random_int_ranged(mowgli_random_t *self, int begin, int end)
+int
+mowgli_random_int_ranged(mowgli_random_t *self, int begin, int end)
{
unsigned int dist = end - begin;
unsigned int max, ret;
@@ -129,13 +137,16 @@ int mowgli_random_int_ranged(mowgli_random_t *self, int begin, int end)
remain -= dist;
max = 0xFFFFFFFFU - remain;
- } else
+ }
+ else
+ {
max = dist - 1;
+ }
do
- {
ret = mowgli_random_int(self);
- } while (ret > max);
+
+ while (ret > max);
ret %= dist;
diff --git a/src/libmowgli/base/random.h b/src/libmowgli/base/random.h
index ea53dd7..9153478 100644
--- a/src/libmowgli/base/random.h
+++ b/src/libmowgli/base/random.h
@@ -26,10 +26,8 @@
/* mowgli_random_t contains state data which is private */
struct mowgli_random_;
-typedef struct mowgli_random_ mowgli_random_t;
-/* object class initialization. */
-extern void mowgli_random_bootstrap(void);
+typedef struct mowgli_random_ mowgli_random_t;
/* construction and destruction. */
extern mowgli_random_t *mowgli_random_create(void);