Added RuleSheet and Collection & AbstractCollection. Optimized Variables

This commit is contained in:
2020-11-13 03:01:13 +01:00
parent 8fcf370e87
commit c61c8a7806
6 changed files with 200 additions and 15 deletions
@@ -24,32 +24,37 @@ public class GlobalVariables
public GlobalVariables createVariables()
{
operators.add(new SimpleMapper("PACKAGE", type.getPathType()));
operators.add(new SimpleMapper("CLASS_TYPE", type.getClassType()));
operators.add(new SimpleMapper("KEY_TYPE", type.getKeyType()));
operators.add(new SimpleMapper(" KEY_GENERIC_TYPE", type == ClassType.OBJECT ? "<"+type.getKeyType()+">" : ""));
addSimpleMapper("PACKAGE", type.getPathType());
addSimpleMapper("CLASS_TYPE", type.getClassType());
addSimpleMapper("KEY_TYPE", type.getKeyType());
addSimpleMapper(" KEY_GENERIC_TYPE", type == ClassType.OBJECT ? "<"+type.getKeyType()+">" : "");
if(type.needsCustomJDKType())
{
operators.add(new SimpleMapper("JAVA_TYPE", type.getCustomJDKType().getKeyType()));
operators.add(new SimpleMapper("SANITY_CAST", "castTo"+type.getFileType()));
addSimpleMapper("JAVA_TYPE", type.getCustomJDKType().getKeyType());
addSimpleMapper("SANITY_CAST", "castTo"+type.getFileType());
}
operators.add(new SimpleMapper("KEY_TO_OBJ", type.getClassType()+".valueOf"));
operators.add(new InjectMapper("OBJ_TO_KEY(\\([^)]+\\)|\\S)", "%s."+type.getKeyType()+"Value()").removeBraces());
addSimpleMapper("KEY_TO_OBJ", type.getClassType()+".valueOf");
addInjectMapper("OBJ_TO_KEY(\\([^)]+\\)|\\S)", "%s."+type.getKeyType()+"Value()").removeBraces();
addInjectMapper("CLASS_TO_KEY(\\([^)]+\\)|\\S)", "(("+type.getClassType()+")%s)."+type.getKeyType()+"Value()").removeBraces();
return this;
}
public GlobalVariables createClassTypes()
{
operators.add(new SimpleMapper("JAVA_CONSUMER", type.isPrimitiveBlocking() ? "" : "java.util.function."+type.getCustomJDKType().getFileType()+"Consumer"));
operators.add(new SimpleMapper("CONSUMER", type.getFileType()+"Consumer"));
operators.add(new SimpleMapper("ITERATOR", type.getFileType()+"Iterator"));
operators.add(new SimpleMapper("ITERABLE", type.getFileType()+"Iterable"));
addSimpleMapper("JAVA_PREDICATE", type.isPrimitiveBlocking() ? "" : type.getCustomJDKType().getFileType()+"Predicate");
addSimpleMapper("JAVA_CONSUMER", type.isPrimitiveBlocking() ? "" : "java.util.function."+type.getCustomJDKType().getFileType()+"Consumer");
addSimpleMapper("CONSUMER", type.getFileType()+"Consumer");
addSimpleMapper("ITERATOR", type.getFileType()+"Iterator");
addSimpleMapper("ITERABLE", type.getFileType()+"Iterable");
addSimpleMapper("ABSTRACT_COLLECTION", type.getFileType()+"AbstractCollection");
addSimpleMapper("COLLECTION", type.getFileType()+"Collection");
return this;
}
public GlobalVariables createFunctions()
{
operators.add(new SimpleMapper("NEXT()", "next"+type.getNonClassType()+"()"));
addSimpleMapper("NEXT()", "next"+type.getNonClassType()+"()");
return this;
}
@@ -60,6 +65,10 @@ public class GlobalVariables
{
flags.add("JDK_CONSUMER");
}
if(!type.isPrimitiveBlocking())
{
flags.add("PRIMITIVES");
}
return this;
}
@@ -77,6 +86,18 @@ public class GlobalVariables
return type;
}
private void addSimpleMapper(String pattern, String replacement)
{
operators.add(new SimpleMapper(pattern, replacement));
}
private InjectMapper addInjectMapper(String pattern, String replacement)
{
InjectMapper mapper = new InjectMapper(pattern, replacement);
operators.add(mapper);
return mapper;
}
class PathBuilder implements UnaryOperator<Path>
{
String before;
@@ -71,7 +71,7 @@ public class TestBuilder extends TemplateProcessor
{
try
{
new TestBuilder().process(true);
new TestBuilder().process(false);
}
catch(InterruptedException e)
{
@@ -0,0 +1,78 @@
package speiger.src.collections.PACKAGE.collections;
import java.util.AbstractCollection;
public abstract class ABSTRACT_COLLECTION KEY_GENERIC_TYPE extends AbstractCollection<CLASS_TYPE> implements COLLECTION KEY_GENERIC_TYPE
{
@Override
public abstract ITERATOR KEY_GENERIC_TYPE iterator();
#if !TYPE_OBJECT
@Override
@Deprecated
public boolean add(CLASS_TYPE e) { return COLLECTION.super.add(e); }
@Override
public boolean addAll(COLLECTION c) {
boolean modified = false;
for(KEY_TYPE e : c) {
modified |= add(e);
}
return modified;
}
@Override
@Deprecated
public boolean contains(Object e) { return COLLECTION.super.contains(e); }
@Override
public boolean contains(KEY_TYPE e) {
for(KEY_TYPE entry : this) { if(entry == e) return true; }
return false;
}
@Override
public boolean containsAll(COLLECTION c) {
for(KEY_TYPE e : c)
if(!contains(e))
return false;
return true;
}
@Override
public boolean containsAny(COLLECTION c) {
for(KEY_TYPE e : c)
if(contains(e))
return true;
return false;
}
@Override
@Deprecated
public boolean remove(Object e) { return COLLECTION.super.remove(e); }
@Override
public boolean removeAll(COLLECTION c) {
boolean modified = false;
for(ITERATOR iter = iterator();iter.hasNext();) {
if(c.contains(iter.NEXT())) {
iter.remove();
modified = true;
}
}
return modified;
}
@Override
public boolean retainAll(COLLECTION c) {
boolean modified = false;
for(ITERATOR iter = iterator();iter.hasNext();) {
if(!c.contains(iter.NEXT())) {
iter.remove();
modified = true;
}
}
return modified;
}
#endif
}
@@ -0,0 +1,70 @@
package speiger.src.collections.PACKAGE.collections;
import java.util.Collection;
#if PRIMITIVES
import java.util.Objects;
import java.util.function.JAVA_PREDICATE;
#endif
public interface COLLECTION KEY_GENERIC_TYPE extends Collection<CLASS_TYPE>, ITERABLE KEY_GENERIC_TYPE
{
#if !TYPE_OBJECT
public boolean add(KEY_TYPE o);
public boolean addAll(COLLECTION c);
public boolean contains(KEY_TYPE o);
public boolean containsAll(COLLECTION c);
public boolean containsAny(COLLECTION c);
public boolean remove(KEY_TYPE o);
public boolean removeAll(COLLECTION c);
public boolean retainAll(COLLECTION c);
public KEY_TYPE[] TO_ARRAY();
public KEY_TYPE[] TO_ARRAY(KEY_TYPE[] a);
#if PRIMITIVES
public default boolean remIf(JAVA_PREDICATE filter) {
Objects.requireNonNull(filter);
boolean removed = false;
final ITERATOR each = iterator();
while (each.hasNext()) {
if (filter.test(each.NEXT())) {
each.remove();
removed = true;
}
}
return removed;
}
#endif
@Override
@Deprecated
public default boolean add(CLASS_TYPE o) { return add(OBJ_TO_KEY(o)); }
@Override
@Deprecated
public default boolean contains(Object o) { return o != null && contains(CLASS_TO_KEY(o)); }
@Override
@Deprecated
public default boolean remove(Object o) { return o != null && remove(CLASS_TO_KEY(o)); }
@Override
@Deprecated
public <K> K[] toArray(K[] a);
@Override
@Deprecated
public Object[] toArray();
#endif
@Override
public ITERATOR KEY_GENERIC_TYPE iterator();
}
@@ -31,7 +31,7 @@ public interface CONSUMER extends Consumer<CLASS_TYPE>
return T -> {accept(T); after.accept(KEY_TO_OBJ(T));};
}
#if !TYPE_BOOLEAN
#if PRIMITIVES
@Deprecated
@Override
default CONSUMER andThen(JAVA_CONSUMER after) {