first
Some checks failed
Reduce Adoc / reduce (push) Failing after 57s
Java Unit Test with Maven / test (push) Failing after 1m42s

This commit is contained in:
2025-12-29 13:59:13 +08:00
commit 2dfed7464e
555 changed files with 35895 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
package com.alibaba.qlexpress4.runtime;
import com.alibaba.qlexpress4.QLOptions;
import com.alibaba.qlexpress4.runtime.instruction.CloseScopeInstruction;
import com.alibaba.qlexpress4.runtime.instruction.NewScopeInstruction;
import com.alibaba.qlexpress4.runtime.instruction.QLInstruction;
import java.util.List;
import java.util.function.Consumer;
/**
* Author: DQinYuan
*/
public class QLambdaDefinitionInner implements QLambdaDefinition {
/**
* function name
*/
private final String name;
private final QLInstruction[] instructions;
private final List<Param> paramsType;
private final int maxStackSize;
public QLambdaDefinitionInner(String name, List<QLInstruction> instructions, List<Param> paramsType,
int maxStackSize) {
this.name = name;
this.instructions = instructions.toArray(new QLInstruction[0]);
this.paramsType = paramsType;
this.maxStackSize = maxStackSize;
}
public QLambdaDefinitionInner(String name, QLInstruction[] instructions, List<Param> paramsType, int maxStackSize) {
this.name = name;
this.instructions = instructions;
this.paramsType = paramsType;
this.maxStackSize = maxStackSize;
}
@Override
public String getName() {
return name;
}
public QLInstruction[] getInstructions() {
return instructions;
}
public List<Param> getParamsType() {
return paramsType;
}
public int getMaxStackSize() {
return maxStackSize;
}
@Override
public QLambda toLambda(QContext qContext, QLOptions qlOptions, boolean newEnv) {
return new QLambdaInner(this, new DelegateQContext(qContext, qContext.getCurrentScope()), qlOptions, newEnv);
}
@Override
public void println(int depth, Consumer<String> debug) {
for (int i = 0; i < instructions.length; i++) {
instructions[i].println(i, depth, debug);
}
}
public static class Param {
private final String name;
private final Class<?> clazz;
public Param(String name, Class<?> clazz) {
this.name = name;
this.clazz = clazz;
}
public String getName() {
return name;
}
public Class<?> getClazz() {
return clazz;
}
}
}