From a47513aeeb728b6316ba6765afdd7e5adbf4f2e3 Mon Sep 17 00:00:00 2001 From: StevenWdV Date: Fri, 17 Dec 2021 15:21:53 +0100 Subject: Add PHP wrapper, use header for right platform for PHP & Swift, simplify Swift Windows fix --- wrappers/php/src/Impl/GoSlice.php | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 wrappers/php/src/Impl/GoSlice.php (limited to 'wrappers/php/src/Impl/GoSlice.php') diff --git a/wrappers/php/src/Impl/GoSlice.php b/wrappers/php/src/Impl/GoSlice.php new file mode 100644 index 0000000..441b460 --- /dev/null +++ b/wrappers/php/src/Impl/GoSlice.php @@ -0,0 +1,43 @@ +cData = $cData; + FFI::memcpy($cData, $data, $len); + + $slice = $ffi->new('GoSlice'); + if (!$slice) throw new RuntimeException('error allocating buffer'); + $this->slice = $slice; + $slice->data = FFI::addr($cData); // $cData must not be destroyed while $slice is in use + $slice->cap = $slice->len = $len; + } + + public function slice(): CData + { + return $this->slice; + } + + public function __destruct() + { + // Make sure we do not unknowingly use a slice with deallocated data + $this->slice->data = null; + $this->slice->cap = $this->slice->len = 0; + } +} -- cgit v1.2.3