private CsmFunction getFunctionDeclaration(CsmFunctionDefinition fd){ if (resolver.isRecursionOnResolving(Resolver3.INFINITE_RECURSION)) { return null; } return fd.getDeclaration(); }
private boolean isInDeclaration(CsmFunction func, CsmFile csmFile, int offset) { CsmFunctionDefinition def; CsmFunction decl; if (CsmKindUtilities.isFunctionDefinition(func)) { def = (CsmFunctionDefinition) func; decl = def.getDeclaration(); } else { decl = func; def = func.getDefinition(); } if (def != null) { if (csmFile.equals(def.getContainingFile()) && (def.getStartOffset() <= offset && offset <= def.getBody().getStartOffset())) { return true; } } if (decl != null) { // just declaration if (csmFile.equals(decl.getContainingFile()) && (decl.getStartOffset() <= offset && offset <= decl.getEndOffset())) { return true; } } return false; }
@Override public DefinitionKind getDefinitionKind() { if (CsmKindUtilities.isFunctionDefinition(declaration)) { return ((CsmFunctionDefinition)declaration).getDefinitionKind(); } return null; }
private void removeFunctionDefinition(final CsmOffsetableDeclaration decl) { CsmFunctionDefinition def = (CsmFunctionDefinition) decl; CsmFunction fun = def.getDeclaration(); if (fun != null && fun != decl){ CsmFile file = fun.getContainingFile(); if (file != null && file.isValid()){ CsmOffsetableDeclaration other = (CsmOffsetableDeclaration) file.getProject().findDeclaration(fun.getUniqueName()); if (other != null) { PersistentKey otherKey = PersistentKey.createKey(other); if (!myKeys.containsKey(otherKey)) { myKeys.put(otherKey,getSortedName(other)); myChanges.remove(otherKey); return; } } } } CsmFile file = def.getContainingFile(); if (file != null && file.isValid()){ CsmOffsetableDeclaration other = (CsmOffsetableDeclaration) file.getProject().findDeclaration(def.getUniqueName()); if (other != null) { PersistentKey otherKey = PersistentKey.createKey(other); if (!myKeys.containsKey(otherKey)) { myKeys.put(otherKey,getSortedName(other)); myChanges.remove(otherKey); } } } }
@Override public CsmCompoundStatement getBody() { if (CsmKindUtilities.isFunctionDefinition(declaration)) { return ((CsmFunctionDefinition)declaration).getBody(); } return null; }
case VARIABLE: { int stOffset = ((CsmOffsetable) obj).getStartOffset(); if (csmFunction.csmObject.getStartOffset() < stOffset && stOffset < csmFunction.csmObject.getEndOffset()) { out = XRefResultSet.DeclarationScope.FUNCTION_THIS; } else {
if (CsmOffsetUtilities.isBeforeObject(funDef.getBody(), offset)) { if (CsmKindUtilities.isCastOperator(fun)) { if (CsmOffsetUtilities.isBeforeObject(funDef.getReturnType(), offset)) { return false;
private Set<CsmParameter> getFunctionDefinitionParameters(CsmFile file) { if (parameters == null) { parameters = new HashSet<CsmParameter>(); CsmFilter filter = CsmSelect.getFilterBuilder().createKindFilter(CsmDeclaration.Kind.FUNCTION_DEFINITION, CsmDeclaration.Kind.FUNCTION_FRIEND_DEFINITION); Iterator<CsmOffsetableDeclaration> i = CsmSelect.getDeclarations(file, filter); while (i.hasNext()) { CsmFunctionDefinition fundef = (CsmFunctionDefinition)i.next(); parameters.addAll(fundef.getParameters()); } } return parameters; } }
if (def != null && def != lastPublicMethod) { defFile = CsmRefactoringUtils.getCsmFile(def); defPos = def.getEndOffset();
public static boolean isInFunctionBody(CsmContext context, int offset) { CsmFunctionDefinition funDef = getFunctionDefinition(context); return (funDef == null) ? false : CsmOffsetUtilities.isInObject(funDef.getBody(), offset); }
decl.getKind() == CsmDeclaration.Kind.FUNCTION_FRIEND_DEFINITION) { CsmFunctionDefinition fd = (CsmFunctionDefinition) decl; if( fd.getStartOffset() < offset && offset < fd.getEndOffset() ) { containingFunction = fd; CsmNamespace ns = BaseUtilitiesProviderImpl.getImpl()._getFunctionNamespace(fd);
for(CsmOffsetableDeclaration decl : decls){ CsmFunctionDefinition def = (CsmFunctionDefinition) decl; int candidateParamSize = def.getParameters().size(); if (!isVoid && parmSize == 0) { if (!Utils.isCppFile(decl.getContainingFile())){
private CsmFunction _getFunctionDeclaration(CsmFunction fun) { assert (fun != null) : "must be not null"; CsmFunction funDecl = fun; if (CsmKindUtilities.isFunctionDefinition(funDecl)) { funDecl = ((CsmFunctionDefinition) funDecl).getDeclaration(); } return funDecl; }
if (csmFile.equals(definition.getContainingFile()) && (definition.getStartOffset() <= offset && offset <= definition.getBody().getStartOffset())) { if (definition.getDeclaration() != null) { item = definition.getDeclaration(); } else if (csmObject.equals(definition)) { item = (CsmOffsetable) csmObject; if (csmFile.equals(definition.getContainingFile()) && (definition.getStartOffset() <= offset && offset <= definition.getBody().getStartOffset())) { if (definition.getDeclaration() != null) { item = definition.getDeclaration(); } else { item = definition;
@Override public Collection<CsmReference> getLabels(CsmFunctionDefinition referencedFunction, CharSequence label, Set<LabelKind> kinds) { Context res = new Context(referencedFunction, label, kinds); if(referencedFunction != null) { processInnerStatements(referencedFunction.getBody(), res); } return res.collection; }
items.add(CsmImplementsMethodCompletionItem.createImplementItem(queryAnchorOffset, caretOffset, cls, method)); } else if (method == definition){ if (definition.getDefinitionKind() == CsmFunctionDefinition.DefinitionKind.REGULAR) { final CsmImplementsMethodCompletionItem item = CsmImplementsMethodCompletionItem.createExtractBodyItem(queryAnchorOffset, caretOffset, cls, method); items.add(CsmImplementsMethodCompletionItem.createImplementItem(queryAnchorOffset, caretOffset, cls, method)); } else if (method == definition){ if (definition.getDefinitionKind() == CsmFunctionDefinition.DefinitionKind.REGULAR) { final CsmImplementsMethodCompletionItem item = CsmImplementsMethodCompletionItem.createExtractBodyItem(queryAnchorOffset, caretOffset, cls, method);
private CsmFunction initDeclaration() { if (CsmKindUtilities.isFunctionDefinition(function)) { CsmFunction f = ((CsmFunctionDefinition) function).getDeclaration(); if (f != null) { return f; } } return function; }
private static void handleFunctionDefinition(final CsmFunctionDefinition fun, final StatisticsParameters params, final XRefResultSet<XRefEntry> bag, final PrintWriter printOut, final OutputWriter printErr) { final CsmScope scope = fun.getBody(); if (scope != null) { final XRefResultSet.ContextScope funScope = classifyFunctionScope(fun, printOut);
@Override public CsmFunction getDeclaration() { if (CsmKindUtilities.isFunctionDefinition(declaration)) { return ((CsmFunctionDefinition)declaration).getDeclaration(); } return this; } }
String coloredItemText = createDisplayName(item, cls, NbBundle.getMessage(CsmImplementsMethodCompletionItem.class, "extract.txt")); //NOI18N CsmFile containingFile = item.getContainingFile(); CsmCompoundStatement body = ((CsmFunctionDefinition)item).getBody(); if (item.getStartOffset() == body.getStartOffset()) {