wip: icstd

This commit is contained in:
reider745
2026-06-26 19:20:51 +03:00
parent 78d659da67
commit 97f256522a
17 changed files with 366 additions and 94 deletions
@@ -17,4 +17,22 @@ public final class BindingOverload {
public boolean needJavaWrap = false;
public String callSrc = "";
public List<String> attrs = new ArrayList<String>();
@Override
public String toString() {
return "BindingOverload{" +
"name='" + name + '\'' +
", moduleName='" + moduleName + '\'' +
", mangledName='" + mangledName + '\'' +
", bindType='" + bindType + '\'' +
", moduleClsName='" + moduleClsName + '\'' +
", fnType='" + fnType + '\'' +
", ret=" + ret +
", args=" + args +
", argsCnt=" + argsCnt +
", needJavaWrap=" + needJavaWrap +
", callSrc='" + callSrc + '\'' +
", attrs=" + attrs +
'}';
}
}
@@ -565,7 +565,8 @@ public final class JavaBindingGenerator {
callArgs.add(overload.args.get(i).def);
}
}
generateWrapMethod(overload, overload.name, overload.name, callArgs);
generateWrapMethod(overload, overload.name, overload.callSrc, callArgs);
}
private void generateConstructor(String genClassName, BindingOverload overload) {
@@ -23,10 +23,7 @@ import com.github.javaparser.ast.type.Type;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -100,6 +97,15 @@ public final class JavaBindingResolver {
return result;
}
private String getAnnotation(NodeWithAnnotations<?> node, String annName) {
for (AnnotationExpr ann : node.getAnnotations()) {
if (ann instanceof SingleMemberAnnotationExpr && simpleAnnotationName(ann).equals(annName) && ((SingleMemberAnnotationExpr) ann).getMemberValue() instanceof StringLiteralExpr) {
return ((StringLiteralExpr) ((SingleMemberAnnotationExpr) ann).getMemberValue()).asString();
}
}
return "";
}
private boolean hasAnnotation(NodeWithAnnotations<?> node, String annName) {
for (AnnotationExpr ann : node.getAnnotations()) {
if (simpleAnnotationName(ann).equals(annName)) {
@@ -218,6 +224,7 @@ public final class JavaBindingResolver {
VarDecl d = new VarDecl(typ);
d.name = param.getNameAsString();
d.nullable = hasAnnotation(param, "Nullable");
d.def = getAnnotation(param, "ArgOverload");
return d;
}