Skip to content
This repository has been archived by the owner on Apr 19, 2022. It is now read-only.

Commit

Permalink
feature: generate ops (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
nrwiersma committed Jun 19, 2020
1 parent 8605e8a commit 11fe1f4
Show file tree
Hide file tree
Showing 7 changed files with 415 additions and 322 deletions.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
include github.com/hamba/make/golang

generate:
go generate
.PHONY: generate
140 changes: 0 additions & 140 deletions contains.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,143 +68,3 @@ func containsOf(slice, val interface{}) (containsFn, bool) {
}
return nil, false
}

func boolContains(sptr, vptr unsafe.Pointer) bool {
v := *(*bool)(vptr)
for _, vv := range *(*[]bool)(sptr) {
if vv == v {
return true
}
}
return false
}

func stringContains(sptr, vptr unsafe.Pointer) bool {
v := *(*string)(vptr)
for _, vv := range *(*[]string)(sptr) {
if vv == v {
return true
}
}
return false
}

func intContains(sptr, vptr unsafe.Pointer) bool {
v := *(*int)(vptr)
for _, vv := range *(*[]int)(sptr) {
if vv == v {
return true
}
}
return false
}

func int8Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*int8)(vptr)
for _, vv := range *(*[]int8)(sptr) {
if vv == v {
return true
}
}
return false
}

func int16Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*int16)(vptr)
for _, vv := range *(*[]int16)(sptr) {
if vv == v {
return true
}
}
return false
}

func int32Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*int32)(vptr)
for _, vv := range *(*[]int32)(sptr) {
if vv == v {
return true
}
}
return false
}

func int64Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*int64)(vptr)
for _, vv := range *(*[]int64)(sptr) {
if vv == v {
return true
}
}
return false
}

func uintContains(sptr, vptr unsafe.Pointer) bool {
v := *(*uint)(vptr)
for _, vv := range *(*[]uint)(sptr) {
if vv == v {
return true
}
}
return false
}

func uint8Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*uint8)(vptr)
for _, vv := range *(*[]uint8)(sptr) {
if vv == v {
return true
}
}
return false
}

func uint16Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*uint16)(vptr)
for _, vv := range *(*[]uint16)(sptr) {
if vv == v {
return true
}
}
return false
}

func uint32Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*uint32)(vptr)
for _, vv := range *(*[]uint32)(sptr) {
if vv == v {
return true
}
}
return false
}

func uint64Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*uint64)(vptr)
for _, vv := range *(*[]uint64)(sptr) {
if vv == v {
return true
}
}
return false
}

func float32Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*float32)(vptr)
for _, vv := range *(*[]float32)(sptr) {
if vv == v {
return true
}
}
return false
}

func float64Contains(sptr, vptr unsafe.Pointer) bool {
v := *(*float64)(vptr)
for _, vv := range *(*[]float64)(sptr) {
if vv == v {
return true
}
}
return false
}
3 changes: 3 additions & 0 deletions generate.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package slices

//go:generate go run ./internal/gen
91 changes: 0 additions & 91 deletions greater.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,94 +48,3 @@ func greaterOf(slice interface{}) greaterFn {
}
return nil
}

func stringGreater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]string)(ptr)
return v[i] > v[j]
}
}

func intGreater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]int)(ptr)
return v[i] > v[j]
}
}

func int8Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]int8)(ptr)
return v[i] > v[j]
}
}

func int16Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]int16)(ptr)
return v[i] > v[j]
}
}

func int32Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]int32)(ptr)
return v[i] > v[j]
}
}

func int64Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]int64)(ptr)
return v[i] > v[j]
}
}

func uintGreater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]uint)(ptr)
return v[i] > v[j]
}
}

func uint8Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]uint8)(ptr)
return v[i] > v[j]
}
}

func uint16Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]uint16)(ptr)
return v[i] > v[j]
}
}

func uint32Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]uint32)(ptr)
return v[i] > v[j]
}
}

func uint64Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]uint64)(ptr)
return v[i] > v[j]
}
}

func float32Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]float32)(ptr)
return v[i] > v[j]
}
}

func float64Greater(ptr unsafe.Pointer) func(i, j int) bool {
return func(i, j int) bool {
v := *(*[]float64)(ptr)
return v[i] > v[j]
}
}
78 changes: 78 additions & 0 deletions internal/gen/gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 11fe1f4

Please sign in to comment.