package tg
import (
"context"
"errors"
"fmt"
"sort"
"strings"
"go.uber.org/multierr"
"github.com/gotd/td/bin"
"github.com/gotd/td/tdjson"
"github.com/gotd/td/tdp"
"github.com/gotd/td/tgerr"
)
var (
_ = bin .Buffer {}
_ = context .Background ()
_ = fmt .Stringer (nil )
_ = strings .Builder {}
_ = errors .Is
_ = multierr .AppendInto
_ = sort .Ints
_ = tdp .Format
_ = tgerr .Error {}
_ = tdjson .Encoder {}
)
type DocumentAttributeClassArray []DocumentAttributeClass
func (s DocumentAttributeClassArray ) Sort (less func (a , b DocumentAttributeClass ) bool ) DocumentAttributeClassArray {
sort .Slice (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeClassArray ) SortStable (less func (a , b DocumentAttributeClass ) bool ) DocumentAttributeClassArray {
sort .SliceStable (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeClassArray ) Retain (keep func (x DocumentAttributeClass ) bool ) DocumentAttributeClassArray {
n := 0
for _ , x := range s {
if keep (x ) {
s [n ] = x
n ++
}
}
s = s [:n ]
return s
}
func (s DocumentAttributeClassArray ) First () (v DocumentAttributeClass , ok bool ) {
if len (s ) < 1 {
return
}
return s [0 ], true
}
func (s DocumentAttributeClassArray ) Last () (v DocumentAttributeClass , ok bool ) {
if len (s ) < 1 {
return
}
return s [len (s )-1 ], true
}
func (s *DocumentAttributeClassArray ) PopFirst () (v DocumentAttributeClass , ok bool ) {
if s == nil || len (*s ) < 1 {
return
}
a := *s
v = a [0 ]
copy (a [0 :], a [1 :])
var zero DocumentAttributeClass
a [len (a )-1 ] = zero
a = a [:len (a )-1 ]
*s = a
return v , true
}
func (s *DocumentAttributeClassArray ) Pop () (v DocumentAttributeClass , 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
}
func (s DocumentAttributeClassArray ) AsDocumentAttributeImageSize () (to DocumentAttributeImageSizeArray ) {
for _ , elem := range s {
value , ok := elem .(*DocumentAttributeImageSize )
if !ok {
continue
}
to = append (to , *value )
}
return to
}
func (s DocumentAttributeClassArray ) AsDocumentAttributeSticker () (to DocumentAttributeStickerArray ) {
for _ , elem := range s {
value , ok := elem .(*DocumentAttributeSticker )
if !ok {
continue
}
to = append (to , *value )
}
return to
}
func (s DocumentAttributeClassArray ) AsDocumentAttributeVideo () (to DocumentAttributeVideoArray ) {
for _ , elem := range s {
value , ok := elem .(*DocumentAttributeVideo )
if !ok {
continue
}
to = append (to , *value )
}
return to
}
func (s DocumentAttributeClassArray ) AsDocumentAttributeAudio () (to DocumentAttributeAudioArray ) {
for _ , elem := range s {
value , ok := elem .(*DocumentAttributeAudio )
if !ok {
continue
}
to = append (to , *value )
}
return to
}
func (s DocumentAttributeClassArray ) AsDocumentAttributeFilename () (to DocumentAttributeFilenameArray ) {
for _ , elem := range s {
value , ok := elem .(*DocumentAttributeFilename )
if !ok {
continue
}
to = append (to , *value )
}
return to
}
func (s DocumentAttributeClassArray ) AsDocumentAttributeCustomEmoji () (to DocumentAttributeCustomEmojiArray ) {
for _ , elem := range s {
value , ok := elem .(*DocumentAttributeCustomEmoji )
if !ok {
continue
}
to = append (to , *value )
}
return to
}
type DocumentAttributeImageSizeArray []DocumentAttributeImageSize
func (s DocumentAttributeImageSizeArray ) Sort (less func (a , b DocumentAttributeImageSize ) bool ) DocumentAttributeImageSizeArray {
sort .Slice (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeImageSizeArray ) SortStable (less func (a , b DocumentAttributeImageSize ) bool ) DocumentAttributeImageSizeArray {
sort .SliceStable (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeImageSizeArray ) Retain (keep func (x DocumentAttributeImageSize ) bool ) DocumentAttributeImageSizeArray {
n := 0
for _ , x := range s {
if keep (x ) {
s [n ] = x
n ++
}
}
s = s [:n ]
return s
}
func (s DocumentAttributeImageSizeArray ) First () (v DocumentAttributeImageSize , ok bool ) {
if len (s ) < 1 {
return
}
return s [0 ], true
}
func (s DocumentAttributeImageSizeArray ) Last () (v DocumentAttributeImageSize , ok bool ) {
if len (s ) < 1 {
return
}
return s [len (s )-1 ], true
}
func (s *DocumentAttributeImageSizeArray ) PopFirst () (v DocumentAttributeImageSize , ok bool ) {
if s == nil || len (*s ) < 1 {
return
}
a := *s
v = a [0 ]
copy (a [0 :], a [1 :])
var zero DocumentAttributeImageSize
a [len (a )-1 ] = zero
a = a [:len (a )-1 ]
*s = a
return v , true
}
func (s *DocumentAttributeImageSizeArray ) Pop () (v DocumentAttributeImageSize , 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
}
type DocumentAttributeStickerArray []DocumentAttributeSticker
func (s DocumentAttributeStickerArray ) Sort (less func (a , b DocumentAttributeSticker ) bool ) DocumentAttributeStickerArray {
sort .Slice (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeStickerArray ) SortStable (less func (a , b DocumentAttributeSticker ) bool ) DocumentAttributeStickerArray {
sort .SliceStable (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeStickerArray ) Retain (keep func (x DocumentAttributeSticker ) bool ) DocumentAttributeStickerArray {
n := 0
for _ , x := range s {
if keep (x ) {
s [n ] = x
n ++
}
}
s = s [:n ]
return s
}
func (s DocumentAttributeStickerArray ) First () (v DocumentAttributeSticker , ok bool ) {
if len (s ) < 1 {
return
}
return s [0 ], true
}
func (s DocumentAttributeStickerArray ) Last () (v DocumentAttributeSticker , ok bool ) {
if len (s ) < 1 {
return
}
return s [len (s )-1 ], true
}
func (s *DocumentAttributeStickerArray ) PopFirst () (v DocumentAttributeSticker , ok bool ) {
if s == nil || len (*s ) < 1 {
return
}
a := *s
v = a [0 ]
copy (a [0 :], a [1 :])
var zero DocumentAttributeSticker
a [len (a )-1 ] = zero
a = a [:len (a )-1 ]
*s = a
return v , true
}
func (s *DocumentAttributeStickerArray ) Pop () (v DocumentAttributeSticker , 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
}
type DocumentAttributeVideoArray []DocumentAttributeVideo
func (s DocumentAttributeVideoArray ) Sort (less func (a , b DocumentAttributeVideo ) bool ) DocumentAttributeVideoArray {
sort .Slice (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeVideoArray ) SortStable (less func (a , b DocumentAttributeVideo ) bool ) DocumentAttributeVideoArray {
sort .SliceStable (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeVideoArray ) Retain (keep func (x DocumentAttributeVideo ) bool ) DocumentAttributeVideoArray {
n := 0
for _ , x := range s {
if keep (x ) {
s [n ] = x
n ++
}
}
s = s [:n ]
return s
}
func (s DocumentAttributeVideoArray ) First () (v DocumentAttributeVideo , ok bool ) {
if len (s ) < 1 {
return
}
return s [0 ], true
}
func (s DocumentAttributeVideoArray ) Last () (v DocumentAttributeVideo , ok bool ) {
if len (s ) < 1 {
return
}
return s [len (s )-1 ], true
}
func (s *DocumentAttributeVideoArray ) PopFirst () (v DocumentAttributeVideo , ok bool ) {
if s == nil || len (*s ) < 1 {
return
}
a := *s
v = a [0 ]
copy (a [0 :], a [1 :])
var zero DocumentAttributeVideo
a [len (a )-1 ] = zero
a = a [:len (a )-1 ]
*s = a
return v , true
}
func (s *DocumentAttributeVideoArray ) Pop () (v DocumentAttributeVideo , 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
}
type DocumentAttributeAudioArray []DocumentAttributeAudio
func (s DocumentAttributeAudioArray ) Sort (less func (a , b DocumentAttributeAudio ) bool ) DocumentAttributeAudioArray {
sort .Slice (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeAudioArray ) SortStable (less func (a , b DocumentAttributeAudio ) bool ) DocumentAttributeAudioArray {
sort .SliceStable (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeAudioArray ) Retain (keep func (x DocumentAttributeAudio ) bool ) DocumentAttributeAudioArray {
n := 0
for _ , x := range s {
if keep (x ) {
s [n ] = x
n ++
}
}
s = s [:n ]
return s
}
func (s DocumentAttributeAudioArray ) First () (v DocumentAttributeAudio , ok bool ) {
if len (s ) < 1 {
return
}
return s [0 ], true
}
func (s DocumentAttributeAudioArray ) Last () (v DocumentAttributeAudio , ok bool ) {
if len (s ) < 1 {
return
}
return s [len (s )-1 ], true
}
func (s *DocumentAttributeAudioArray ) PopFirst () (v DocumentAttributeAudio , ok bool ) {
if s == nil || len (*s ) < 1 {
return
}
a := *s
v = a [0 ]
copy (a [0 :], a [1 :])
var zero DocumentAttributeAudio
a [len (a )-1 ] = zero
a = a [:len (a )-1 ]
*s = a
return v , true
}
func (s *DocumentAttributeAudioArray ) Pop () (v DocumentAttributeAudio , 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
}
type DocumentAttributeFilenameArray []DocumentAttributeFilename
func (s DocumentAttributeFilenameArray ) Sort (less func (a , b DocumentAttributeFilename ) bool ) DocumentAttributeFilenameArray {
sort .Slice (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeFilenameArray ) SortStable (less func (a , b DocumentAttributeFilename ) bool ) DocumentAttributeFilenameArray {
sort .SliceStable (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeFilenameArray ) Retain (keep func (x DocumentAttributeFilename ) bool ) DocumentAttributeFilenameArray {
n := 0
for _ , x := range s {
if keep (x ) {
s [n ] = x
n ++
}
}
s = s [:n ]
return s
}
func (s DocumentAttributeFilenameArray ) First () (v DocumentAttributeFilename , ok bool ) {
if len (s ) < 1 {
return
}
return s [0 ], true
}
func (s DocumentAttributeFilenameArray ) Last () (v DocumentAttributeFilename , ok bool ) {
if len (s ) < 1 {
return
}
return s [len (s )-1 ], true
}
func (s *DocumentAttributeFilenameArray ) PopFirst () (v DocumentAttributeFilename , ok bool ) {
if s == nil || len (*s ) < 1 {
return
}
a := *s
v = a [0 ]
copy (a [0 :], a [1 :])
var zero DocumentAttributeFilename
a [len (a )-1 ] = zero
a = a [:len (a )-1 ]
*s = a
return v , true
}
func (s *DocumentAttributeFilenameArray ) Pop () (v DocumentAttributeFilename , 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
}
type DocumentAttributeCustomEmojiArray []DocumentAttributeCustomEmoji
func (s DocumentAttributeCustomEmojiArray ) Sort (less func (a , b DocumentAttributeCustomEmoji ) bool ) DocumentAttributeCustomEmojiArray {
sort .Slice (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeCustomEmojiArray ) SortStable (less func (a , b DocumentAttributeCustomEmoji ) bool ) DocumentAttributeCustomEmojiArray {
sort .SliceStable (s , func (i , j int ) bool {
return less (s [i ], s [j ])
})
return s
}
func (s DocumentAttributeCustomEmojiArray ) Retain (keep func (x DocumentAttributeCustomEmoji ) bool ) DocumentAttributeCustomEmojiArray {
n := 0
for _ , x := range s {
if keep (x ) {
s [n ] = x
n ++
}
}
s = s [:n ]
return s
}
func (s DocumentAttributeCustomEmojiArray ) First () (v DocumentAttributeCustomEmoji , ok bool ) {
if len (s ) < 1 {
return
}
return s [0 ], true
}
func (s DocumentAttributeCustomEmojiArray ) Last () (v DocumentAttributeCustomEmoji , ok bool ) {
if len (s ) < 1 {
return
}
return s [len (s )-1 ], true
}
func (s *DocumentAttributeCustomEmojiArray ) PopFirst () (v DocumentAttributeCustomEmoji , ok bool ) {
if s == nil || len (*s ) < 1 {
return
}
a := *s
v = a [0 ]
copy (a [0 :], a [1 :])
var zero DocumentAttributeCustomEmoji
a [len (a )-1 ] = zero
a = a [:len (a )-1 ]
*s = a
return v , true
}
func (s *DocumentAttributeCustomEmojiArray ) Pop () (v DocumentAttributeCustomEmoji , 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
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .