logic: implemented interrupting AST visiting of Java indexer

* also reverting names of unsolved symbols and unsolved types
This commit is contained in:
malte_langkabel
2017-08-07 16:02:06 +02:00
parent 332cf7be70
commit 2d6d554cb1
12 changed files with 416 additions and 325 deletions
@@ -72,7 +72,8 @@ public class AstVisitor extends AstVisitorAdapter
// --- record declarations ---
@Override public void visit(final PackageDeclaration n, final Void v)
@Override
public Boolean visit(final PackageDeclaration n, final Void v)
{
Name name = n.getName();
@@ -96,10 +97,11 @@ public class AstVisitor extends AstVisitorAdapter
);
}
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final ClassOrInterfaceDeclaration n, final Void v)
@Override
public Boolean visit(final ClassOrInterfaceDeclaration n, final Void v)
{
SimpleName name = n.getName();
@@ -122,11 +124,13 @@ public class AstVisitor extends AstVisitorAdapter
List<DeclContext> parentContext = m_context;
m_context = new ArrayList<DeclContext>();
m_context.add(new DeclContext(qualifiedName));
super.visit(n, v);
Boolean result = super.visit(n, v);
m_context = parentContext;
return result;
}
@Override public void visit(final TypeParameter n, final Void v)
@Override
public Boolean visit(final TypeParameter n, final Void v)
{
// todo: test recording of typeargument of type parameter bound type??
@@ -159,11 +163,13 @@ public class AstVisitor extends AstVisitorAdapter
List<DeclContext> parentContext = m_context;
m_context = new ArrayList<DeclContext>();
m_context.add(new DeclContext(qualifiedName));
super.visit(n, v);
Boolean result = super.visit(n, v);
m_context = parentContext;
return result;
}
@Override public void visit(final EnumDeclaration n, final Void v)
@Override
public Boolean visit(final EnumDeclaration n, final Void v)
{
SimpleName name = n.getName();
@@ -186,11 +192,13 @@ public class AstVisitor extends AstVisitorAdapter
List<DeclContext> parentContext = m_context;
m_context = new ArrayList<DeclContext>();
m_context.add(new DeclContext(qualifiedName));
super.visit(n, v);
Boolean result = super.visit(n, v);
m_context = parentContext;
return result;
}
@Override public void visit(final EnumConstantDeclaration n, final Void v)
@Override
public Boolean visit(final EnumConstantDeclaration n, final Void v)
{
String qualifiedName = JavaparserDeclNameResolver.getQualifiedDeclName(n, m_typeSolver).toNameHierarchy().serialize();
@@ -204,11 +212,13 @@ public class AstVisitor extends AstVisitorAdapter
List<DeclContext> parentContext = m_context;
m_context = new ArrayList<DeclContext>();
m_context.add(new DeclContext(qualifiedName));
super.visit(n, v);
Boolean result = super.visit(n, v);
m_context = parentContext;
return result;
}
@Override public void visit(final ConstructorDeclaration n, final Void v)
@Override
public Boolean visit(final ConstructorDeclaration n, final Void v)
{
SimpleName name = n.getName();
@@ -225,12 +235,20 @@ public class AstVisitor extends AstVisitorAdapter
List<DeclContext> parentContext = m_context;
m_context = new ArrayList<DeclContext>();
m_context.add(new DeclContext(qualifiedName));
super.visit(n, v);
Boolean result = super.visit(n, v);
m_context = parentContext;
return result;
}
@Override public void visit(final MethodDeclaration n, final Void v)
@Override
public Boolean visit(final MethodDeclaration n, final Void v)
{
if (m_client.getInterrupted())
{
// return something that is not null in order to cancel AST traversal;
return false;
}
SimpleName name = n.getName();
String qualifiedName = JavaparserDeclNameResolver.getQualifiedDeclName(n, m_typeSolver).toNameHierarchy().serialize();
@@ -259,8 +277,9 @@ public class AstVisitor extends AstVisitorAdapter
List<DeclContext> parentContext = m_context;
m_context = new ArrayList<DeclContext>();
m_context.add(new DeclContext(qualifiedName));
super.visit(n, v);
Boolean result = super.visit(n, v);
m_context = parentContext;
return result;
}
private com.github.javaparser.symbolsolver.model.declarations.MethodDeclaration getOverridden(MethodDeclaration overrider)
@@ -321,7 +340,8 @@ public class AstVisitor extends AstVisitorAdapter
return null;
}
@Override public void visit(final FieldDeclaration n, final Void v)
@Override
public Boolean visit(final FieldDeclaration n, final Void v)
{
List<DeclContext> parentContext = m_context;
m_context = new ArrayList<DeclContext>();
@@ -340,11 +360,13 @@ public class AstVisitor extends AstVisitorAdapter
m_context.add(new DeclContext(qualifiedName));
}
super.visit(n, v);
Boolean result = super.visit(n, v);
m_context = parentContext;
return result;
}
@Override public void visit(final VariableDeclarationExpr n, final Void v)
@Override
public Boolean visit(final VariableDeclarationExpr n, final Void v)
{
for (VariableDeclarator declarator: n.getVariables())
{
@@ -359,10 +381,11 @@ public class AstVisitor extends AstVisitorAdapter
}
// don't change the context here.
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final Parameter n, final Void v)
@Override
public Boolean visit(final Parameter n, final Void v)
{
SimpleName name = n.getName();
@@ -374,14 +397,14 @@ public class AstVisitor extends AstVisitorAdapter
}
// don't change the context here.
super.visit(n, v);
return super.visit(n, v);
}
// --- record references ---
@Override
public void visit(final ImportDeclaration n, final Void v)
public Boolean visit(final ImportDeclaration n, final Void v)
{
Name name = n.getName();
@@ -461,10 +484,11 @@ public class AstVisitor extends AstVisitorAdapter
recordException(e, n);
}
}
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final ClassOrInterfaceType n, final Void v)
@Override
public Boolean visit(final ClassOrInterfaceType n, final Void v)
{
try
{
@@ -507,10 +531,11 @@ public class AstVisitor extends AstVisitorAdapter
{
recordException(e, n);
}
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final PrimitiveType n, final Void v)
@Override
public Boolean visit(final PrimitiveType n, final Void v)
{
try
{
@@ -535,10 +560,11 @@ public class AstVisitor extends AstVisitorAdapter
recordException(e, n);
}
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final VoidType n, final Void v)
@Override
public Boolean visit(final VoidType n, final Void v)
{
try
{
@@ -560,10 +586,11 @@ public class AstVisitor extends AstVisitorAdapter
recordException(e, n);
}
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final FieldAccessExpr n, final Void v)
@Override
public Boolean visit(final FieldAccessExpr n, final Void v)
{
SimpleName fieldName = n.getName();
@@ -604,10 +631,11 @@ public class AstVisitor extends AstVisitorAdapter
recordException(e, n);
}
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final NameExpr n, final Void v)
@Override
public Boolean visit(final NameExpr n, final Void v)
{
try
{
@@ -699,10 +727,11 @@ public class AstVisitor extends AstVisitorAdapter
recordException(e, n);
}
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final MethodCallExpr n, final Void v)
@Override
public Boolean visit(final MethodCallExpr n, final Void v)
{
String qualifiedName = "";
if (m_context.size() > 0)
@@ -749,7 +778,7 @@ public class AstVisitor extends AstVisitorAdapter
}
}
super.visit(n, v);
return super.visit(n, v);
}
@@ -783,7 +812,8 @@ public class AstVisitor extends AstVisitorAdapter
);
}
@Override public void visit(final ObjectCreationExpr n, final Void v)
@Override
public Boolean visit(final ObjectCreationExpr n, final Void v)
{
String qualifiedName = "";
if (m_context.size() > 0)
@@ -830,29 +860,32 @@ public class AstVisitor extends AstVisitorAdapter
}
}
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final BlockStmt n, final Void v)
@Override
public Boolean visit(final BlockStmt n, final Void v)
{
recordScope(n.getRange());
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final ArrayInitializerExpr n, final Void v)
@Override
public Boolean visit(final ArrayInitializerExpr n, final Void v)
{
recordScope(n.getRange());
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final SwitchStmt n, final Void v)
@Override
public Boolean visit(final SwitchStmt n, final Void v)
{
if (n.getRange().isPresent())
{
FileContent.Location scopeStartLocation = m_fileContent.find("{", n.getBegin());
recordScope(Range.range(scopeStartLocation.line, scopeStartLocation.column, n.getRange().get().end.line, n.getRange().get().end.column));
}
super.visit(n, v);
return super.visit(n, v);
}
private void recordScope(Optional<Range> range)
@@ -870,15 +903,17 @@ public class AstVisitor extends AstVisitorAdapter
m_client.recordLocalSymbol(qualifiedName, Range.range(range.end, range.end));
}
@Override public void visit(final LineComment n, final Void v)
@Override
public Boolean visit(final LineComment n, final Void v)
{
m_client.recordComment(n.getRange());
super.visit(n, v);
return super.visit(n, v);
}
@Override public void visit(final BlockComment n, final Void v)
@Override
public Boolean visit(final BlockComment n, final Void v)
{
m_client.recordComment(n.getRange());
super.visit(n, v);
return super.visit(n, v);
}
}
@@ -1,5 +1,7 @@
package com.sourcetrail;
import com.github.javaparser.ast.visitor.GenericListVisitorAdapter;
import com.github.javaparser.ast.visitor.GenericVisitorAdapter;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
import com.github.javaparser.ast.*;
@@ -13,7 +15,9 @@ import com.github.javaparser.ast.type.*;
import java.util.Optional;
import java.util.Stack;
public abstract class AstVisitorAdapter extends VoidVisitorAdapter<Void>
import javax.annotation.Generated;
public abstract class AstVisitorAdapter extends GenericVisitorAdapter<Boolean, Void>
{
private Stack<ReferenceKind> m_typeRefKind = new Stack<ReferenceKind>();
@@ -28,221 +32,245 @@ public abstract class AstVisitorAdapter extends VoidVisitorAdapter<Void>
//- Compilation Unit ----------------------------------
@Override public void visit(final CompilationUnit n, Void arg)
@Override public Boolean visit(final CompilationUnit n, Void arg)
{
m_typeRefKind.push(ReferenceKind.TYPE_USAGE);
visitComment(n.getComment(), arg);
if (n.getPackageDeclaration().isPresent())
{
n.getPackageDeclaration().get().accept(this, arg);
}
if (n.getImports() != null)
{
for (final ImportDeclaration i : n.getImports())
{
i.accept(this, arg);
}
}
if (n.getTypes() != null)
{
for (final TypeDeclaration<?> typeDeclaration : n.getTypes())
{
typeDeclaration.accept(this, arg);
}
}
Boolean result = super.visit(n, arg);
m_typeRefKind.pop();
return result;
}
//- Body ----------------------------------------------
@Override public void visit(ClassOrInterfaceDeclaration n, Void arg)
@Override public Boolean visit(ClassOrInterfaceDeclaration n, Void arg)
{
visitComment(n.getComment(), arg);
visitAnnotations(n, arg);
n.getName().accept(this, arg);
for (final TypeParameter t : n.getTypeParameters())
{
t.accept(this, arg);
}
Boolean result;
{
result = n.getTypeParameters().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getMembers().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getName().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getAnnotations().accept(this, arg);
if (result != null)
return result;
}
if (n.getComment().isPresent()) {
result = n.getComment().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.push(ReferenceKind.INHERITANCE);
for (final ClassOrInterfaceType c : n.getExtendedTypes())
{
c.accept(this, arg);
}
for (final ClassOrInterfaceType c : n.getImplementedTypes())
{
c.accept(this, arg);
}
{
result = n.getExtendedTypes().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getImplementedTypes().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.pop();
for (final BodyDeclaration<?> member : n.getMembers())
{
member.accept(this, arg);
}
return null;
}
@Override public void visit(EnumDeclaration n, Void arg)
@Override public Boolean visit(EnumDeclaration n, Void arg)
{
visitComment(n.getComment(), arg);
visitAnnotations(n, arg);
n.getName().accept(this, arg);
Boolean result;
{
result = n.getEntries().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getMembers().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getName().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getAnnotations().accept(this, arg);
if (result != null)
return result;
}
if (n.getComment().isPresent()) {
result = n.getComment().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.push(ReferenceKind.INHERITANCE);
if (n.getImplementedTypes() != null)
{
for (final ClassOrInterfaceType c : n.getImplementedTypes())
{
c.accept(this, arg);
}
}
{
result = n.getImplementedTypes().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.pop();
if (n.getEntries() != null)
{
for (final EnumConstantDeclaration e : n.getEntries())
{
e.accept(this, arg);
}
}
if (n.getMembers() != null)
{
for (final BodyDeclaration<?> member : n.getMembers())
{
member.accept(this, arg);
}
}
return null;
}
//- Type ----------------------------------------------
@Override public void visit(ClassOrInterfaceType n, Void arg)
@Override public Boolean visit(ClassOrInterfaceType n, Void arg)
{
visitComment(n.getComment(), arg);
visitAnnotations(n, arg);
Boolean result;
{
result = n.getName().accept(this, arg);
if (result != null)
return result;
}
// don't visit the qualifier here.
// if (n.getScope().isPresent())
// {
// n.getScope().get().accept(this, arg);
// }
// if (n.getScope().isPresent()) {
// result = n.getScope().get().accept(this, arg);
// if (result != null)
// return result;
// }
{
result = n.getAnnotations().accept(this, arg);
if (result != null)
return result;
}
if (n.getComment().isPresent()) {
result = n.getComment().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.push(ReferenceKind.TYPE_ARGUMENT);
if (n.getTypeArguments().isPresent())
{
for (final Type t : n.getTypeArguments().get())
{
t.accept(this, arg);
}
}
if (n.getTypeArguments().isPresent()) {
result = n.getTypeArguments().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.pop();
return null;
}
//- Expression ----------------------------------------
@Override public void visit(MethodCallExpr n, Void arg)
@Override public Boolean visit(MethodCallExpr n, Void arg)
{
visitComment(n.getComment(), arg);
if (n.getScope().isPresent())
{
n.getScope().get().accept(this, arg);
}
m_typeRefKind.push(ReferenceKind.TYPE_ARGUMENT);
if (n.getTypeArguments().isPresent())
{
for (final Type t : n.getTypeArguments().get())
{
t.accept(this, arg);
}
}
m_typeRefKind.pop();
Boolean result;
{
result = n.getArguments().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getName().accept(this, arg);
if (result != null)
return result;
}
if (n.getScope().isPresent()) {
result = n.getScope().get().accept(this, arg);
if (result != null)
return result;
}
if (n.getComment().isPresent()) {
result = n.getComment().get().accept(this, arg);
if (result != null)
return result;
}
n.getName().accept(this, arg);
if (n.getArguments() != null)
{
for (final Expression e : n.getArguments())
{
e.accept(this, arg);
}
}
m_typeRefKind.push(ReferenceKind.TYPE_ARGUMENT);
if (n.getTypeArguments().isPresent()) {
result = n.getTypeArguments().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.pop();
return null;
}
@Override public void visit(ObjectCreationExpr n, Void arg)
@Override public Boolean visit(ObjectCreationExpr n, Void arg)
{
visitComment(n.getComment(), arg);
if (n.getScope().isPresent())
{
n.getScope().get().accept(this, arg);
}
Boolean result;
if (n.getAnonymousClassBody().isPresent()) {
result = n.getAnonymousClassBody().get().accept(this, arg);
if (result != null)
return result;
}
{
result = n.getArguments().accept(this, arg);
if (result != null)
return result;
}
if (n.getScope().isPresent()) {
result = n.getScope().get().accept(this, arg);
if (result != null)
return result;
}
// {
// result = n.getType().accept(this, arg);
// if (result != null)
// return result;
// }
if (n.getComment().isPresent()) {
result = n.getComment().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.push(ReferenceKind.TYPE_ARGUMENT);
if (n.getTypeArguments().isPresent())
{
for (final Type t : n.getTypeArguments().get())
{
t.accept(this, arg);
}
}
if (n.getTypeArguments().isPresent()) {
result = n.getTypeArguments().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.pop();
// n.getType().accept(this, arg);
if (n.getArguments() != null)
{
for (final Expression e : n.getArguments())
{
e.accept(this, arg);
}
}
if (n.getAnonymousClassBody().isPresent())
{
for (final BodyDeclaration<?> member : n.getAnonymousClassBody().get())
{
member.accept(this, arg);
}
}
return null;
}
//- Statements ----------------------------------------
@Override public void visit(ExplicitConstructorInvocationStmt n, Void arg)
@Override public Boolean visit(ExplicitConstructorInvocationStmt n, Void arg)
{
visitComment(n.getComment(), arg);
if (!n.isThis() && n.getExpression().isPresent())
{
n.getExpression().get().accept(this, arg);
}
Boolean result;
{
result = n.getArguments().accept(this, arg);
if (result != null)
return result;
}
if (n.getExpression().isPresent()) {
result = n.getExpression().get().accept(this, arg);
if (result != null)
return result;
}
if (n.getComment().isPresent()) {
result = n.getComment().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.push(ReferenceKind.TYPE_ARGUMENT);
if (n.getTypeArguments().isPresent())
{
for (final Type t : n.getTypeArguments().get())
{
t.accept(this, arg);
}
}
if (n.getTypeArguments().isPresent()) {
result = n.getTypeArguments().get().accept(this, arg);
if (result != null)
return result;
}
m_typeRefKind.pop();
if (n.getArguments() != null)
{
for (final Expression e : n.getArguments())
{
e.accept(this, arg);
}
}
}
private void visitComment(final Optional<Comment> n, final Void arg)
{
if (n.isPresent())
{
n.get().accept(this, arg);
}
}
private void visitAnnotations(NodeWithAnnotations<?> n, final Void arg)
{
for (AnnotationExpr annotation : n.getAnnotations())
{
annotation.accept(this, arg);
}
return null;
}
}
@@ -71,6 +71,8 @@ public abstract class AstVisitorClient
);
}
public abstract boolean getInterrupted();
public abstract void logInfo(String info);
public abstract void logWarning(String warning);
@@ -6,7 +6,6 @@ import java.io.StringReader;
import java.lang.String;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.PackageDeclaration;
@@ -15,7 +14,6 @@ import com.github.javaparser.ParseProblemException;
import com.github.javaparser.Position;
import com.github.javaparser.Problem;
import com.github.javaparser.Range;
import com.github.javaparser.TokenRange;
import com.github.javaparser.symbolsolver.javaparser.Navigator;
import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade;
import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
@@ -140,6 +138,8 @@ public class JavaIndexer
// the following methods are defined in the native c++ code
static public native boolean getInterrupted(int address);
static public native void logInfo(int address, String info);
static public native void logWarning(int address, String warning);
@@ -11,6 +11,12 @@ public class JavaIndexerAstVisitorClient extends AstVisitorClient
m_address = address;
}
@Override
public boolean getInterrupted()
{
return JavaIndexer.getInterrupted(m_address);
}
@Override
public void logInfo(String info)
{
@@ -210,7 +210,7 @@ public class JavaSymbolSolverDeclNameResolver extends JavaNameResolver
if (declName == null)
{
System.out.println("Unable to resolve qualified declaration name of " + decl.getClass().toString() + ": " + decl.toString());
declName = new JavaDeclName("unsolved-jss-decl"); // JavaDeclName.unsolved();
declName = JavaDeclName.unsolved();
}
return declName;
@@ -91,6 +91,6 @@ public class JavaSymbolSolverTypeNameResolver extends JavaNameResolver
System.out.println("Unable to resolve qualified name of " + type.getClass().toString() + ": " + type.toString());
return new JavaTypeName("unsolved-jss-type", null); // JavaTypeName.unsolved();
return JavaTypeName.unsolved();
}
}
@@ -20,7 +20,6 @@ import com.github.javaparser.ast.body.Parameter;
import com.github.javaparser.ast.body.TypeDeclaration;
import com.github.javaparser.ast.body.VariableDeclarator;
import com.github.javaparser.ast.expr.Name;
import com.github.javaparser.ast.expr.SimpleName;
import com.github.javaparser.ast.type.TypeParameter;
import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
@@ -49,7 +48,7 @@ public class JavaparserDeclNameResolver extends JavaNameResolver
public JavaDeclName getQualifiedDeclName(VariableDeclarator decl)
{
JavaDeclName declName = new JavaDeclName("unsolved-jp-decl"); // JavaDeclName.unsolved();
JavaDeclName declName = JavaDeclName.unsolved();
if (decl != null)
{
@@ -111,7 +110,7 @@ public class JavaparserDeclNameResolver extends JavaNameResolver
public JavaDeclName getQualifiedDeclName(BodyDeclaration<?> decl)
{
JavaDeclName declName = new JavaDeclName("unsolved-jp-decl"); // JavaDeclName.unsolved();
JavaDeclName declName = JavaDeclName.unsolved();
if (decl != null)
{
@@ -149,7 +148,7 @@ public class JavaparserDeclNameResolver extends JavaNameResolver
public JavaDeclName getDeclName(BodyDeclaration decl)
{
JavaDeclName declName = new JavaDeclName("unsolved-jp-decl"); // JavaDeclName.unsolved();
JavaDeclName declName = JavaDeclName.unsolved();
if (decl != null)
{
@@ -201,7 +200,7 @@ public class JavaparserDeclNameResolver extends JavaNameResolver
public JavaDeclName getQualifiedDeclName(TypeParameter decl)
{
JavaDeclName declName = new JavaDeclName("unsolved-jp-decl"); // JavaDeclName.unsolved();
JavaDeclName declName = JavaDeclName.unsolved();
if (decl != null)
{
@@ -1,8 +1,5 @@
package com.sourcetrail;
import java.util.List;
import com.github.javaparser.ast.body.BodyDeclaration;
import com.github.javaparser.ast.type.*;
import com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade;
import com.github.javaparser.symbolsolver.model.resolution.TypeSolver;
@@ -93,7 +90,7 @@ public class JavaparserTypeNameResolver extends JavaNameResolver
System.out.println("Unable to resolve qualified name of " + type.getClass().toString() + ": " + fallbackTypeName);
return new JavaTypeName("unsolved-jp-type", null); // JavaTypeName.unsolved();
return JavaTypeName.unsolved();
}
@@ -56,171 +56,171 @@ public class VerboseAstVisitor extends AstVisitor{
//- Compilation Unit ----------------------------------
public void visit(CompilationUnit n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(CompilationUnit n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(PackageDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(PackageDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ImportDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ImportDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(TypeParameter n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(TypeParameter n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(LineComment n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(LineComment n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(BlockComment n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(BlockComment n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
//- Body ----------------------------------------------
public void visit(ClassOrInterfaceDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ClassOrInterfaceDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(EnumDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(EnumDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(EnumConstantDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(EnumConstantDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(AnnotationDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(AnnotationDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(AnnotationMemberDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(AnnotationMemberDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(FieldDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(FieldDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(VariableDeclarator n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(VariableDeclarator n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ConstructorDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ConstructorDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(MethodDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(MethodDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(Parameter n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(Parameter n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(InitializerDeclaration n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(InitializerDeclaration n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(JavadocComment n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(JavadocComment n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
//- Type ----------------------------------------------
public void visit(ClassOrInterfaceType n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ClassOrInterfaceType n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(PrimitiveType n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(PrimitiveType n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ArrayType n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ArrayType n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ArrayCreationLevel n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ArrayCreationLevel n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(IntersectionType n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(IntersectionType n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(UnionType n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(UnionType n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(VoidType n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(VoidType n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(WildcardType n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(WildcardType n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(UnknownType n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(UnknownType n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
//- Expression ----------------------------------------
public void visit(ArrayAccessExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ArrayAccessExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ArrayCreationExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ArrayCreationExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ArrayInitializerExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ArrayInitializerExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(AssignExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(AssignExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(BinaryExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(BinaryExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(CastExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(CastExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ClassExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ClassExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ConditionalExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ConditionalExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(EnclosedExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(EnclosedExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(FieldAccessExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(FieldAccessExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(InstanceOfExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(InstanceOfExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(StringLiteralExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(StringLiteralExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(IntegerLiteralExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(IntegerLiteralExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(LongLiteralExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(LongLiteralExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(CharLiteralExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(CharLiteralExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(DoubleLiteralExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(DoubleLiteralExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(BooleanLiteralExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(BooleanLiteralExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(NullLiteralExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(NullLiteralExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(MethodCallExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(MethodCallExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(NameExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(NameExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ObjectCreationExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ObjectCreationExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ThisExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ThisExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(SuperExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(SuperExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(UnaryExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(UnaryExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(VariableDeclarationExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(VariableDeclarationExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(MarkerAnnotationExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(MarkerAnnotationExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(SingleMemberAnnotationExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(SingleMemberAnnotationExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(NormalAnnotationExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(NormalAnnotationExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(MemberValuePair n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(MemberValuePair n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
//- Statements ----------------------------------------
public void visit(ExplicitConstructorInvocationStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ExplicitConstructorInvocationStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(AssertStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(AssertStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(BlockStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(BlockStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(LabeledStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(LabeledStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(EmptyStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(EmptyStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ExpressionStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ExpressionStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(SwitchStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(SwitchStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(SwitchEntryStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(SwitchEntryStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(BreakStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(BreakStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ReturnStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ReturnStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(IfStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(IfStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(WhileStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(WhileStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ContinueStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ContinueStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(DoStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(DoStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ForeachStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ForeachStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ForStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ForStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(ThrowStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(ThrowStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(SynchronizedStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(SynchronizedStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(TryStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(TryStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(CatchClause n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(CatchClause n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(LambdaExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(LambdaExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(MethodReferenceExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(MethodReferenceExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(TypeExpr n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(TypeExpr n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
public void visit(UnparsableStmt n, Void v) { dump(n); indent++; super.visit(n, v); indent--; }
public Boolean visit(UnparsableStmt n, Void v) { dump(n); indent++; Boolean result = super.visit(n, v); indent--; return result; }
}
@@ -95,6 +95,7 @@ JavaParser::JavaParser(std::shared_ptr<ParserClient> client, std::shared_ptr<Fil
std::vector<JavaEnvironment::NativeMethod> methods;
methods.push_back({"getInterrupted", "(I)Z", (void*)&JavaParser::GetInterrupted});
methods.push_back({"logInfo", "(ILjava/lang/String;)V", (void*)&JavaParser::LogInfo});
methods.push_back({"logWarning", "(ILjava/lang/String;)V", (void*)&JavaParser::LogWarning});
methods.push_back({"logError", "(ILjava/lang/String;)V", (void*)&JavaParser::LogError});
@@ -182,6 +183,11 @@ std::mutex JavaParser::s_parsersMutex;
// definition of native methods
bool JavaParser::doGetInterrupted()
{
return m_interruptCounter.getCount() > 0;
}
void JavaParser::doLogInfo(jstring jInfo)
{
LOG_INFO_STREAM_BARE(<< "Indexer - " << m_javaEnvironment->toStdString(jInfo));
+32 -14
View File
@@ -9,6 +9,7 @@
#include "data/parser/java/JavaEnvironment.h"
#include "utility/file/FilePath.h"
#include "utility/logging/logging.h"
#include "utility/messaging/MessageInterruptTasksCounter.h"
struct JNIEnv_;
typedef JNIEnv_ JNIEnv;
@@ -48,18 +49,18 @@ private:
// This macro makes available a variable T, the passed-in t. blablabla TODO: write somethign real here
#define MAKE_PARAMS_0()
#define MAKE_PARAMS_1(t1) t1 arg1
#define MAKE_PARAMS_2(t1, t2) t1 arg1, t2 arg2
#define MAKE_PARAMS_3(t1, t2, t3) t1 arg1, t2 arg2, t3 arg3
#define MAKE_PARAMS_4(t1, t2, t3, t4) t1 arg1, t2 arg2, t3 arg3, t4 arg4
#define MAKE_PARAMS_5(t1, t2, t3, t4, t5) t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5
#define MAKE_PARAMS_6(t1, t2, t3, t4, t5, t6) t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6
#define MAKE_PARAMS_7(t1, t2, t3, t4, t5, t6, t7) t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7
#define MAKE_PARAMS_8(t1, t2, t3, t4, t5, t6, t7, t8) t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8
#define MAKE_PARAMS_9(t1, t2, t3, t4, t5, t6, t7, t8, t9) t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8, t9 arg9
#define MAKE_PARAMS_10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8, t9 arg9, t10 arg10
#define MAKE_PARAMS_11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8, t9 arg9, t10 arg10, t11 arg11
#define MAKE_PARAMS_12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8, t9 arg9, t10 arg10, t11 arg11, t12 arg12
#define MAKE_PARAMS_1(t1) , t1 arg1
#define MAKE_PARAMS_2(t1, t2) , t1 arg1, t2 arg2
#define MAKE_PARAMS_3(t1, t2, t3) , t1 arg1, t2 arg2, t3 arg3
#define MAKE_PARAMS_4(t1, t2, t3, t4) , t1 arg1, t2 arg2, t3 arg3, t4 arg4
#define MAKE_PARAMS_5(t1, t2, t3, t4, t5) , t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5
#define MAKE_PARAMS_6(t1, t2, t3, t4, t5, t6) , t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6
#define MAKE_PARAMS_7(t1, t2, t3, t4, t5, t6, t7) , t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7
#define MAKE_PARAMS_8(t1, t2, t3, t4, t5, t6, t7, t8) , t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8
#define MAKE_PARAMS_9(t1, t2, t3, t4, t5, t6, t7, t8, t9) , t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8, t9 arg9
#define MAKE_PARAMS_10(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) , t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8, t9 arg9, t10 arg10
#define MAKE_PARAMS_11(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) , t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8, t9 arg9, t10 arg10, t11 arg11
#define MAKE_PARAMS_12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) , t1 arg1, t2 arg2, t3 arg3, t4 arg4, t5 arg5, t6 arg6, t7 arg7, t8 arg8, t9 arg9, t10 arg10, t11 arg11, t12 arg12
//.. add as many MAKE_PARAMS_* as required
#define MAKE_ARGS_0()
@@ -78,6 +79,9 @@ private:
//.. add as many MAKE_ARGS_* as there are MAKE_PARAMS_*
#define DEF_RELAYING_METHOD_0(NAME) \
DEF_RELAYING_METHOD(NAME, MAKE_PARAMS_0(), MAKE_ARGS_0())
#define DEF_RELAYING_METHOD_1(NAME, t1) \
DEF_RELAYING_METHOD(NAME, MAKE_PARAMS_1(t1), MAKE_ARGS_1(t1))
@@ -115,7 +119,7 @@ private:
DEF_RELAYING_METHOD(NAME, MAKE_PARAMS_12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12), MAKE_ARGS_12(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12))
#define DEF_RELAYING_METHOD(NAME, PARAMETERS, ARGUMENTS) \
static void NAME(JNIEnv *env, jobject objectOrClass, jint parserId, PARAMETERS) \
static void NAME(JNIEnv *env, jobject objectOrClass, jint parserId PARAMETERS) \
{ \
std::map<int, JavaParser*>::iterator it = s_parsers.find(int(parserId)); \
if (it != s_parsers.end()) \
@@ -139,13 +143,26 @@ private:
DEF_RELAYING_METHOD_4(RecordComment, jint, jint, jint, jint)
DEF_RELAYING_METHOD_7(RecordError, jstring, jint, jint, jint, jint, jint, jint)
static bool GetInterrupted(JNIEnv *env, jobject objectOrClass, jint parserId)
{
std::map<int, JavaParser*>::iterator it = s_parsers.find(int(parserId));
if (it != s_parsers.end())
{
return it->second->doGetInterrupted();
}
else
{
LOG_ERROR("parser with id " + std::to_string(parserId) + " not found");
}
}
static int s_nextParserId;
static std::map<int, JavaParser*> s_parsers;
static std::mutex s_parsersMutex;
bool doGetInterrupted();
void doLogInfo(jstring jInfo);
@@ -180,6 +197,7 @@ private:
const int m_id;
FilePath m_currentFilePath;
MessageInterruptTasksCounter m_interruptCounter;
};
#endif // JAVA_PARSER_H