mirror of
https://github.com/roc-lang/roc.git
synced 2025-12-10 11:09:50 +00:00
pass number straight away + renames for clarity
This commit is contained in:
parent
d91a90774b
commit
1dd46c985f
5 changed files with 15 additions and 22 deletions
|
|
@ -9,7 +9,7 @@
|
|||
#include <stdint.h>
|
||||
|
||||
#include <jni.h>
|
||||
#include "HelloJNI.h"
|
||||
#include "javaSource_Greeter.h"
|
||||
|
||||
|
||||
void *roc_alloc(size_t size, unsigned int alignment)
|
||||
|
|
@ -207,19 +207,15 @@ size_t roc_str_len(struct RocStr str)
|
|||
}
|
||||
}
|
||||
|
||||
extern void roc__mainForHost_1_exposed_generic(struct RocBytes *ret, struct RocBytes *arg);
|
||||
extern void roc__stringInterpolation_1_exposed_generic(struct RocBytes *ret, int32_t arg);
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_javaSource_Greeter_sayHello
|
||||
(JNIEnv *env, jobject thisObj, jint num)
|
||||
{
|
||||
char native_string[256] = {0};
|
||||
sprintf(native_string, "%d", num);
|
||||
|
||||
struct RocBytes arg = init_rocbytes((uint8_t *)native_string, strlen(native_string));
|
||||
struct RocBytes ret = {0};
|
||||
|
||||
// Call the Roc function to populate `ret`'s bytes.
|
||||
roc__mainForHost_1_exposed_generic(&ret, &arg);
|
||||
roc__stringInterpolation_1_exposed_generic(&ret, (int32_t) num);
|
||||
|
||||
// java being java making this a lot harder than it needs to be
|
||||
// https://stackoverflow.com/questions/32205446/getting-true-utf-8-characters-in-java-jni
|
||||
|
|
|
|||
|
|
@ -41,4 +41,4 @@ clang \
|
|||
clang -shared -o libinterop.so bridge.o -L. -lhello
|
||||
|
||||
# then run
|
||||
# java javaSource.Greeter
|
||||
java javaSource.Greeter
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
app "libhello"
|
||||
packages { pf: "platform/main.roc" }
|
||||
imports []
|
||||
provides [main] to pf
|
||||
provides [interpolate] to pf
|
||||
|
||||
main : U64 -> Str
|
||||
main = \num ->
|
||||
interpolate : I32 -> Str
|
||||
interpolate = \num ->
|
||||
if num == 0 then
|
||||
"I need a positive number here!"
|
||||
"I need a non-zero number here!"
|
||||
else
|
||||
str = Num.toStr num
|
||||
"The number was \(str), OH YEAH!!! 🤘🤘"
|
||||
|
|
|
|||
|
|
@ -80,12 +80,12 @@ size_t roc_str_len(struct RocStr str) {
|
|||
}
|
||||
}
|
||||
|
||||
extern void roc__mainForHost_1_exposed_generic(struct RocStr *string);
|
||||
extern void roc__stringInterpolation_1_exposed_generic(struct RocStr *string);
|
||||
|
||||
int main() {
|
||||
|
||||
struct RocStr str;
|
||||
roc__mainForHost_1_exposed_generic(&str);
|
||||
roc__stringInterpolation_1_exposed_generic(&str);
|
||||
|
||||
// Determine str_len and the str_bytes pointer,
|
||||
// taking into account the small string optimization.
|
||||
|
|
|
|||
|
|
@ -1,12 +1,9 @@
|
|||
platform "jvm-interop"
|
||||
requires {} { main : arg -> ret | arg has Decoding }
|
||||
requires {} { interpolate : arg -> ret }
|
||||
exposes []
|
||||
packages {}
|
||||
imports [Json]
|
||||
provides [mainForHost]
|
||||
imports []
|
||||
provides [stringInterpolation]
|
||||
|
||||
mainForHost : List U8 -> Str
|
||||
mainForHost = \json ->
|
||||
when Decode.fromBytes json Json.fromUtf8 is
|
||||
Ok arg -> main arg
|
||||
Err _ -> "Decoding Error"
|
||||
stringInterpolation : I32 -> Str
|
||||
stringInterpolation = \arg -> interpolate arg
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue