Files
mautrix-telegram/pkg/gotd/tg/tl_keyboard_button_slices_gen.go
T
2025-06-27 20:03:37 -07:00

1828 lines
43 KiB
Go

//go:build !no_gotd_slices
// +build !no_gotd_slices
// Code generated by gotdgen, DO NOT EDIT.
package tg
import (
"context"
"errors"
"fmt"
"sort"
"strings"
"go.uber.org/multierr"
"go.mau.fi/mautrix-telegram/pkg/gotd/bin"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdjson"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdp"
"go.mau.fi/mautrix-telegram/pkg/gotd/tgerr"
)
// No-op definition for keeping imports.
var (
_ = bin.Buffer{}
_ = context.Background()
_ = fmt.Stringer(nil)
_ = strings.Builder{}
_ = errors.Is
_ = multierr.AppendInto
_ = sort.Ints
_ = tdp.Format
_ = tgerr.Error{}
_ = tdjson.Encoder{}
)
// KeyboardButtonClassArray is adapter for slice of KeyboardButtonClass.
type KeyboardButtonClassArray []KeyboardButtonClass
// Sort sorts slice of KeyboardButtonClass.
func (s KeyboardButtonClassArray) Sort(less func(a, b KeyboardButtonClass) bool) KeyboardButtonClassArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonClass.
func (s KeyboardButtonClassArray) SortStable(less func(a, b KeyboardButtonClass) bool) KeyboardButtonClassArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonClass.
func (s KeyboardButtonClassArray) Retain(keep func(x KeyboardButtonClass) bool) KeyboardButtonClassArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonClassArray) First() (v KeyboardButtonClass, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonClassArray) Last() (v KeyboardButtonClass, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonClassArray) PopFirst() (v KeyboardButtonClass, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonClass
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonClassArray) Pop() (v KeyboardButtonClass, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// AsKeyboardButton returns copy with only KeyboardButton constructors.
func (s KeyboardButtonClassArray) AsKeyboardButton() (to KeyboardButtonArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButton)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonURL returns copy with only KeyboardButtonURL constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonURL() (to KeyboardButtonURLArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonURL)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonCallback returns copy with only KeyboardButtonCallback constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonCallback() (to KeyboardButtonCallbackArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonCallback)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonRequestPhone returns copy with only KeyboardButtonRequestPhone constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonRequestPhone() (to KeyboardButtonRequestPhoneArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonRequestPhone)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonRequestGeoLocation returns copy with only KeyboardButtonRequestGeoLocation constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonRequestGeoLocation() (to KeyboardButtonRequestGeoLocationArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonRequestGeoLocation)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonSwitchInline returns copy with only KeyboardButtonSwitchInline constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonSwitchInline() (to KeyboardButtonSwitchInlineArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonSwitchInline)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonGame returns copy with only KeyboardButtonGame constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonGame() (to KeyboardButtonGameArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonGame)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonBuy returns copy with only KeyboardButtonBuy constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonBuy() (to KeyboardButtonBuyArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonBuy)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonURLAuth returns copy with only KeyboardButtonURLAuth constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonURLAuth() (to KeyboardButtonURLAuthArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonURLAuth)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsInputKeyboardButtonURLAuth returns copy with only InputKeyboardButtonURLAuth constructors.
func (s KeyboardButtonClassArray) AsInputKeyboardButtonURLAuth() (to InputKeyboardButtonURLAuthArray) {
for _, elem := range s {
value, ok := elem.(*InputKeyboardButtonURLAuth)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonRequestPoll returns copy with only KeyboardButtonRequestPoll constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonRequestPoll() (to KeyboardButtonRequestPollArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonRequestPoll)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsInputKeyboardButtonUserProfile returns copy with only InputKeyboardButtonUserProfile constructors.
func (s KeyboardButtonClassArray) AsInputKeyboardButtonUserProfile() (to InputKeyboardButtonUserProfileArray) {
for _, elem := range s {
value, ok := elem.(*InputKeyboardButtonUserProfile)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonUserProfile returns copy with only KeyboardButtonUserProfile constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonUserProfile() (to KeyboardButtonUserProfileArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonUserProfile)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonWebView returns copy with only KeyboardButtonWebView constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonWebView() (to KeyboardButtonWebViewArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonWebView)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonSimpleWebView returns copy with only KeyboardButtonSimpleWebView constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonSimpleWebView() (to KeyboardButtonSimpleWebViewArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonSimpleWebView)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonRequestPeer returns copy with only KeyboardButtonRequestPeer constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonRequestPeer() (to KeyboardButtonRequestPeerArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonRequestPeer)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsInputKeyboardButtonRequestPeer returns copy with only InputKeyboardButtonRequestPeer constructors.
func (s KeyboardButtonClassArray) AsInputKeyboardButtonRequestPeer() (to InputKeyboardButtonRequestPeerArray) {
for _, elem := range s {
value, ok := elem.(*InputKeyboardButtonRequestPeer)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// AsKeyboardButtonCopy returns copy with only KeyboardButtonCopy constructors.
func (s KeyboardButtonClassArray) AsKeyboardButtonCopy() (to KeyboardButtonCopyArray) {
for _, elem := range s {
value, ok := elem.(*KeyboardButtonCopy)
if !ok {
continue
}
to = append(to, *value)
}
return to
}
// KeyboardButtonArray is adapter for slice of KeyboardButton.
type KeyboardButtonArray []KeyboardButton
// Sort sorts slice of KeyboardButton.
func (s KeyboardButtonArray) Sort(less func(a, b KeyboardButton) bool) KeyboardButtonArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButton.
func (s KeyboardButtonArray) SortStable(less func(a, b KeyboardButton) bool) KeyboardButtonArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButton.
func (s KeyboardButtonArray) Retain(keep func(x KeyboardButton) bool) KeyboardButtonArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonArray) First() (v KeyboardButton, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonArray) Last() (v KeyboardButton, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonArray) PopFirst() (v KeyboardButton, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButton
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonArray) Pop() (v KeyboardButton, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonURLArray is adapter for slice of KeyboardButtonURL.
type KeyboardButtonURLArray []KeyboardButtonURL
// Sort sorts slice of KeyboardButtonURL.
func (s KeyboardButtonURLArray) Sort(less func(a, b KeyboardButtonURL) bool) KeyboardButtonURLArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonURL.
func (s KeyboardButtonURLArray) SortStable(less func(a, b KeyboardButtonURL) bool) KeyboardButtonURLArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonURL.
func (s KeyboardButtonURLArray) Retain(keep func(x KeyboardButtonURL) bool) KeyboardButtonURLArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonURLArray) First() (v KeyboardButtonURL, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonURLArray) Last() (v KeyboardButtonURL, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonURLArray) PopFirst() (v KeyboardButtonURL, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonURL
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonURLArray) Pop() (v KeyboardButtonURL, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonCallbackArray is adapter for slice of KeyboardButtonCallback.
type KeyboardButtonCallbackArray []KeyboardButtonCallback
// Sort sorts slice of KeyboardButtonCallback.
func (s KeyboardButtonCallbackArray) Sort(less func(a, b KeyboardButtonCallback) bool) KeyboardButtonCallbackArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonCallback.
func (s KeyboardButtonCallbackArray) SortStable(less func(a, b KeyboardButtonCallback) bool) KeyboardButtonCallbackArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonCallback.
func (s KeyboardButtonCallbackArray) Retain(keep func(x KeyboardButtonCallback) bool) KeyboardButtonCallbackArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonCallbackArray) First() (v KeyboardButtonCallback, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonCallbackArray) Last() (v KeyboardButtonCallback, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonCallbackArray) PopFirst() (v KeyboardButtonCallback, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonCallback
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonCallbackArray) Pop() (v KeyboardButtonCallback, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonRequestPhoneArray is adapter for slice of KeyboardButtonRequestPhone.
type KeyboardButtonRequestPhoneArray []KeyboardButtonRequestPhone
// Sort sorts slice of KeyboardButtonRequestPhone.
func (s KeyboardButtonRequestPhoneArray) Sort(less func(a, b KeyboardButtonRequestPhone) bool) KeyboardButtonRequestPhoneArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonRequestPhone.
func (s KeyboardButtonRequestPhoneArray) SortStable(less func(a, b KeyboardButtonRequestPhone) bool) KeyboardButtonRequestPhoneArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonRequestPhone.
func (s KeyboardButtonRequestPhoneArray) Retain(keep func(x KeyboardButtonRequestPhone) bool) KeyboardButtonRequestPhoneArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonRequestPhoneArray) First() (v KeyboardButtonRequestPhone, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonRequestPhoneArray) Last() (v KeyboardButtonRequestPhone, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonRequestPhoneArray) PopFirst() (v KeyboardButtonRequestPhone, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonRequestPhone
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonRequestPhoneArray) Pop() (v KeyboardButtonRequestPhone, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonRequestGeoLocationArray is adapter for slice of KeyboardButtonRequestGeoLocation.
type KeyboardButtonRequestGeoLocationArray []KeyboardButtonRequestGeoLocation
// Sort sorts slice of KeyboardButtonRequestGeoLocation.
func (s KeyboardButtonRequestGeoLocationArray) Sort(less func(a, b KeyboardButtonRequestGeoLocation) bool) KeyboardButtonRequestGeoLocationArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonRequestGeoLocation.
func (s KeyboardButtonRequestGeoLocationArray) SortStable(less func(a, b KeyboardButtonRequestGeoLocation) bool) KeyboardButtonRequestGeoLocationArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonRequestGeoLocation.
func (s KeyboardButtonRequestGeoLocationArray) Retain(keep func(x KeyboardButtonRequestGeoLocation) bool) KeyboardButtonRequestGeoLocationArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonRequestGeoLocationArray) First() (v KeyboardButtonRequestGeoLocation, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonRequestGeoLocationArray) Last() (v KeyboardButtonRequestGeoLocation, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonRequestGeoLocationArray) PopFirst() (v KeyboardButtonRequestGeoLocation, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonRequestGeoLocation
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonRequestGeoLocationArray) Pop() (v KeyboardButtonRequestGeoLocation, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonSwitchInlineArray is adapter for slice of KeyboardButtonSwitchInline.
type KeyboardButtonSwitchInlineArray []KeyboardButtonSwitchInline
// Sort sorts slice of KeyboardButtonSwitchInline.
func (s KeyboardButtonSwitchInlineArray) Sort(less func(a, b KeyboardButtonSwitchInline) bool) KeyboardButtonSwitchInlineArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonSwitchInline.
func (s KeyboardButtonSwitchInlineArray) SortStable(less func(a, b KeyboardButtonSwitchInline) bool) KeyboardButtonSwitchInlineArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonSwitchInline.
func (s KeyboardButtonSwitchInlineArray) Retain(keep func(x KeyboardButtonSwitchInline) bool) KeyboardButtonSwitchInlineArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonSwitchInlineArray) First() (v KeyboardButtonSwitchInline, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonSwitchInlineArray) Last() (v KeyboardButtonSwitchInline, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonSwitchInlineArray) PopFirst() (v KeyboardButtonSwitchInline, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonSwitchInline
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonSwitchInlineArray) Pop() (v KeyboardButtonSwitchInline, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonGameArray is adapter for slice of KeyboardButtonGame.
type KeyboardButtonGameArray []KeyboardButtonGame
// Sort sorts slice of KeyboardButtonGame.
func (s KeyboardButtonGameArray) Sort(less func(a, b KeyboardButtonGame) bool) KeyboardButtonGameArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonGame.
func (s KeyboardButtonGameArray) SortStable(less func(a, b KeyboardButtonGame) bool) KeyboardButtonGameArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonGame.
func (s KeyboardButtonGameArray) Retain(keep func(x KeyboardButtonGame) bool) KeyboardButtonGameArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonGameArray) First() (v KeyboardButtonGame, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonGameArray) Last() (v KeyboardButtonGame, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonGameArray) PopFirst() (v KeyboardButtonGame, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonGame
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonGameArray) Pop() (v KeyboardButtonGame, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonBuyArray is adapter for slice of KeyboardButtonBuy.
type KeyboardButtonBuyArray []KeyboardButtonBuy
// Sort sorts slice of KeyboardButtonBuy.
func (s KeyboardButtonBuyArray) Sort(less func(a, b KeyboardButtonBuy) bool) KeyboardButtonBuyArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonBuy.
func (s KeyboardButtonBuyArray) SortStable(less func(a, b KeyboardButtonBuy) bool) KeyboardButtonBuyArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonBuy.
func (s KeyboardButtonBuyArray) Retain(keep func(x KeyboardButtonBuy) bool) KeyboardButtonBuyArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonBuyArray) First() (v KeyboardButtonBuy, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonBuyArray) Last() (v KeyboardButtonBuy, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonBuyArray) PopFirst() (v KeyboardButtonBuy, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonBuy
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonBuyArray) Pop() (v KeyboardButtonBuy, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonURLAuthArray is adapter for slice of KeyboardButtonURLAuth.
type KeyboardButtonURLAuthArray []KeyboardButtonURLAuth
// Sort sorts slice of KeyboardButtonURLAuth.
func (s KeyboardButtonURLAuthArray) Sort(less func(a, b KeyboardButtonURLAuth) bool) KeyboardButtonURLAuthArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonURLAuth.
func (s KeyboardButtonURLAuthArray) SortStable(less func(a, b KeyboardButtonURLAuth) bool) KeyboardButtonURLAuthArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonURLAuth.
func (s KeyboardButtonURLAuthArray) Retain(keep func(x KeyboardButtonURLAuth) bool) KeyboardButtonURLAuthArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonURLAuthArray) First() (v KeyboardButtonURLAuth, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonURLAuthArray) Last() (v KeyboardButtonURLAuth, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonURLAuthArray) PopFirst() (v KeyboardButtonURLAuth, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonURLAuth
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonURLAuthArray) Pop() (v KeyboardButtonURLAuth, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// InputKeyboardButtonURLAuthArray is adapter for slice of InputKeyboardButtonURLAuth.
type InputKeyboardButtonURLAuthArray []InputKeyboardButtonURLAuth
// Sort sorts slice of InputKeyboardButtonURLAuth.
func (s InputKeyboardButtonURLAuthArray) Sort(less func(a, b InputKeyboardButtonURLAuth) bool) InputKeyboardButtonURLAuthArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of InputKeyboardButtonURLAuth.
func (s InputKeyboardButtonURLAuthArray) SortStable(less func(a, b InputKeyboardButtonURLAuth) bool) InputKeyboardButtonURLAuthArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of InputKeyboardButtonURLAuth.
func (s InputKeyboardButtonURLAuthArray) Retain(keep func(x InputKeyboardButtonURLAuth) bool) InputKeyboardButtonURLAuthArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s InputKeyboardButtonURLAuthArray) First() (v InputKeyboardButtonURLAuth, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s InputKeyboardButtonURLAuthArray) Last() (v InputKeyboardButtonURLAuth, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *InputKeyboardButtonURLAuthArray) PopFirst() (v InputKeyboardButtonURLAuth, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero InputKeyboardButtonURLAuth
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *InputKeyboardButtonURLAuthArray) Pop() (v InputKeyboardButtonURLAuth, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonRequestPollArray is adapter for slice of KeyboardButtonRequestPoll.
type KeyboardButtonRequestPollArray []KeyboardButtonRequestPoll
// Sort sorts slice of KeyboardButtonRequestPoll.
func (s KeyboardButtonRequestPollArray) Sort(less func(a, b KeyboardButtonRequestPoll) bool) KeyboardButtonRequestPollArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonRequestPoll.
func (s KeyboardButtonRequestPollArray) SortStable(less func(a, b KeyboardButtonRequestPoll) bool) KeyboardButtonRequestPollArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonRequestPoll.
func (s KeyboardButtonRequestPollArray) Retain(keep func(x KeyboardButtonRequestPoll) bool) KeyboardButtonRequestPollArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonRequestPollArray) First() (v KeyboardButtonRequestPoll, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonRequestPollArray) Last() (v KeyboardButtonRequestPoll, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonRequestPollArray) PopFirst() (v KeyboardButtonRequestPoll, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonRequestPoll
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonRequestPollArray) Pop() (v KeyboardButtonRequestPoll, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// InputKeyboardButtonUserProfileArray is adapter for slice of InputKeyboardButtonUserProfile.
type InputKeyboardButtonUserProfileArray []InputKeyboardButtonUserProfile
// Sort sorts slice of InputKeyboardButtonUserProfile.
func (s InputKeyboardButtonUserProfileArray) Sort(less func(a, b InputKeyboardButtonUserProfile) bool) InputKeyboardButtonUserProfileArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of InputKeyboardButtonUserProfile.
func (s InputKeyboardButtonUserProfileArray) SortStable(less func(a, b InputKeyboardButtonUserProfile) bool) InputKeyboardButtonUserProfileArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of InputKeyboardButtonUserProfile.
func (s InputKeyboardButtonUserProfileArray) Retain(keep func(x InputKeyboardButtonUserProfile) bool) InputKeyboardButtonUserProfileArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s InputKeyboardButtonUserProfileArray) First() (v InputKeyboardButtonUserProfile, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s InputKeyboardButtonUserProfileArray) Last() (v InputKeyboardButtonUserProfile, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *InputKeyboardButtonUserProfileArray) PopFirst() (v InputKeyboardButtonUserProfile, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero InputKeyboardButtonUserProfile
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *InputKeyboardButtonUserProfileArray) Pop() (v InputKeyboardButtonUserProfile, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonUserProfileArray is adapter for slice of KeyboardButtonUserProfile.
type KeyboardButtonUserProfileArray []KeyboardButtonUserProfile
// Sort sorts slice of KeyboardButtonUserProfile.
func (s KeyboardButtonUserProfileArray) Sort(less func(a, b KeyboardButtonUserProfile) bool) KeyboardButtonUserProfileArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonUserProfile.
func (s KeyboardButtonUserProfileArray) SortStable(less func(a, b KeyboardButtonUserProfile) bool) KeyboardButtonUserProfileArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonUserProfile.
func (s KeyboardButtonUserProfileArray) Retain(keep func(x KeyboardButtonUserProfile) bool) KeyboardButtonUserProfileArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonUserProfileArray) First() (v KeyboardButtonUserProfile, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonUserProfileArray) Last() (v KeyboardButtonUserProfile, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonUserProfileArray) PopFirst() (v KeyboardButtonUserProfile, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonUserProfile
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonUserProfileArray) Pop() (v KeyboardButtonUserProfile, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonWebViewArray is adapter for slice of KeyboardButtonWebView.
type KeyboardButtonWebViewArray []KeyboardButtonWebView
// Sort sorts slice of KeyboardButtonWebView.
func (s KeyboardButtonWebViewArray) Sort(less func(a, b KeyboardButtonWebView) bool) KeyboardButtonWebViewArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonWebView.
func (s KeyboardButtonWebViewArray) SortStable(less func(a, b KeyboardButtonWebView) bool) KeyboardButtonWebViewArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonWebView.
func (s KeyboardButtonWebViewArray) Retain(keep func(x KeyboardButtonWebView) bool) KeyboardButtonWebViewArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonWebViewArray) First() (v KeyboardButtonWebView, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonWebViewArray) Last() (v KeyboardButtonWebView, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonWebViewArray) PopFirst() (v KeyboardButtonWebView, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonWebView
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonWebViewArray) Pop() (v KeyboardButtonWebView, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonSimpleWebViewArray is adapter for slice of KeyboardButtonSimpleWebView.
type KeyboardButtonSimpleWebViewArray []KeyboardButtonSimpleWebView
// Sort sorts slice of KeyboardButtonSimpleWebView.
func (s KeyboardButtonSimpleWebViewArray) Sort(less func(a, b KeyboardButtonSimpleWebView) bool) KeyboardButtonSimpleWebViewArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonSimpleWebView.
func (s KeyboardButtonSimpleWebViewArray) SortStable(less func(a, b KeyboardButtonSimpleWebView) bool) KeyboardButtonSimpleWebViewArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonSimpleWebView.
func (s KeyboardButtonSimpleWebViewArray) Retain(keep func(x KeyboardButtonSimpleWebView) bool) KeyboardButtonSimpleWebViewArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonSimpleWebViewArray) First() (v KeyboardButtonSimpleWebView, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonSimpleWebViewArray) Last() (v KeyboardButtonSimpleWebView, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonSimpleWebViewArray) PopFirst() (v KeyboardButtonSimpleWebView, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonSimpleWebView
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonSimpleWebViewArray) Pop() (v KeyboardButtonSimpleWebView, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonRequestPeerArray is adapter for slice of KeyboardButtonRequestPeer.
type KeyboardButtonRequestPeerArray []KeyboardButtonRequestPeer
// Sort sorts slice of KeyboardButtonRequestPeer.
func (s KeyboardButtonRequestPeerArray) Sort(less func(a, b KeyboardButtonRequestPeer) bool) KeyboardButtonRequestPeerArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonRequestPeer.
func (s KeyboardButtonRequestPeerArray) SortStable(less func(a, b KeyboardButtonRequestPeer) bool) KeyboardButtonRequestPeerArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonRequestPeer.
func (s KeyboardButtonRequestPeerArray) Retain(keep func(x KeyboardButtonRequestPeer) bool) KeyboardButtonRequestPeerArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonRequestPeerArray) First() (v KeyboardButtonRequestPeer, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonRequestPeerArray) Last() (v KeyboardButtonRequestPeer, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonRequestPeerArray) PopFirst() (v KeyboardButtonRequestPeer, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonRequestPeer
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonRequestPeerArray) Pop() (v KeyboardButtonRequestPeer, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// InputKeyboardButtonRequestPeerArray is adapter for slice of InputKeyboardButtonRequestPeer.
type InputKeyboardButtonRequestPeerArray []InputKeyboardButtonRequestPeer
// Sort sorts slice of InputKeyboardButtonRequestPeer.
func (s InputKeyboardButtonRequestPeerArray) Sort(less func(a, b InputKeyboardButtonRequestPeer) bool) InputKeyboardButtonRequestPeerArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of InputKeyboardButtonRequestPeer.
func (s InputKeyboardButtonRequestPeerArray) SortStable(less func(a, b InputKeyboardButtonRequestPeer) bool) InputKeyboardButtonRequestPeerArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of InputKeyboardButtonRequestPeer.
func (s InputKeyboardButtonRequestPeerArray) Retain(keep func(x InputKeyboardButtonRequestPeer) bool) InputKeyboardButtonRequestPeerArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s InputKeyboardButtonRequestPeerArray) First() (v InputKeyboardButtonRequestPeer, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s InputKeyboardButtonRequestPeerArray) Last() (v InputKeyboardButtonRequestPeer, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *InputKeyboardButtonRequestPeerArray) PopFirst() (v InputKeyboardButtonRequestPeer, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero InputKeyboardButtonRequestPeer
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *InputKeyboardButtonRequestPeerArray) Pop() (v InputKeyboardButtonRequestPeer, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}
// KeyboardButtonCopyArray is adapter for slice of KeyboardButtonCopy.
type KeyboardButtonCopyArray []KeyboardButtonCopy
// Sort sorts slice of KeyboardButtonCopy.
func (s KeyboardButtonCopyArray) Sort(less func(a, b KeyboardButtonCopy) bool) KeyboardButtonCopyArray {
sort.Slice(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// SortStable sorts slice of KeyboardButtonCopy.
func (s KeyboardButtonCopyArray) SortStable(less func(a, b KeyboardButtonCopy) bool) KeyboardButtonCopyArray {
sort.SliceStable(s, func(i, j int) bool {
return less(s[i], s[j])
})
return s
}
// Retain filters in-place slice of KeyboardButtonCopy.
func (s KeyboardButtonCopyArray) Retain(keep func(x KeyboardButtonCopy) bool) KeyboardButtonCopyArray {
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]
return s
}
// First returns first element of slice (if exists).
func (s KeyboardButtonCopyArray) First() (v KeyboardButtonCopy, ok bool) {
if len(s) < 1 {
return
}
return s[0], true
}
// Last returns last element of slice (if exists).
func (s KeyboardButtonCopyArray) Last() (v KeyboardButtonCopy, ok bool) {
if len(s) < 1 {
return
}
return s[len(s)-1], true
}
// PopFirst returns first element of slice (if exists) and deletes it.
func (s *KeyboardButtonCopyArray) PopFirst() (v KeyboardButtonCopy, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[0]
// Delete by index from SliceTricks.
copy(a[0:], a[1:])
var zero KeyboardButtonCopy
a[len(a)-1] = zero
a = a[:len(a)-1]
*s = a
return v, true
}
// Pop returns last element of slice (if exists) and deletes it.
func (s *KeyboardButtonCopyArray) Pop() (v KeyboardButtonCopy, ok bool) {
if s == nil || len(*s) < 1 {
return
}
a := *s
v = a[len(a)-1]
a = a[:len(a)-1]
*s = a
return v, true
}