From d35f8a55b66d88d992b733806ca5159d36a812a2 Mon Sep 17 00:00:00 2001 From: unknown <> Date: Mon, 17 Nov 2014 20:15:24 +0000 Subject: [PATCH] autocommit for files dated 2014-11-17 20:15:24 --- index.html | 41 ++++++++++++ tests/index.html | 43 +++++++++++++ util.h | 161 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 245 insertions(+) create mode 100644 index.html create mode 100644 tests/index.html create mode 100644 util.h diff --git a/index.html b/index.html new file mode 100644 index 0000000..fe77e08 --- /dev/null +++ b/index.html @@ -0,0 +1,41 @@ +/ + +

/

+ + diff --git a/tests/index.html b/tests/index.html new file mode 100644 index 0000000..c994a33 --- /dev/null +++ b/tests/index.html @@ -0,0 +1,43 @@ +/tests/ + +

/tests/

+ + diff --git a/util.h b/util.h new file mode 100644 index 0000000..ff30f1c --- /dev/null +++ b/util.h @@ -0,0 +1,161 @@ +#ifndef GMCC_UTIL_HDR +#define GMCC_UTIL_HDR +#include +#include + +#include "list.h" + +/* + * Type: string_t + * A type capable of representing a self-resizing string with + * O(1) strlen. + */ +typedef struct string_s string_t; + +/* + * Function: string_create + * Create a string object + */ +string_t *string_create(void); + +/* + * Function: string_buffer + * Return the raw buffer of a string object + */ +char *string_buffer(string_t *string); + +/* + * Function: string_cat + * Append a character to a string object + */ +void string_cat(string_t *string, char ch); + +/* + * Function: string_catf + * Append a formatted string to a string object + */ +void string_catf(string_t *string, const char *fmt, ...); + +/* + * Function: string_quote + * Escape a string's quotes + */ +char *string_quote(char *p); + +/* + * Function: string_length + * Get the length of the given string + */ +size_t string_length(string_t *string); + +/* + * Type: table_t + * A key value associative table + */ +typedef struct table_s table_t; + +struct table_s { + list_t *list; + table_t *parent; +}; + +/* + * Function: table_create + * Creates a table_t object + */ +void *table_create(void *parent); + +/* + * Funciton: table_find + * Searches for a given value in the table based on the + * key associated with it. + */ +void *table_find(table_t *table, const char *key); + +/* + * Function: table_insert + * Inserts a value for the given key as an entry in the + * table. + */ +void table_insert(table_t *table, char *key, void *value); + +/* + * Function: table_parent + * Returns the parent opaque object for the given table to + * be used as the argument to a new table. + */ +void *table_parent(table_t *table); + +/* + * Function: table_values + * Generates a list of all the values in the table, useful for + * iterating over the values. + */ +list_t *table_values(table_t *table); + +/* + * Function: table_keys + * Generate a list of all the keys in the table, useful for + * iteration over the keys. + */ +list_t *table_keys(table_t *table); + +/* + * Macro: SENTINEL_TABLE + * Initialize an empty table in place + */ +#define SENTINEL_TABLE ((table_t) { \ + .list = &SENTINEL_LIST, \ + .parent = NULL \ +}) + + +#define MIN(A, B) (((A) < (B)) ? (A) : (B)) +#define MAX(A, B) (((A) > (B)) ? (A) : (B)) + +/* + * Function: memory_allocate + * Allocate some memory + */ +void *memory_allocate(size_t bytes); + +/* + * Structure: pair_t + * A class container describing a pair + */ +typedef struct { + /* Variable: first */ + void *first; + /* Variable: second */ + void *second; +} pair_t; + +/* + * Function: pair_create + * Used to create a . + * + * Parameters: + * first - Pointer to first object + * second - Pointer to second object + * + * Returns: + * A pointer to a constructed containing first and last + * pointers which point to the same address as the ones supplied + * as parameters to this function. + */ +pair_t *pair_create(void *first, void *last); + +/* String utilities */ +int strcasecmp(const char *s1, const char *s2); +int strncasecmp(const char *s1, const char *s2, size_t n); +size_t getline(char **line, size_t *n, FILE *stream); + +/* + * Macro: bool_stringa + * Returns a "true" or "false" for an expression that evaluates to a + * boolean representation enforced with cast-to-bool `!!` + */ +#define bool_string(BOOL) \ + ((!!(BOOL)) ? "true" : "false") + +#endif -- 2.40.0