From ceaf9841efd7171be1091fd762e4203ddee9c73e Mon Sep 17 00:00:00 2001 From: Alexey Stepanov Date: Tue, 9 Aug 2016 14:48:55 +0300 Subject: [PATCH] translator: add sources for kotlinclib --- .../resources/kotlib/linked.sources/array_c.c | 32 +++++++++++ .../kotlib/linked.sources/primitives_c.c | 57 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 translator/src/main/resources/kotlib/linked.sources/array_c.c create mode 100644 translator/src/main/resources/kotlib/linked.sources/primitives_c.c diff --git a/translator/src/main/resources/kotlib/linked.sources/array_c.c b/translator/src/main/resources/kotlib/linked.sources/array_c.c new file mode 100644 index 00000000000..8b80a3534cc --- /dev/null +++ b/translator/src/main/resources/kotlib/linked.sources/array_c.c @@ -0,0 +1,32 @@ +extern char *malloc(int size); + +int malloc_array(int x) { + return (int) malloc(x); +} + +char kotlinclib_get_byte(int data, int index) { + return *((char *) data + index); +} + +void kotlinclib_set_byte(int data, int index, char value) { + char *ptr = (char *) data; + *(ptr + index) = value; +} + +int kotlinclib_get_int(int data, int index) { + return *((int *) data + index); +} + +void kotlinclib_set_int(int data, int index, int value) { + int *ptr = (int *) data; + *(ptr + index) = value; +} + +short kotlinclib_get_short(int data, int index) { + return *((short *) data + index); +} + +void kotlinclib_set_short(int data, int index, short value) { + short *ptr = (short *) data; + *(ptr + index) = value; +} \ No newline at end of file diff --git a/translator/src/main/resources/kotlib/linked.sources/primitives_c.c b/translator/src/main/resources/kotlib/linked.sources/primitives_c.c new file mode 100644 index 00000000000..5f1eb3c2f52 --- /dev/null +++ b/translator/src/main/resources/kotlib/linked.sources/primitives_c.c @@ -0,0 +1,57 @@ +#define MAKE_CONVERT(from, from_type, to, to_type) to_type kotlinclib_ ## from ## To ## to ( from_type value ) { return (to_type) value;} + + +MAKE_CONVERT(int, int, Byte, char) +MAKE_CONVERT(int, int, Char, char) +MAKE_CONVERT(int, int, Short, short) +MAKE_CONVERT(int, int, Long, long) +MAKE_CONVERT(int, int, Float, float) +MAKE_CONVERT(int, int, Double, double) + + +MAKE_CONVERT(byte, char, Char, char) +MAKE_CONVERT(byte, char, Short, short) +MAKE_CONVERT(byte, char, Int, int) +MAKE_CONVERT(byte, char, Long, long) +MAKE_CONVERT(byte, char, Float, float) +MAKE_CONVERT(byte, char, Double, double) + + +MAKE_CONVERT(char, char, Byte, char) +MAKE_CONVERT(char, char, Short, short) +MAKE_CONVERT(char, char, Int, int) +MAKE_CONVERT(char, char, Long, long) +MAKE_CONVERT(char, char, Float, float) +MAKE_CONVERT(char, char, Double, double) + + +MAKE_CONVERT(short, short, Byte, char) +MAKE_CONVERT(short, short, Char, char) +MAKE_CONVERT(short, short, Int, int) +MAKE_CONVERT(short, short, Long, long) +MAKE_CONVERT(short, short, Float, float) +MAKE_CONVERT(short, short, Double, double) + + +MAKE_CONVERT(long, long, Byte, char) +MAKE_CONVERT(long, long, Char, char) +MAKE_CONVERT(long, long, Short, short) +MAKE_CONVERT(long, long, Int, int) +MAKE_CONVERT(long, long, Float, float) +MAKE_CONVERT(long, long, Double, double) + + +MAKE_CONVERT(float, float, Byte, char) +MAKE_CONVERT(float, float, Char, char) +MAKE_CONVERT(float, float, Short, short) +MAKE_CONVERT(float, float, Int, int) +MAKE_CONVERT(float, float, Long, long) +MAKE_CONVERT(float, float, Double, double) + + +MAKE_CONVERT(double, double, Byte, char) +MAKE_CONVERT(double, double, Char, char) +MAKE_CONVERT(double, double, Short, short) +MAKE_CONVERT(double, double, Int, int) +MAKE_CONVERT(double, double, Long, long) +MAKE_CONVERT(double, double, Float, float) \ No newline at end of file