ldmc/morphisms/test.c

55 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 <stdlib.h>
#include <string.h>
#include <morphisms/length-prefix.h>
#include <morphisms/posint.h>
int main( int argc, char * argv[] ) {
char * int1 = malloc(4096);
struct LengthPrefixUInt8Array * int2 = malloc(4096);
struct LengthPrefixUInt64Array * int3 = malloc(4096);
struct LengthPrefixUInt64Array * int4 = malloc(4096);
struct LengthPrefixUInt64Array * int5 = malloc(4096);
struct LengthPrefixUInt64Array * int6 = malloc(4096);
struct LengthPrefixUInt8Array * int7 = malloc(4096);
char * int8 = malloc(4096);
// ~ <PosInt 10 BigEndian> ~ [~<ValueDelim '\0'> <Digit 10> ~ Char ~ Ascii]
scanf("%s", int1);
// morph to
// ~ <PosInt 10 BigEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 10> ~ Char ~ Ascii]
morph_string_as_nullterm_to_length_prefix( int1, int2 );
// morph to
// ~ <PosInt 10 BigEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 10> ~ _10 ~ x86.UInt64]
int3->len = int2->len;
for( uint64_t i = 0; i < int2->len; ++i )
morph_digit_as_char_to_uint64( &int2->items[i], &int3->items[i] );
// morph to
// ~ <PosInt 10 LittleEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 10> ~ _10 ~ x86.UInt64]
morph_posint_endianness( 10, int3, int4 );
// morph to
// ~ <PosInt 16 LittleEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 16> ~ _16 ~ x86.UInt64]
morph_posint_radix( 10, 16, int4, int5 );
// morph to
// ~ <PosInt 16 BigEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 16> ~ _16 ~ x86.UInt64]
morph_posint_endianness( 16, int5, int6 );
// morph to
// ~ <PosInt 16 BigEndian> ~ [~<LengthPrefix x86.UInt64> <Digit 16> ~ Char ~ Ascii]
int7->len = int6->len;
for( uint64_t i = 0; i < int6->len; ++i )
morph_digit_as_uint64_to_char( &int6->items[i], &int7->items[i] );
// morph to
// ~ <PosInt 16 BigEndian> ~ [~<ValueDelim '\0'> <Digit 16> ~ Char ~ Ascii]
morph_string_as_length_prefix_to_nullterm( int7, int8 );
printf("%s\n", int8);
return 0;
}