-
Notifications
You must be signed in to change notification settings - Fork 587
/
mutablePrimitiveBag.stg
131 lines (109 loc) · 3.58 KB
/
mutablePrimitiveBag.stg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import "copyrightAndOthers.stg"
import "primitiveAPI.stg"
targetPath() ::= "org/eclipse/collections/api/bag/primitive"
fileName(primitive) ::= "Mutable<primitive.name>Bag"
class(primitive) ::= <<
<body(primitive.type, primitive.name)>
>>
body(type, name) ::= <<
<copyrightAndOthers()>
package org.eclipse.collections.api.bag.primitive;
import org.eclipse.collections.api.<name>Iterable;
import org.eclipse.collections.api.bag.MutableBag;
import org.eclipse.collections.api.block.function.primitive.<name>ToObjectFunction;
<if(!primitive.intPrimitive)>import org.eclipse.collections.api.block.predicate.primitive.IntPredicate;<endif>
import org.eclipse.collections.api.block.predicate.primitive.<name>Predicate;
import org.eclipse.collections.api.block.procedure.primitive.<name>Procedure;
import org.eclipse.collections.api.collection.primitive.Mutable<name>Collection;
import org.eclipse.collections.api.list.MutableList;
import org.eclipse.collections.api.tuple.primitive.<name>IntPair;
import org.eclipse.collections.api.set.primitive.Mutable<name>Set;
/**
* This file was automatically generated from template file mutablePrimitiveBag.stg.
*
* @since 3.0.
*/
public interface Mutable<name>Bag extends Mutable<name>Collection, <name>Bag
{
void addOccurrences(<type> item, int occurrences);
boolean removeOccurrences(<type> item, int occurrences);
/**
* @since 9.0.
*/
@Override
default Mutable<name>Bag tap(<name>Procedure procedure)
{
this.forEach(procedure);
return this;
}
/**
* Returns all elements of the bag that have a number of occurrences that satisfy the predicate.
*
* @since 8.0
*/
@Override
Mutable<name>Bag selectByOccurrences(IntPredicate predicate);
/**
* Returns all elements of the bag that have more than one occurrence.
*
* @since 9.2
*/
@Override
default Mutable<name>Bag selectDuplicates()
{
return this.selectByOccurrences(occurrences -> occurrences > 1);
}
/**
* Returns all elements of the bag that have exactly one occurrence.
*
* @since 9.2
*/
@Override
default Mutable<name>Set selectUnique()
{
throw new UnsupportedOperationException("Adding default implementation so as to not break compatibility");
}
/**
* Returns the {@code count} most frequently occurring items.
*
* In the event of a tie, all of the items with the number of occurrences that match the occurrences of the last
* item will be returned.
*
* @since 8.0
*/
@Override
MutableList\<<name>IntPair> topOccurrences(int count);
/**
* Returns the {@code count} least frequently occurring items.
*
* In the event of a tie, all of the items with the number of occurrences that match the occurrences of the last
* item will be returned.
*
* @since 8.0
*/
@Override
MutableList\<<name>IntPair> bottomOccurrences(int count);
<sharedAPI(fileName(primitive), name)>
@Override
\<V> MutableBag\<V> collect(<name>ToObjectFunction\<? extends V> function);
<mutableAPI(fileName(primitive), type, name)>
@Override
Mutable<name>Bag asUnmodifiable();
@Override
Mutable<name>Bag asSynchronized();
/**
* Returns an immutable copy of this bag.
*/
@Override
Immutable<name>Bag toImmutable();
/**
* Creates a new empty mutable version of the same Bag type.
*
* @since 9.2.
*/
default Mutable<name>Bag newEmpty()
{
throw new UnsupportedOperationException("Implement in concrete classes.");
}
}
>>