Compare commits

...

2 commits

2 changed files with 14 additions and 26 deletions
morphisms

View file

@ -3,7 +3,6 @@
#include <stdio.h>
#include <stdint.h>
// Macro to define length-prefixed array structures and functions
#define DEFINE_LENGTH_PREFIX_ARRAY(LEN_TYPE, ITEM_TYPE) \
typedef struct { \
LEN_TYPE len; \
@ -40,29 +39,18 @@
printf("\n"); \
}
#define DEFINE_ALL_LENGTH_PREFIX_ARRAYS(LEN_TYPE) \
DEFINE_LENGTH_PREFIX_ARRAY(LEN_TYPE, uint8_t) \
DEFINE_LENGTH_PREFIX_ARRAY(LEN_TYPE, uint16_t) \
DEFINE_LENGTH_PREFIX_ARRAY(LEN_TYPE, uint32_t) \
DEFINE_LENGTH_PREFIX_ARRAY(LEN_TYPE, uint64_t)
DEFINE_ALL_LENGTH_PREFIX_ARRAYS(uint8_t)
DEFINE_ALL_LENGTH_PREFIX_ARRAYS(uint16_t)
DEFINE_ALL_LENGTH_PREFIX_ARRAYS(uint32_t)
DEFINE_ALL_LENGTH_PREFIX_ARRAYS(uint64_t)
// Define all combinations of length and item types
DEFINE_LENGTH_PREFIX_ARRAY(uint8_t, uint8_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint8_t, uint16_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint8_t, uint32_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint8_t, uint64_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint16_t, uint8_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint16_t, uint16_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint16_t, uint32_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint16_t, uint64_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint32_t, uint8_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint32_t, uint16_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint32_t, uint32_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint32_t, uint64_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint64_t, uint8_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint64_t, uint16_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint64_t, uint32_t)
DEFINE_LENGTH_PREFIX_ARRAY(uint64_t, uint64_t)
/*
* Map
*/
// Macro to define map function between different item types
#define DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, SRC_ITEM_TYPE, DST_ITEM_TYPE) \
static inline int length_prefix_##LEN_TYPE##_array_map_##SRC_ITEM_TYPE##_to_##DST_ITEM_TYPE( \
int (*f)(SRC_ITEM_TYPE const * restrict, DST_ITEM_TYPE * restrict), \
@ -78,12 +66,12 @@ DEFINE_LENGTH_PREFIX_ARRAY(uint64_t, uint64_t)
}
#define DEFINE_ALL_MAPS(LEN_TYPE) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint8_t, uint8_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint8_t, uint8_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint8_t, uint16_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint8_t, uint32_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint8_t, uint64_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint16_t, uint8_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint16_t, uint16_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint16_t, uint16_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint16_t, uint32_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint16_t, uint64_t) \
DEFINE_LENGTH_PREFIX_ARRAY_MAP(LEN_TYPE, uint32_t, uint8_t) \

View file

@ -34,7 +34,7 @@ morph_string_as_utf8_to_ascii ()
morph_string_as_ascii_to_utf32 ()
<Seq ~ <ValueTerminated 0> Char~Ascii~native.UInt8>
--> <Seq Char~Unicode>
~ UTF-32LE
~ UTF-32
~ <Seq~<ValueTerminated 0> native.UInt32>
```
while( *src ) { *dst++ = *src++; }
@ -49,7 +49,7 @@ morph_string_as_utf8_to_utf32 ()
~ <Seq~<ValueTerminated 0> native.UInt8>
--> <Seq Char~Unicode>
~ UTF-32LE
~ UTF-32
~ <Seq~<ValueTerminated 0> native.UInt32>
```