Skip to content

Commit

Permalink
Release 3.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
SMEZ1234 committed Feb 11, 2020
1 parent ce61213 commit 60edd1f
Show file tree
Hide file tree
Showing 12 changed files with 163 additions and 10 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
Arachne 3
=================
RELEASE VERSION: Arachne 3.0-beta (2020)
RELEASE VERSION: Arachne 3.0.1 (2020)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package arachne.lib.function;

@FunctionalInterface
public interface BooleanToDoubleFunction
{
double apply(boolean value);
}
10 changes: 9 additions & 1 deletion src/main/java/arachne/lib/pipeline/BooleanSource.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package arachne.lib.pipeline;

import arachne.lib.function.BooleanFunction;
import arachne.lib.function.BooleanToDoubleFunction;
import arachne.lib.io.SettableBoolean;
import arachne.lib.pipeline.translators.BooleanToDoubleTranslator;
import arachne.lib.pipeline.translators.FromBooleanTranslator;

public interface BooleanSource
{
Expand All @@ -11,7 +14,12 @@ public interface BooleanSource
void feedOutputs();

default <U> Source<U> attachTranslator(BooleanFunction<U> translation) {
BooleanTranslator<U> translator = new BooleanTranslator<U>(translation);
FromBooleanTranslator<U> translator = new FromBooleanTranslator<U>(translation);
return attachOutput(translator);
}

default DoubleSource attachTranslatorToDouble(BooleanToDoubleFunction translation) {
BooleanToDoubleTranslator translator = new BooleanToDoubleTranslator(translation);
return attachOutput(translator);
}
}
11 changes: 10 additions & 1 deletion src/main/java/arachne/lib/pipeline/DoubleSource.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package arachne.lib.pipeline;

import java.util.function.DoubleFunction;
import java.util.function.DoublePredicate;

import arachne.lib.io.SettableDouble;
import arachne.lib.pipeline.translators.DoubleToBooleanTranslator;
import arachne.lib.pipeline.translators.FromDoubleTranslator;

public interface DoubleSource
{
Expand All @@ -11,7 +15,12 @@ public interface DoubleSource
void feedOutputs();

default <U> Source<U> attachTranslator(DoubleFunction<U> translation) {
DoubleTranslator<U> translator = new DoubleTranslator<U>(translation);
FromDoubleTranslator<U> translator = new FromDoubleTranslator<U>(translation);
return attachOutput(translator);
}

default BooleanSource attachTranslatorToBoolean(DoublePredicate translation) {
DoubleToBooleanTranslator translator = new DoubleToBooleanTranslator(translation);
return attachOutput(translator);
}
}
19 changes: 19 additions & 0 deletions src/main/java/arachne/lib/pipeline/Source.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package arachne.lib.pipeline;

import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.ToDoubleFunction;

import arachne.lib.io.Settable;
import arachne.lib.pipeline.translators.ToBooleanTranslator;
import arachne.lib.pipeline.translators.ToDoubleTranslator;
import arachne.lib.pipeline.translators.Translator;

public interface Source<T>
{
Expand All @@ -17,4 +22,18 @@ default <U> Source<U> attachTranslator(Function<T, U> translation) {

return translator;
}

default BooleanSource attachTranslatorToBoolean(Predicate<T> translation) {
ToBooleanTranslator<T> translator = new ToBooleanTranslator<T>(translation);
attachOutput(translator);

return translator;
}

default DoubleSource attachTranslatorToDouble(ToDoubleFunction<T> translation) {
ToDoubleTranslator<T> translator = new ToDoubleTranslator<T>(translation);
attachOutput(translator);

return translator;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package arachne.lib.pipeline.translators;

import arachne.lib.function.BooleanToDoubleFunction;
import arachne.lib.io.SettableBoolean;
import arachne.lib.pipeline.AbstractDoubleSource;

public class BooleanToDoubleTranslator extends AbstractDoubleSource implements SettableBoolean
{
protected double value;
protected final BooleanToDoubleFunction translation;

public BooleanToDoubleTranslator(BooleanToDoubleFunction translation) {
this.translation = translation;
}

@Override
protected double getOutputValue() {
return value;
}

@Override
public void accept(boolean value) {
this.value = translation.apply(value);
feedOutputs();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package arachne.lib.pipeline.translators;

import java.util.function.DoublePredicate;

import arachne.lib.io.SettableDouble;
import arachne.lib.pipeline.AbstractBooleanSource;

public class DoubleToBooleanTranslator extends AbstractBooleanSource implements SettableDouble
{
protected boolean value;
protected final DoublePredicate translation;

public DoubleToBooleanTranslator(DoublePredicate translation) {
this.translation = translation;
}

@Override
protected boolean getOutputValue() {
return value;
}

@Override
public void accept(double value) {
this.value = translation.test(value);
feedOutputs();
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package arachne.lib.pipeline;
package arachne.lib.pipeline.translators;

import arachne.lib.function.BooleanFunction;
import arachne.lib.io.SettableBoolean;
import arachne.lib.pipeline.AbstractSource;

public class BooleanTranslator<R> extends AbstractSource<R> implements SettableBoolean
public class FromBooleanTranslator<R> extends AbstractSource<R> implements SettableBoolean
{
protected R value;
protected final BooleanFunction<R> translation;

public BooleanTranslator(BooleanFunction<R> translation) {
public FromBooleanTranslator(BooleanFunction<R> translation) {
this.translation = translation;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package arachne.lib.pipeline;
package arachne.lib.pipeline.translators;

import java.util.function.DoubleFunction;

import arachne.lib.io.SettableDouble;
import arachne.lib.pipeline.AbstractSource;

public class DoubleTranslator<R> extends AbstractSource<R> implements SettableDouble
public class FromDoubleTranslator<R> extends AbstractSource<R> implements SettableDouble
{
protected R value;
protected final DoubleFunction<R> translation;

public DoubleTranslator(DoubleFunction<R> translation) {
public FromDoubleTranslator(DoubleFunction<R> translation) {
this.translation = translation;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package arachne.lib.pipeline.translators;

import java.util.function.Predicate;

import arachne.lib.io.Settable;
import arachne.lib.pipeline.AbstractBooleanSource;

public class ToBooleanTranslator<R> extends AbstractBooleanSource implements Settable<R>
{
protected boolean value;
protected final Predicate<R> translation;

public ToBooleanTranslator(Predicate<R> translation) {
this.translation = translation;
}

@Override
protected boolean getOutputValue() {
return value;
}

@Override
public void accept(R value) {
this.value = translation.test(value);
feedOutputs();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package arachne.lib.pipeline.translators;

import java.util.function.ToDoubleFunction;

import arachne.lib.io.Settable;
import arachne.lib.pipeline.AbstractDoubleSource;

public class ToDoubleTranslator<R> extends AbstractDoubleSource implements Settable<R>
{
protected double value;
protected final ToDoubleFunction<R> translation;

public ToDoubleTranslator(ToDoubleFunction<R> translation) {
this.translation = translation;
}

@Override
protected double getOutputValue() {
return value;
}

@Override
public void accept(R value) {
this.value = translation.applyAsDouble(value);
feedOutputs();
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package arachne.lib.pipeline;
package arachne.lib.pipeline.translators;

import java.util.function.Function;

import arachne.lib.io.Settable;
import arachne.lib.pipeline.AbstractSource;

public class Translator<T, R> extends AbstractSource<R> implements Settable<T>
{
Expand Down

0 comments on commit 60edd1f

Please sign in to comment.