Offsets(CsmOffsetableDeclaration declaration){ startOffset = declaration.getStartOffset(); endOffset = declaration.getEndOffset(); object = declaration; } Offsets(CsmMacro macros){
private Instantiation(T declaration, Map<CsmTemplateParameter, CsmSpecializationParameter> mapping) { super(declaration.getContainingFile(), declaration.getStartOffset(), declaration.getEndOffset()); this.declaration = declaration; this.mapping = mapping; }
private void getFunction(List<CsmObject> list, CsmFile file, int position) { if (file != null) { for(CsmOffsetableDeclaration decl : file.getDeclarations()) { if (decl.getStartOffset() <= position && position <= decl.getEndOffset()) { list.add(decl); getInternalDeclaration(list, decl, position); return; } } } }
private void findInner(List<CsmObject> list, CsmDeclarationStatement stmt, int offset) { List<CsmDeclaration> decls = stmt.getDeclarators(); if (decls != null) { for(CsmDeclaration decl : decls) { if (CsmKindUtilities.isOffsetableDeclaration(decl)) { CsmOffsetableDeclaration d = (CsmOffsetableDeclaration) decl; if (d.getStartOffset() <= offset && offset <= d.getEndOffset()) { list.add(d); getInternalDeclaration(list, d, offset); return; } } } } }
private CsmNamespaceDefinition findNamespaceDefinition(Iterator<CsmOffsetableDeclaration> it, CsmFilter filter) { while(it.hasNext()) { CsmOffsetableDeclaration decl = it.next(); if (decl.getStartOffset() > this.getStartOffset()) { break; } if (decl.getKind() == CsmDeclaration.Kind.NAMESPACE_DEFINITION) { if (this.getEndOffset() < decl.getEndOffset()) { CsmNamespaceDefinition nsdef = (CsmNamespaceDefinition) decl; CsmNamespaceDefinition inner = findNamespaceDefinition(CsmSelect.getDeclarations(nsdef, filter), filter); return (inner == null) ? nsdef : inner; } } } return null; }
private CsmNamespaceDefinition findNamespaceDefinition(Iterator<CsmOffsetableDeclaration> it, CsmFilter filter) { while(it.hasNext()) { CsmOffsetableDeclaration decl = it.next(); if (decl.getStartOffset() > this.getStartOffset()) { break; } if (decl.getKind() == CsmDeclaration.Kind.NAMESPACE_DEFINITION) { if (this.getEndOffset() < decl.getEndOffset()) { CsmNamespaceDefinition nsdef = (CsmNamespaceDefinition) decl; CsmNamespaceDefinition inner = findNamespaceDefinition(CsmSelect.getDeclarations(nsdef, filter), filter); return (inner == null) ? nsdef : inner; } } } return null; }
private CsmClass visitDeclarations(Collection<CsmOffsetableDeclaration> decls, final int caretOffset) { for(CsmOffsetableDeclaration decl : decls) { if (CsmKindUtilities.isNamespaceDefinition(decl)) { if (decl.getStartOffset() <= caretOffset && caretOffset <= decl.getEndOffset()) { return visitDeclarations(((CsmNamespaceDefinition)decl).getDeclarations(), caretOffset); if (decl.getStartOffset() <= caretOffset && caretOffset <= decl.getEndOffset()) { CsmClass cls = (CsmClass) decl; int leftBracketOffset = cls.getLeftBracketOffset(); if (decl.getStartOffset() <= caretOffset && caretOffset <= decl.getEndOffset()) { return null;
private void visitDeclarations(Set<CsmClass> classes, Collection<CsmOffsetableDeclaration> decls, final int caretOffset) { for(CsmOffsetableDeclaration decl : decls) { if (!isApplicable) { return; } if (CsmKindUtilities.isNamespaceDefinition(decl)) { if (decl.getStartOffset() <= caretOffset && caretOffset <= decl.getEndOffset()) { visitDeclarations(classes, ((CsmNamespaceDefinition)decl).getDeclarations(), caretOffset); } } else { if (decl.getStartOffset() <= caretOffset && caretOffset <= decl.getEndOffset()) { isApplicable = false; } if (CsmKindUtilities.isMethodDefinition(decl)) { CsmFunction declaration = ((CsmFunctionDefinition)decl).getDeclaration(); if (CsmKindUtilities.isFunctionDeclaration(declaration) && CsmKindUtilities.isClassMember(declaration)) { CsmMember method = (CsmMember) declaration; CsmClass cls = method.getContainingClass(); if (cls != null) { classes.add(cls); } } } } } }
public CsmOffsetableDeclaration getFunction(CsmFile file, int position) { if (file != null) { CsmOffsetableDeclaration best = null; for(CsmOffsetableDeclaration decl : file.getDeclarations()) { if (decl.getStartOffset() <= position && position <= decl.getEndOffset()) { return getInternalDeclaration(decl, position); } else if (decl.getStartOffset() > position - GAP) { if (best == null || best.getStartOffset() > decl.getStartOffset()){ best = decl; } } } return best; } return null; }
private StatementResult findExpressionStatement(Collection<? extends CsmOffsetableDeclaration> decls, int selectionStart, int selectionEnd, Document doc, final AtomicBoolean canceled) { for(CsmOffsetableDeclaration decl : decls) { if (canceled.get()) { return null; } if (decl.getStartOffset() < selectionStart && selectionEnd < decl.getEndOffset()) { if (CsmKindUtilities.isFunctionDefinition(decl)) { CsmFunctionDefinition def = (CsmFunctionDefinition) decl; return findExpressionStatementInBody(def.getBody(), selectionStart, selectionEnd, doc, canceled); } else if (CsmKindUtilities.isNamespaceDefinition(decl)) { CsmNamespaceDefinition def = (CsmNamespaceDefinition) decl; return findExpressionStatement(def.getDeclarations(), selectionStart, selectionEnd, doc, canceled); } else if (CsmKindUtilities.isClass(decl)) { CsmClass cls = (CsmClass) decl; return findExpressionStatement(cls.getMembers(), selectionStart, selectionEnd, doc, canceled); } } } return null; }
CsmNamespaceDefinition ns = (CsmNamespaceDefinition) parent; for(CsmOffsetableDeclaration decl : ns.getDeclarations()) { if (decl.getStartOffset() < position && position < decl.getEndOffset()) { list.add(decl); getInternalDeclaration(list, decl, position);
for (CsmInclude include : fileContent.getIncludes()) { if (include instanceof IncludeImpl) { if (include.getStartOffset() > inclContainer.getStartOffset() && include.getEndOffset() < inclContainer.getEndOffset()) {
CsmOffsetableDeclaration best = null; for(CsmOffsetableDeclaration decl : ns.getDeclarations()) { if (decl.getStartOffset() < position && position < decl.getEndOffset()) { return getInternalDeclaration(decl, position); } else if (decl.getStartOffset() > position - GAP) {
TypeImpl typeImpl = TypeFactory.createType((CsmClassifier)declaration, ptrOperator, arrayDepth, curr.getFirstChild(), file, declaration.getStartOffset(), declaration.getEndOffset()); typeImpl.setTypeOfTypedef(); List<CsmTemplateParameter> csmTemplateParams = renderTemplateParams(templateParams, scope);