ldmc/morphisms/posint-dec-to-hex-generated.c

64 lines
2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <stdio.h>
#include <stdint.h>
#include <morphisms/length-prefix.h>
#include <morphisms/posint.h>
__attribute__((noinline))
int morph_posint_radix(
uint8_t * bufA,
uint8_t * bufB
) {
// morph to
// ~ <PosInt 10 BigEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 10> ~ Char ~ Ascii]
{
char const * src = (void*) bufA;
struct LengthPrefixUInt8Array * dst = (void*) bufB;
morph_string_as_nullterm_to_length_prefix( src, dst );
}
// morph to
// ~ <PosInt 10 BigEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 10> ~ _10 ~ x86.UInt64]
{
struct LengthPrefixUInt8Array * src = (void*) bufB;
struct LengthPrefixUInt64Array * dst = (void*) bufA;
length_prefix_array_map_8_to_64( morph_digit_as_char_to_uint64, src, dst );
}
// ~ <PosInt 16 LittleEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 16> ~ _16 ~ x86.UInt64]
{
uint64_t const src_radix = 10;
uint64_t const dst_radix = 16;
struct LengthPrefixUInt64Array * src = (void*) bufB;
struct LengthPrefixUInt64Array * dst = (void*) bufA;
morph_posint_radix_little( src_radix, dst_radix, src, dst );
}
// morph to
// ~ <PosInt 16 BigEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 16> ~ Char ~ Ascii]
{
struct LengthPrefixUInt64Array * src = (void*) bufB;
struct LengthPrefixUInt8Array * dst = (void*) bufA;
length_prefix_array_map_64_to_8( morph_digit_as_uint64_to_char, src, dst );
}
// morph to
// ~ <PosInt 16 BigEndian> ~ [~<ValueDelim '\0'> <Digit 16> ~ Char ~ Ascii]
{
struct LengthPrefixUInt8Array * src = (void*) bufA;
char * dst = (void*) bufB;
morph_string_as_length_prefix_to_nullterm( src, dst );
}
return 0;
}
int main() {
uint8_t bufA[1024];
uint8_t bufB[1024];
scanf("%s", bufA);
morph_posint_radix( bufA, bufB );
printf("%s\n", bufB);
return 0;
}