add cangjie binding (#117)

This commit is contained in:
bakacai
2024-07-27 14:15:23 +08:00
committed by GitHub
parent 28ff8bb8f7
commit 501b6b0d75
7 changed files with 141 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
## ruapu cangjie
当前代码仓颉版本: `0.51.4`
> 仓颉目前处于内测阶段,不保证该代码在更新的仓颉编译器版本中可用
```bash
cd cangjie
cd c-src
cmake .
make
cd ..
cjpm run
```
+10
View File
@@ -0,0 +1,10 @@
cmake_minimum_required(VERSION 3.5)
project(ruapu)
include_directories(../../)
add_library(ruapu
ruapu-binding.c
)
+14
View File
@@ -0,0 +1,14 @@
#define RUAPU_IMPLEMENTATION
#include "ruapu.h"
void ruapu_init_c() {
ruapu_init();
}
int ruapu_supports_c(const char* isa) {
return ruapu_supports(isa);
}
const char* const* ruapu_rua_c() {
return ruapu_rua();
}
+16
View File
@@ -0,0 +1,16 @@
[dependencies]
[package]
cjc-version = "0.51.4"
compile-option = ""
description = "ruapu"
link-option = ""
name = "ruapu_cangjie"
output-type = "executable"
src-dir = ""
target-dir = ""
version = "1.0.0"
package-configuration = {}
[ffi.c]
ruapu = { path = "./c-src/" }
+11
View File
@@ -0,0 +1,11 @@
import ruapu.*
main(): Int64 {
ruapu_init()
let neon_supported = ruapu_supports("neon")
println("supports neon: ${neon_supported}")
let d = ruapu_rua()
for (i in d) {
println(i)
}
return 0
}
+30
View File
@@ -0,0 +1,30 @@
package ruapu
from std import collection.ArrayList
foreign func ruapu_init_c(): Unit
foreign func ruapu_supports_c(s: CString): Int32
foreign func ruapu_rua_c(): CPointer<CString>
public func ruapu_init(): Unit {
unsafe{ ruapu_init_c() }
}
public func ruapu_supports(isa: String): Bool {
var isa_c = unsafe { LibC.mallocCString(isa) }
let result_c = unsafe { ruapu_supports_c(isa_c) }
return result_c == 1
}
public func ruapu_rua(): Array<String> {
var ruaList = ArrayList<String>()
var sp = unsafe { ruapu_rua_c() }
while(!unsafe { sp.read().isNull() }) {
let temp = unsafe { sp.read() }
ruaList.append(temp.toString())
sp = unsafe { sp + 1 }
}
return Array<String>(ruaList)
}