package bluej.stride.framedjava.elements;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Stream;
import threadchecker.OnThread;
import threadchecker.Tag;
import bluej.stride.framedjava.frames.CodeFrame;
import bluej.stride.generic.FrameCanvas;
public abstract class ContainerCodeElement
extends CodeElement{
public abstract List childrenUpTo(CodeElement c);
@OnThread(Tag.FX)
private static Stream streamCodeFrame(FrameCanvas canvas, Function<CodeElement, Stream<T>> f)
{
return canvas.getBlocksSubtype(CodeFrame.class).stream()
.map(CodeFrame::getCode)
.flatMap(f);
}
public List getDeclaredVariablesWithin(CodeElement child)
{
return Collections.emptyList();
}
public TopLevelCodeElement getTopLevelElement()
{
return null;
}
public MethodWithBodyElement getMethodElement()
{
return null;
}
public abstract Stream streamContained();
protected static Stream streamContained(List<CodeElement> els)
{
if (els == null) {
return Stream.empty();
}
return els.stream().flatMap(el -> Stream.concat(Stream.of(el), el.streamContained()));
}
}
top,
use,
map,
abstract class ContainerCodeElement
. childrenUpTo
. streamCodeFrame
. getDeclaredVariablesWithin
. getTopLevelElement
. getMethodElement
. streamContained
. streamContained
62 neLoCode
+ 0 LoComm