diff options
author | Damien <damien.p.george@gmail.com> | 2013-10-04 19:53:11 +0100 |
---|---|---|
committer | Damien <damien.p.george@gmail.com> | 2013-10-04 19:53:11 +0100 |
commit | 429d71943d6b94c7dc3c40a39ff1a09742c77dc2 (patch) | |
tree | b0fd643076254656c358806d7e47c18f796a54f3 /py/misc.h | |
download | micropython-429d71943d6b94c7dc3c40a39ff1a09742c77dc2.tar.gz micropython-429d71943d6b94c7dc3c40a39ff1a09742c77dc2.zip |
Initial commit.
Diffstat (limited to 'py/misc.h')
-rw-r--r-- | py/misc.h | 91 |
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 |