ssob/allocator.go

28 lines
463 B
Go

package ssob
import (
"errors"
"reflect"
)
func allocType(out reflect.Value) (err error) {
if out.Type().Kind() != reflect.Ptr || out.IsNil() {
return errors.New("ssob: Error allocating type (Got nil pointer)")
}
t := out.Elem().Type()
ret := reflect.New(t)
retp := ret
for {
if reflect.Ptr != t.Kind() {
break
}
retp = retp.Elem()
t = retp.Type().Elem()
retp.Set(reflect.New(t))
}
out.Elem().Set(reflect.Indirect(ret))
return nil
}