summaryrefslogtreecommitdiffstatshomepage
path: root/py/misc.h
diff options
context:
space:
mode:
authorDamien <damien.p.george@gmail.com>2013-10-04 19:53:11 +0100
committerDamien <damien.p.george@gmail.com>2013-10-04 19:53:11 +0100
commit429d71943d6b94c7dc3c40a39ff1a09742c77dc2 (patch)
treeb0fd643076254656c358806d7e47c18f796a54f3 /py/misc.h
downloadmicropython-429d71943d6b94c7dc3c40a39ff1a09742c77dc2.tar.gz
micropython-429d71943d6b94c7dc3c40a39ff1a09742c77dc2.zip
Initial commit.
Diffstat (limited to 'py/misc.h')
-rw-r--r--py/misc.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/py/misc.h b/py/misc.h
new file mode 100644
index 0000000000..9ba80a5c37
--- /dev/null
+++ b/py/misc.h
@@ -0,0 +1,91 @@
+// a mini library of useful types and functions
+
+#ifndef _INCLUDED_MINILIB_H
+#define _INCLUDED_MINILIB_H
+
+/** types *******************************************************/
+
+typedef int bool;
+enum {
+ false = 0,
+ true = 1
+};
+
+typedef unsigned char byte;
+typedef unsigned int uint;
+
+/** memomry allocation ******************************************/
+
+#define m_new(type, num) ((type*)(m_malloc(sizeof(type) * (num))))
+#define m_new0(type, num) ((type*)(m_malloc0(sizeof(type) * (num))))
+#define m_renew(type, ptr, num) ((type*)(m_realloc((ptr), sizeof(type) * (num))))
+
+void m_free(void *ptr);
+void *m_malloc(int num_bytes);
+void *m_malloc0(int num_bytes);
+void *m_realloc(void *ptr, int num_bytes);
+
+int m_get_total_bytes_allocated();
+
+/** unichar / UTF-8 *********************************************/
+
+typedef int unichar; // TODO
+
+unichar g_utf8_get_char(const char *s);
+char *g_utf8_next_char(const char *s);
+
+bool g_unichar_isspace(unichar c);
+bool g_unichar_isalpha(unichar c);
+bool g_unichar_isprint(unichar c);
+bool g_unichar_isdigit(unichar c);
+
+//char *g_strdup(const char *s);
+
+/** blob ********************************************************/
+
+/*
+unsigned short decode_le16(byte *buf);
+unsigned int decode_le32(byte *buf);
+void encode_le16(byte *buf, unsigned short i);
+void encode_le32(byte *buf, unsigned int i);
+*/
+
+/** string ******************************************************/
+
+/*
+#define streq(s1, s2) (strcmp((s1), (s2)) == 0)
+*/
+
+/** variable string *********************************************/
+
+/*
+typedef struct _vstr_t vstr_t;
+
+vstr_t *vstr_new();
+void vstr_free(vstr_t *vstr);
+void vstr_reset(vstr_t *vstr);
+bool vstr_had_error(vstr_t *vstr);
+char *vstr_str(vstr_t *vstr);
+int vstr_len(vstr_t *vstr);
+void vstr_hint_size(vstr_t *vstr, int size);
+char *vstr_add_len(vstr_t *vstr, int len);
+void vstr_add_str(vstr_t *vstr, const char *str);
+void vstr_add_strn(vstr_t *vstr, const char *str, int len);
+void vstr_add_byte(vstr_t *vstr, byte v);
+void vstr_add_le16(vstr_t *vstr, unsigned short v);
+void vstr_add_le32(vstr_t *vstr, unsigned int v);
+void vstr_cut_tail(vstr_t *vstr, int len);
+void vstr_printf(vstr_t *vstr, const char *fmt, ...);
+*/
+
+/** unique string ***********************************************/
+
+typedef unsigned int qstr;
+
+void qstr_init();
+qstr qstr_from_str_static(const char *str);
+qstr qstr_from_str_take(char *str);
+qstr qstr_from_strn_copy(const char *str, int len);
+const char* qstr_str(qstr qstr);
+
+#endif // _INCLUDED_MINILIB_H