gotosocial/vendor/github.com/uptrace/bun/internal/map_key.go
dependabot[bot] afd5f8a80a
[chore]: Bump github.com/uptrace/bun/dialect/sqlitedialect
Bumps [github.com/uptrace/bun/dialect/sqlitedialect](https://github.com/uptrace/bun) from 1.2.6 to 1.2.8.
- [Release notes](https://github.com/uptrace/bun/releases)
- [Changelog](https://github.com/uptrace/bun/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uptrace/bun/compare/v1.2.6...v1.2.8)

---
updated-dependencies:
- dependency-name: github.com/uptrace/bun/dialect/sqlitedialect
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-14 13:12:59 +00:00

67 lines
1.2 KiB
Go

package internal
import "reflect"
var ifaceType = reflect.TypeFor[interface{}]()
type MapKey struct {
iface interface{}
}
func NewMapKey(is []interface{}) MapKey {
return MapKey{
iface: newMapKey(is),
}
}
func newMapKey(is []interface{}) interface{} {
switch len(is) {
case 1:
ptr := new([1]interface{})
copy((*ptr)[:], is)
return *ptr
case 2:
ptr := new([2]interface{})
copy((*ptr)[:], is)
return *ptr
case 3:
ptr := new([3]interface{})
copy((*ptr)[:], is)
return *ptr
case 4:
ptr := new([4]interface{})
copy((*ptr)[:], is)
return *ptr
case 5:
ptr := new([5]interface{})
copy((*ptr)[:], is)
return *ptr
case 6:
ptr := new([6]interface{})
copy((*ptr)[:], is)
return *ptr
case 7:
ptr := new([7]interface{})
copy((*ptr)[:], is)
return *ptr
case 8:
ptr := new([8]interface{})
copy((*ptr)[:], is)
return *ptr
case 9:
ptr := new([9]interface{})
copy((*ptr)[:], is)
return *ptr
case 10:
ptr := new([10]interface{})
copy((*ptr)[:], is)
return *ptr
default:
}
at := reflect.New(reflect.ArrayOf(len(is), ifaceType)).Elem()
for i, v := range is {
*(at.Index(i).Addr().Interface().(*interface{})) = v
}
return at.Interface()
}