]> pd.if.org Git - lice/commitdiff
autocommit for files dated 2014-11-17 20:15:24
authorunknown <>
Mon, 17 Nov 2014 20:15:24 +0000 (20:15 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Tue, 25 Oct 2016 16:29:31 +0000 (16:29 +0000)
index.html [new file with mode: 0644]
tests/index.html [new file with mode: 0644]
util.h [new file with mode: 0644]

diff --git a/index.html b/index.html
new file mode 100644 (file)
index 0000000..fe77e08
--- /dev/null
@@ -0,0 +1,41 @@
+<html><head><title>/</title></head>
+<body>
+<h2>/</h2>
+<ul>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/.travis.yml'>.travis.yml</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/EXTENSIONS'>EXTENSIONS</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/LICENSE'>LICENSE</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/Makefile'>Makefile</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/README.md'>README.md</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/STANDARD'>STANDARD</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/arch_amd64.h'>arch_amd64.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/arch_dummy.h'>arch_dummy.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/ast.c'>ast.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/ast.h'>ast.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/conv.c'>conv.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/conv.h'>conv.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/decl.c'>decl.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/gen.c'>gen.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/gen.h'>gen.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/gen_amd64.c'>gen_amd64.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/include/'>include</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/init.c'>init.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/init.h'>init.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/lexer.c'>lexer.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/lexer.h'>lexer.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/lice.c'>lice.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/lice.h'>lice.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/list.c'>list.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/list.h'>list.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/misc/'>misc</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/opt.c'>opt.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/opt.h'>opt.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/parse.c'>parse.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/parse.h'>parse.h</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/test.c'>test.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/testrun.c'>testrun.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/'>tests</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/util.c'>util.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/util.h'>util.h</a></li>
+ </ul>
+</body></html>
diff --git a/tests/index.html b/tests/index.html
new file mode 100644 (file)
index 0000000..c994a33
--- /dev/null
@@ -0,0 +1,43 @@
+<html><head><title>/tests/</title></head>
+<body>
+<h2>/tests/</h2>
+<ul>
+<li><a href='/cgit/cgit.cgi/LICE.git/plain/'>../</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/_Bool.c'>_Bool.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/alignof.c'>alignof.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/args.c'>args.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/arithmetic.c'>arithmetic.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/array.c'>array.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/bitwise.c'>bitwise.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/cast.c'>cast.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/cgoto.c'>cgoto.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/compare.c'>compare.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/compound.c'>compound.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/control.c'>control.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/dl.c'>dl.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/enum.c'>enum.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/es.c'>es.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/extern.c'>extern.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/float.c'>float.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/function.c'>function.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/global.c'>global.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/init.c'>init.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/int.c'>int.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/kandr.c'>kandr.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/line.c'>line.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/literal.c'>literal.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/number.c'>number.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/offsetof.c'>offsetof.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/pointer.c'>pointer.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/returnaddr.c'>returnaddr.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/scope.c'>scope.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/sizeof.c'>sizeof.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/statica.c'>statica.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/struct.c'>struct.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/typeof.c'>typeof.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/types.c'>types.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/union.c'>union.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/varargs.c'>varargs.c</a></li>
+  <li><a href='/cgit/cgit.cgi/LICE.git/plain/tests/void.c'>void.c</a></li>
+ </ul>
+</body></html>
diff --git a/util.h b/util.h
new file mode 100644 (file)
index 0000000..ff30f1c
--- /dev/null
+++ b/util.h
@@ -0,0 +1,161 @@
+#ifndef GMCC_UTIL_HDR
+#define GMCC_UTIL_HDR
+#include <stdbool.h>
+#include <stdio.h>
+
+#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 <pair_t>.
+ *
+ * Parameters:
+ *  first  - Pointer to first object
+ *  second - Pointer to second object
+ *
+ * Returns:
+ *  A pointer to a constructed <pair_t> 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