darwin: fix the C. function declarations (#9194)

pull/9199/head
Taegon Kim 2021-03-09 00:18:26 +09:00 committed by GitHub
parent b64d781a20
commit 4d24cb0158
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 13 deletions

View File

@ -6,46 +6,46 @@ module darwin
#flag -framework Cocoa #flag -framework Cocoa
#flag -framework Carbon #flag -framework Carbon
struct C.NSString { } struct C.NSString {}
#include "@VROOT/vlib/darwin/darwin.m" #include "@VROOT/vlib/darwin/darwin.m"
fn C.nsstring2(s string) voidptr fn C.nsstring2(s string) voidptr
// macOS and iOS helpers // macOS and iOS helpers
//pub fn nsstring(s string) *C.NSString { // pub fn nsstring(s string) *C.NSString {
pub fn nsstring(s string) voidptr { pub fn nsstring(s string) voidptr {
return C.nsstring2(s) return C.nsstring2(s)
// println('ns $s len=$s.len') // println('ns $s len=$s.len')
//# return [ [ NSString alloc ] initWithBytesNoCopy:s.str length:s.len //# return [ [ NSString alloc ] initWithBytesNoCopy:s.str length:s.len
//# encoding:NSUTF8StringEncoding freeWhenDone: false]; //# encoding:NSUTF8StringEncoding freeWhenDone: false];
//return 0 // return 0
//ns := C.alloc_NSString() // ns := C.alloc_NSString()
//return ns.initWithBytesNoCopy(s.str, length: s.len, // return ns.initWithBytesNoCopy(s.str, length: s.len,
//encoding: NSUTF8StringEncoding, freeWhenDone: false) // encoding: NSUTF8StringEncoding, freeWhenDone: false)
} }
// returns absolute path to folder where your resources should / will reside // returns absolute path to folder where your resources should / will reside
// for .app packages: .../my.app/Contents/Resources // for .app packages: .../my.app/Contents/Resources
// for cli: .../parent_folder/Resources // for cli: .../parent_folder/Resources
fn C.CFBundleCopyResourcesDirectoryURL() byteptr fn C.CFBundleCopyResourcesDirectoryURL(bundle voidptr) byteptr
fn C.CFBundleGetMainBundle() voidptr fn C.CFBundleGetMainBundle() voidptr
fn C.CFURLGetFileSystemRepresentation() int fn C.CFURLGetFileSystemRepresentation(url byteptr, resolve_against_base bool, buffer byteptr, buffer_size int) int
fn C.CFRelease() fn C.CFRelease(url byteptr)
pub fn resource_path() string { pub fn resource_path() string {
main_bundle := C.CFBundleGetMainBundle() main_bundle := C.CFBundleGetMainBundle()
resource_dir_url := C.CFBundleCopyResourcesDirectoryURL(main_bundle) resource_dir_url := C.CFBundleCopyResourcesDirectoryURL(main_bundle)
if isnil(resource_dir_url) { if isnil(resource_dir_url) {
panic('CFBundleCopyResourcesDirectoryURL failed') panic('CFBundleCopyResourcesDirectoryURL failed')
} }
buffer_size := 4096 buffer_size := 4096
mut buffer := malloc(buffer_size) mut buffer := unsafe{ malloc(buffer_size) }
buffer[0] = 0 unsafe{ buffer[0] = 0 }
conv_result := C.CFURLGetFileSystemRepresentation(resource_dir_url, true, buffer, buffer_size) conv_result := C.CFURLGetFileSystemRepresentation(resource_dir_url, true, buffer,
buffer_size)
if conv_result == 0 { if conv_result == 0 {
panic('CFURLGetFileSystemRepresentation failed') panic('CFURLGetFileSystemRepresentation failed')
} }