@@ -160,6 +160,21 @@ func (slice intSlicePtr) DistinctPtr() intSlicePtr {
160160 return DistinctIntPtr (slice )
161161}
162162
163+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
164+ func (slice intSlice ) TakeWhile (functors ... intFunctorForFilter ) intSlice {
165+
166+ tmpSlice := slice
167+
168+ for _ , f := range functors {
169+ if f == nil {
170+ continue
171+ }
172+ tmpSlice = TakeWhileInt (f , tmpSlice )
173+ }
174+
175+ return tmpSlice
176+ }
177+
163178type int64Slice []int64
164179type int64FunctorForMap func (int64 ) int64
165180type int64FunctorForFilter func (int64 ) bool
@@ -320,6 +335,21 @@ func (slice int64SlicePtr) DistinctPtr() int64SlicePtr {
320335 return DistinctInt64Ptr (slice )
321336}
322337
338+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
339+ func (slice int64Slice ) TakeWhile (functors ... int64FunctorForFilter ) int64Slice {
340+
341+ tmpSlice := slice
342+
343+ for _ , f := range functors {
344+ if f == nil {
345+ continue
346+ }
347+ tmpSlice = TakeWhileInt64 (f , tmpSlice )
348+ }
349+
350+ return tmpSlice
351+ }
352+
323353type int32Slice []int32
324354type int32FunctorForMap func (int32 ) int32
325355type int32FunctorForFilter func (int32 ) bool
@@ -480,6 +510,21 @@ func (slice int32SlicePtr) DistinctPtr() int32SlicePtr {
480510 return DistinctInt32Ptr (slice )
481511}
482512
513+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
514+ func (slice int32Slice ) TakeWhile (functors ... int32FunctorForFilter ) int32Slice {
515+
516+ tmpSlice := slice
517+
518+ for _ , f := range functors {
519+ if f == nil {
520+ continue
521+ }
522+ tmpSlice = TakeWhileInt32 (f , tmpSlice )
523+ }
524+
525+ return tmpSlice
526+ }
527+
483528type int16Slice []int16
484529type int16FunctorForMap func (int16 ) int16
485530type int16FunctorForFilter func (int16 ) bool
@@ -640,6 +685,21 @@ func (slice int16SlicePtr) DistinctPtr() int16SlicePtr {
640685 return DistinctInt16Ptr (slice )
641686}
642687
688+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
689+ func (slice int16Slice ) TakeWhile (functors ... int16FunctorForFilter ) int16Slice {
690+
691+ tmpSlice := slice
692+
693+ for _ , f := range functors {
694+ if f == nil {
695+ continue
696+ }
697+ tmpSlice = TakeWhileInt16 (f , tmpSlice )
698+ }
699+
700+ return tmpSlice
701+ }
702+
643703type int8Slice []int8
644704type int8FunctorForMap func (int8 ) int8
645705type int8FunctorForFilter func (int8 ) bool
@@ -800,6 +860,21 @@ func (slice int8SlicePtr) DistinctPtr() int8SlicePtr {
800860 return DistinctInt8Ptr (slice )
801861}
802862
863+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
864+ func (slice int8Slice ) TakeWhile (functors ... int8FunctorForFilter ) int8Slice {
865+
866+ tmpSlice := slice
867+
868+ for _ , f := range functors {
869+ if f == nil {
870+ continue
871+ }
872+ tmpSlice = TakeWhileInt8 (f , tmpSlice )
873+ }
874+
875+ return tmpSlice
876+ }
877+
803878type uintSlice []uint
804879type uintFunctorForMap func (uint ) uint
805880type uintFunctorForFilter func (uint ) bool
@@ -960,6 +1035,21 @@ func (slice uintSlicePtr) DistinctPtr() uintSlicePtr {
9601035 return DistinctUintPtr (slice )
9611036}
9621037
1038+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
1039+ func (slice uintSlice ) TakeWhile (functors ... uintFunctorForFilter ) uintSlice {
1040+
1041+ tmpSlice := slice
1042+
1043+ for _ , f := range functors {
1044+ if f == nil {
1045+ continue
1046+ }
1047+ tmpSlice = TakeWhileUint (f , tmpSlice )
1048+ }
1049+
1050+ return tmpSlice
1051+ }
1052+
9631053type uint64Slice []uint64
9641054type uint64FunctorForMap func (uint64 ) uint64
9651055type uint64FunctorForFilter func (uint64 ) bool
@@ -1120,6 +1210,21 @@ func (slice uint64SlicePtr) DistinctPtr() uint64SlicePtr {
11201210 return DistinctUint64Ptr (slice )
11211211}
11221212
1213+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
1214+ func (slice uint64Slice ) TakeWhile (functors ... uint64FunctorForFilter ) uint64Slice {
1215+
1216+ tmpSlice := slice
1217+
1218+ for _ , f := range functors {
1219+ if f == nil {
1220+ continue
1221+ }
1222+ tmpSlice = TakeWhileUint64 (f , tmpSlice )
1223+ }
1224+
1225+ return tmpSlice
1226+ }
1227+
11231228type uint32Slice []uint32
11241229type uint32FunctorForMap func (uint32 ) uint32
11251230type uint32FunctorForFilter func (uint32 ) bool
@@ -1280,6 +1385,21 @@ func (slice uint32SlicePtr) DistinctPtr() uint32SlicePtr {
12801385 return DistinctUint32Ptr (slice )
12811386}
12821387
1388+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
1389+ func (slice uint32Slice ) TakeWhile (functors ... uint32FunctorForFilter ) uint32Slice {
1390+
1391+ tmpSlice := slice
1392+
1393+ for _ , f := range functors {
1394+ if f == nil {
1395+ continue
1396+ }
1397+ tmpSlice = TakeWhileUint32 (f , tmpSlice )
1398+ }
1399+
1400+ return tmpSlice
1401+ }
1402+
12831403type uint16Slice []uint16
12841404type uint16FunctorForMap func (uint16 ) uint16
12851405type uint16FunctorForFilter func (uint16 ) bool
@@ -1440,6 +1560,21 @@ func (slice uint16SlicePtr) DistinctPtr() uint16SlicePtr {
14401560 return DistinctUint16Ptr (slice )
14411561}
14421562
1563+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
1564+ func (slice uint16Slice ) TakeWhile (functors ... uint16FunctorForFilter ) uint16Slice {
1565+
1566+ tmpSlice := slice
1567+
1568+ for _ , f := range functors {
1569+ if f == nil {
1570+ continue
1571+ }
1572+ tmpSlice = TakeWhileUint16 (f , tmpSlice )
1573+ }
1574+
1575+ return tmpSlice
1576+ }
1577+
14431578type uint8Slice []uint8
14441579type uint8FunctorForMap func (uint8 ) uint8
14451580type uint8FunctorForFilter func (uint8 ) bool
@@ -1600,6 +1735,21 @@ func (slice uint8SlicePtr) DistinctPtr() uint8SlicePtr {
16001735 return DistinctUint8Ptr (slice )
16011736}
16021737
1738+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
1739+ func (slice uint8Slice ) TakeWhile (functors ... uint8FunctorForFilter ) uint8Slice {
1740+
1741+ tmpSlice := slice
1742+
1743+ for _ , f := range functors {
1744+ if f == nil {
1745+ continue
1746+ }
1747+ tmpSlice = TakeWhileUint8 (f , tmpSlice )
1748+ }
1749+
1750+ return tmpSlice
1751+ }
1752+
16031753type stringSlice []string
16041754type stringFunctorForMap func (string ) string
16051755type stringFunctorForFilter func (string ) bool
@@ -1760,6 +1910,21 @@ func (slice stringSlicePtr) DistinctPtr() stringSlicePtr {
17601910 return DistinctStrPtr (slice )
17611911}
17621912
1913+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
1914+ func (slice stringSlice ) TakeWhile (functors ... stringFunctorForFilter ) stringSlice {
1915+
1916+ tmpSlice := slice
1917+
1918+ for _ , f := range functors {
1919+ if f == nil {
1920+ continue
1921+ }
1922+ tmpSlice = TakeWhileStr (f , tmpSlice )
1923+ }
1924+
1925+ return tmpSlice
1926+ }
1927+
17631928type boolSlice []bool
17641929type boolFunctorForMap func (bool ) bool
17651930type boolFunctorForFilter func (bool ) bool
@@ -1920,6 +2085,21 @@ func (slice boolSlicePtr) DistinctPtr() boolSlicePtr {
19202085 return DistinctBoolPtr (slice )
19212086}
19222087
2088+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
2089+ func (slice boolSlice ) TakeWhile (functors ... boolFunctorForFilter ) boolSlice {
2090+
2091+ tmpSlice := slice
2092+
2093+ for _ , f := range functors {
2094+ if f == nil {
2095+ continue
2096+ }
2097+ tmpSlice = TakeWhileBool (f , tmpSlice )
2098+ }
2099+
2100+ return tmpSlice
2101+ }
2102+
19232103type float32Slice []float32
19242104type float32FunctorForMap func (float32 ) float32
19252105type float32FunctorForFilter func (float32 ) bool
@@ -2080,6 +2260,21 @@ func (slice float32SlicePtr) DistinctPtr() float32SlicePtr {
20802260 return DistinctFloat32Ptr (slice )
20812261}
20822262
2263+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
2264+ func (slice float32Slice ) TakeWhile (functors ... float32FunctorForFilter ) float32Slice {
2265+
2266+ tmpSlice := slice
2267+
2268+ for _ , f := range functors {
2269+ if f == nil {
2270+ continue
2271+ }
2272+ tmpSlice = TakeWhileFloat32 (f , tmpSlice )
2273+ }
2274+
2275+ return tmpSlice
2276+ }
2277+
20832278type float64Slice []float64
20842279type float64FunctorForMap func (float64 ) float64
20852280type float64FunctorForFilter func (float64 ) bool
@@ -2239,3 +2434,18 @@ func (slice float64Slice) Distinct() float64Slice {
22392434func (slice float64SlicePtr ) DistinctPtr () float64SlicePtr {
22402435 return DistinctFloat64Ptr (slice )
22412436}
2437+
2438+ //TakeWhile - Returns a new list based on predicate function. It returns new list once condition fails.
2439+ func (slice float64Slice ) TakeWhile (functors ... float64FunctorForFilter ) float64Slice {
2440+
2441+ tmpSlice := slice
2442+
2443+ for _ , f := range functors {
2444+ if f == nil {
2445+ continue
2446+ }
2447+ tmpSlice = TakeWhileFloat64 (f , tmpSlice )
2448+ }
2449+
2450+ return tmpSlice
2451+ }
0 commit comments