aboutsummaryrefslogtreecommitdiffstats
path: root/cshared/std_cshared.go
diff options
context:
space:
mode:
Diffstat (limited to 'cshared/std_cshared.go')
-rw-r--r--cshared/std_cshared.go143
1 files changed, 0 insertions, 143 deletions
diff --git a/cshared/std_cshared.go b/cshared/std_cshared.go
deleted file mode 100644
index 90514b8..0000000
--- a/cshared/std_cshared.go
+++ /dev/null
@@ -1,143 +0,0 @@
-// +build ignore
-package main
-
-import (
- "C"
- "reflect"
- "strings"
-)
-
-//export c_std_map_get_str_str
-func c_std_map_get_str_str(m uint64, key string) *C.char {
- obj, ok := GetObject(Handle(m))
- if !ok {
- return nil
- }
- mapval := reflect.ValueOf(obj)
- if mapval.Kind() == reflect.Ptr {
- mapval = mapval.Elem()
- }
- if mapval.Kind() != reflect.Map {
- return nil
- }
- val := mapval.MapIndex(reflect.ValueOf(key))
- if !val.IsValid() || SafeIsNil(val) {
- return nil
- }
- if (val.Kind() == reflect.Slice || val.Kind() == reflect.Array) &&
- val.Type().Elem().Kind() == reflect.Uint8 {
- arr := make([]byte, val.Len(), val.Len())
- reflect.Copy(reflect.ValueOf(arr), val)
- return CBytes(arr)
- }
- return C.CString(val.String())
-}
-
-//export c_std_map_get_str_obj
-func c_std_map_get_str_obj(m uint64, key string) uint64 {
- obj, ok := GetObject(Handle(m))
- if !ok {
- return IH
- }
- mapval := reflect.ValueOf(obj)
- if mapval.Kind() == reflect.Ptr {
- mapval = mapval.Elem()
- }
- if mapval.Kind() != reflect.Map {
- return IH
- }
- val := mapval.MapIndex(reflect.ValueOf(key))
- if !val.IsValid() || SafeIsNil(val) {
- return IH
- }
- val_handle := RegisterObject(val.Interface())
- return uint64(val_handle)
-}
-
-//export c_std_map_get_obj_obj
-func c_std_map_get_obj_obj(m uint64, key uint64) uint64 {
- obj, ok := GetObject(Handle(m))
- if !ok {
- return IH
- }
- mapval := reflect.ValueOf(obj)
- if mapval.Kind() == reflect.Ptr {
- mapval = mapval.Elem()
- }
- if mapval.Kind() != reflect.Map {
- return IH
- }
- obj, ok = GetObject(Handle(key))
- if !ok {
- return IH
- }
- val := mapval.MapIndex(reflect.ValueOf(obj))
- if !val.IsValid() || SafeIsNil(val) {
- return IH
- }
- val_handle := RegisterObject(val.Interface())
- return uint64(val_handle)
-}
-
-//export c_std_map_keys_str
-func c_std_map_keys_str(m uint64) *C.char {
- obj, ok := GetObject(Handle(m))
- if !ok {
- return nil
- }
- mapval := reflect.ValueOf(obj)
- if mapval.Kind() == reflect.Ptr {
- mapval = mapval.Elem()
- }
- if mapval.Kind() != reflect.Map {
- return nil
- }
- keys := mapval.MapKeys()
- keys_str := make([]string, 0, len(keys))
- for _, k := range keys {
- keys_str = append(keys_str, k.String())
- }
- return C.CString(strings.Join(keys_str, "\xff"))
-}
-
-//export c_std_map_len
-func c_std_map_len(m uint64) int {
- obj, ok := GetObject(Handle(m))
- if !ok {
- return -1
- }
- mapval := reflect.ValueOf(obj)
- if mapval.Kind() == reflect.Ptr {
- mapval = mapval.Elem()
- }
- if mapval.Kind() != reflect.Map {
- return -1
- }
- return mapval.Len()
-}
-
-//export c_std_map_set_str
-func c_std_map_set_str(m uint64, key string, val uint64) {
- obj, ok := GetObject(Handle(m))
- if !ok {
- return
- }
- mapval := reflect.ValueOf(obj)
- if mapval.Kind() == reflect.Ptr {
- mapval = mapval.Elem()
- } else {
- return
- }
- if mapval.Kind() != reflect.Map {
- return
- }
- if val == IH {
- mapval.SetMapIndex(reflect.ValueOf(key), reflect.Value{})
- } else {
- obj, ok := GetObject(Handle(val))
- if !ok {
- return
- }
- mapval.SetMapIndex(reflect.ValueOf(key), reflect.ValueOf(obj))
- }
-}