...
1// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved.
2// Use of this source code is governed by a MIT license found in the LICENSE file.
3
4// Code generated from sort-slice.go.tmpl - DO NOT EDIT.
5
6{{/*
7xxxSlice
8xxxIntf
9xxxIntfSlice
10xxxRv
11xxxRvSlice
12
13I'm now going to create them for
14- sortables
15- sortablesplus
16
17With the parameters passed in sortables or sortablesplus,
18'time, 'bytes' are special, and correspond to time.Time and []byte respectively.
19*/}}
20
21package codec
22
23import (
24 "time"
25 "reflect"
26 "bytes"
27)
28
29{{/* func init() { _ = time.Unix } */}}
30
31{{define "T"}}
32func (p {{ .Type }}) Len() int { return len(p) }
33func (p {{ .Type }}) Swap(i, j int) { p[uint(i)], p[uint(j)] = p[uint(j)], p[uint(i)] }
34func (p {{ .Type }}) Less(i, j int) bool {
35 {{ if eq .Kind "bool" }} return !p[uint(i)]{{.V}} && p[uint(j)]{{.V}}
36 {{ else if eq .Kind "float32" }} return p[uint(i)]{{.V}} < p[uint(j)]{{.V}} || isNaN32(p[uint(i)]{{.V}}) && !isNaN32(p[uint(j)]{{.V}})
37 {{ else if eq .Kind "float64" }} return p[uint(i)]{{.V}} < p[uint(j)]{{.V}} || isNaN64(p[uint(i)]{{.V}}) && !isNaN64(p[uint(j)]{{.V}})
38 {{ else if eq .Kind "time" }} return p[uint(i)]{{.V}}.Before(p[uint(j)]{{.V}})
39 {{ else if eq .Kind "bytes" }} return bytes.Compare(p[uint(i)]{{.V}}, p[uint(j)]{{.V}}) == -1
40 {{ else }} return p[uint(i)]{{.V}} < p[uint(j)]{{.V}}
41 {{ end -}}
42}
43{{end}}
44
45{{range $i, $v := sortables }}{{ $t := tshort $v }}
46type {{ $v }}Slice []{{ $t }}
47{{template "T" args "Kind" $v "Type" (print $v "Slice") "V" ""}}
48{{end}}
49
50{{range $i, $v := sortablesplus }}{{ $t := tshort $v }}
51
52type {{ $v }}Rv struct {
53 v {{ $t }}
54 r reflect.Value
55}
56type {{ $v }}RvSlice []{{ $v }}Rv
57{{template "T" args "Kind" $v "Type" (print $v "RvSlice") "V" ".v"}}
58
59{{if eq $v "bytes" "string" -}}
60type {{ $v }}Intf struct {
61 v {{ $t }}
62 i interface{}
63}
64type {{ $v }}IntfSlice []{{ $v }}Intf
65{{template "T" args "Kind" $v "Type" (print $v "IntfSlice") "V" ".v"}}
66{{end}}
67
68{{end}}
View as plain text