Hello Swift community,
I have this C code in local library (.so) and make systemLibrary for it in Package.swift.
The C library does malloc / free in their functions.
How can I do what main.c does, call this C library in Swift?
Thanks
// ---- hello.h ----
#ifndef hello_h
#define hello_h
void hello_init(void **ptr, size_t size);
void hello_work(void **ptr, size_t size);
void hello_cleanup(void **ptr);
#endif
// ---- hello.c ----
#include <stdlib.h>
#include <string.h>
#include "hello.h"
void hello_init(void **mem, size_t size) {
*mem = malloc(size);
}
void hello_work(void **mem, size_t size) {
if (*mem) {
char *tmp = *mem;
memcpy(tmp, "hello world", size - 1);
tmp[size - 1] = 0;
}
}
void hello_cleanup(void **mem) {
free(*mem);
*mem = NULL;
}
// ---- main.c ----
// How to achieve this in Swift?
#include <stdio.h>
#include "hello.h"
void *memory = NULL;
const size_t MEMORY_SIZE = 1024;
int main() {
hello_init(&memory, MEMORY_SIZE);
hello_work(&memory, MEMORY_SIZE);
printf("%s\n", (char*)memory);
hello_cleanup(&memory);
}