Latest Update

- Added: Iterator
- Added: Iterable
- Fixed: Simple Mapper is always literal.
- Fixed: Conusmer bugs.
- Changed: Path designer is now a function.
- Removed: Cache from the repo. Not needed.
This commit is contained in:
2020-11-12 02:13:54 +01:00
parent 151e466b87
commit 8fcf370e87
12 changed files with 316 additions and 67 deletions
@@ -1,2 +0,0 @@
List=8346cdbb0624aa07f1c54d00f765cbd5
Consumer=e0112061d850a9ea6049cfe6571e2750
@@ -0,0 +1,28 @@
package speiger.src.collections.PACKAGE.collections;
#if !TYPE_OBJECT
import java.util.Objects;
import java.util.function.Consumer;
import speiger.src.collections.PACKAGE.functions.CONSUMER;
#endif
public interface ITERABLE KEY_GENERIC_TYPE extends Iterable<CLASS_TYPE>
{
@Override
ITERATOR KEY_GENERIC_TYPE iterator();
#if !TYPE_OBJECT
default void forEach(CONSUMER action) {
Objects.requireNonNull(action);
iterator().forEachRemaining(action);
}
@Deprecated
@Override
default void forEach(Consumer<? super CLASS_TYPE> action) {
Objects.requireNonNull(action);
iterator().forEachRemaining(action);
}
#endif
}
@@ -0,0 +1,40 @@
package speiger.src.collections.PACKAGE.collections;
import java.util.Iterator;
#if !TYPE_OBJECT
import java.util.Objects;
import java.util.function.Consumer;
import speiger.src.collections.PACKAGE.functions.CONSUMER;
#endif
public interface ITERATOR KEY_GENERIC_TYPE extends Iterator<CLASS_TYPE>
{
#if !TYPE_OBJECT
public KEY_TYPE NEXT();
@Deprecated
@Override
public default CLASS_TYPE next() { return KEY_TO_OBJ(next()); }
public default void forEachRemaining(CONSUMER action) {
Objects.requireNonNull(action);
while(hasNext()) { action.accept(NEXT()); }
}
@Deprecated
@Override
default void forEachRemaining(Consumer<? super CLASS_TYPE> action) {
Objects.requireNonNull(action);
forEachRemaining(action::accept);
}
#endif
default int skip(int amount) {
if(amount < 0) throw new IllegalStateException("Negative Numbers are not allowed");
int temp = amount;
for(;amount > 0 && hasNext();NEXT(), amount--);
return temp - amount;
}
}
@@ -1,20 +1,45 @@
package speiger.src.collections.example.functions;
package speiger.src.collections.PACKAGE.functions;
import java.util.Objects;
import java.util.function.Consumer;
#if !TYPE_BOOLEAN
#if !JDK_CONSUMER
import speiger.src.collections.utils.SanityChecks;
#endif
public interface CONSUMER extends Consumer<CLASS_TYPE>, JAVA_CONSUMER
{
#else
public interface CONSUMER extends Consumer<CLASS_TYPE>
#endif
{
void accept(KEY_TYPE t);
default void accept(CLASS_TYPE t) { accept(OBJ_TO_KEY(t)); }
#if !JDK_CONSUMER
@Override
default void accept(JAVA_TYPE t) { accept(SanityChecks.SANITY_CAST(t)); }
#endif
@Override
default void accept(CLASS_TYPE t) { accept(OBJ_TO_KEY(t)); }
@Deprecated
@Override
default CONSUMER andThen(Consumer<? super CLASS_TYPE> after) {
Objects.requireNonNull(after);
return T -> {accept(T); after.accept(KEY_TO_OBJ(T));};
}
#if !TYPE_BOOLEAN
@Deprecated
@Override
default CONSUMER andThen(JAVA_CONSUMER after) {
Objects.requireNonNull(after);
return T -> {accept(T); after.accept(T);};
}
#endif
default CONSUMER andThen(CONSUMER after) {
Objects.requireNonNull(after);
return T -> {accept(T); after.accept(T);};