zorldo

Goofing around with Ebiten
git clone git://bsandro.tech/zorldo
Log | Files | Refs | README

str.go (1073B)


      1 // Copyright 2020 The Ebiten Authors
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //     http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 //go:build android || ios
     16 // +build android ios
     17 
     18 package gles
     19 
     20 // #include <stdlib.h>
     21 import "C"
     22 
     23 import (
     24 	"unsafe"
     25 )
     26 
     27 func cString(str string) (uintptr, func()) {
     28 	ptr := C.CString(str)
     29 	return uintptr(unsafe.Pointer(ptr)), func() { C.free(unsafe.Pointer(ptr)) }
     30 }
     31 
     32 func cStringPtr(str string) (uintptr, func()) {
     33 	s, free := cString(str)
     34 	ptr := C.malloc(C.size_t(unsafe.Sizeof((*int)(nil))))
     35 	*(*uintptr)(ptr) = s
     36 	return uintptr(ptr), func() {
     37 		free()
     38 		C.free(ptr)
     39 	}
     40 }