Compare commits
2 commits
f67f8c0118
...
4b824cbb7c
Author | SHA1 | Date | |
---|---|---|---|
4b824cbb7c | |||
1d10b1bf61 |
2 changed files with 14 additions and 26 deletions
morphisms
|
@ -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) \
|
||||
|
|
|
@ -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>
|
||||
|
||||
```
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue