2019-12-17 00:42:05 +01:00
|
|
|
package ssob
|
|
|
|
|
|
|
|
import (
|
2021-08-21 22:29:18 +02:00
|
|
|
"fmt"
|
2019-12-17 00:42:05 +01:00
|
|
|
"reflect"
|
|
|
|
)
|
|
|
|
|
|
|
|
func allocType(out reflect.Value) (err error) {
|
|
|
|
if out.Type().Kind() != reflect.Ptr || out.IsNil() {
|
2021-08-21 22:29:18 +02:00
|
|
|
return fmt.Errorf("ssob: Error allocating type (Got nil pointer): %w", ErrValueInvalid)
|
2019-12-17 00:42:05 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
|
}
|