103 lines
2.1 KiB
Java
103 lines
2.1 KiB
Java
package io.gitlab.jfronny.muscript.data.dynamic.lens;
|
|
|
|
import io.gitlab.jfronny.muscript.compiler.ExprWriter;
|
|
import io.gitlab.jfronny.muscript.data.dynamic.*;
|
|
import io.gitlab.jfronny.muscript.data.dynamic.type.DType;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Objects;
|
|
|
|
public abstract sealed class DLens implements DynamicBase permits DBoolLens, DCallableLens, DListLens, DNumberLens, DObjectLens, DStringLens {
|
|
protected final Dynamic source;
|
|
|
|
protected DLens(Dynamic source) {
|
|
this.source = Objects.requireNonNull(source);
|
|
}
|
|
|
|
@Override
|
|
public void serialize(ExprWriter writer) throws IOException {
|
|
source.serialize(writer);
|
|
}
|
|
|
|
@Override
|
|
public boolean isBool() {
|
|
return source.isBool();
|
|
}
|
|
|
|
@Override
|
|
public DBool asBool() {
|
|
return source.asBool();
|
|
}
|
|
|
|
@Override
|
|
public boolean isNumber() {
|
|
return source.isNumber();
|
|
}
|
|
|
|
@Override
|
|
public DNumber asNumber() {
|
|
return source.asNumber();
|
|
}
|
|
|
|
@Override
|
|
public boolean isString() {
|
|
return source.isString();
|
|
}
|
|
|
|
@Override
|
|
public DString asString() {
|
|
return source.asString();
|
|
}
|
|
|
|
@Override
|
|
public boolean isObject() {
|
|
return source.isObject();
|
|
}
|
|
|
|
@Override
|
|
public DObject asObject() {
|
|
return source.asObject();
|
|
}
|
|
|
|
@Override
|
|
public boolean isList() {
|
|
return source.isList();
|
|
}
|
|
|
|
@Override
|
|
public DList asList() {
|
|
return source.asList();
|
|
}
|
|
|
|
@Override
|
|
public boolean isCallable() {
|
|
return source.isCallable();
|
|
}
|
|
|
|
@Override
|
|
public DCallable asCallable() {
|
|
return source.asCallable();
|
|
}
|
|
|
|
@Override
|
|
public @Nullable DType getSignature() {
|
|
return source.getSignature();
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return source.hashCode();
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
return obj instanceof DLens lens ? source.equals(lens.source) : source.equals(obj);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return source.toString();
|
|
}
|
|
}
|