diff --git a/examples/01-uint-example/.gitignore b/examples/01-uint-example/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/examples/01-uint-example/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/examples/01-uint-example/main.c b/examples/01-uint-example/main.c new file mode 100644 index 0000000..2db8422 --- /dev/null +++ b/examples/01-uint-example/main.c @@ -0,0 +1,14 @@ +#include "morphisms.h" + +int main(int argc, char* argv[]) { + if( argc > 1 ) { + uint64_t value; + demarshal( argv[1], &value ); + + uint64_t result = value * value; + + char buf[256]; + marshal( &result, buf ); + printf("%s\n", buf); + } +} diff --git a/examples/01-uint-example/makefile b/examples/01-uint-example/makefile new file mode 100644 index 0000000..528afbf --- /dev/null +++ b/examples/01-uint-example/makefile @@ -0,0 +1,23 @@ +all: build/square +.PHONY: build clean + +build: + mkdir -p build + +build/morphisms.h: build + ldmc \ + -m "marshal: \ + ℕ ~ native.UInt64 \ + --> ℕ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8>" \ +\ + -m "demarshal: \ + ℕ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8> \ + --> ℕ ~ native.UInt64 " \ +\ + >| build/morphisms.h + +build/square: build build/morphisms.h + gcc -Os -I../../morphisms/runtime/include/ -Ibuild main.c -o build/square + +clean: + rm build/ -rf