@Override public String getReplaceDescription(CsmReference ref, AbstractRefactoring refactoring) { String out = null; final CsmObject referencedObject = ref.getReferencedObject(); if (CsmKindUtilities.isFile(referencedObject)) { String oldText = ref.getText().toString(); return NbBundle.getMessage(CsmRefactoringUtils.class, "UpdateInclude", oldText); } return out; }
@Override public boolean isGlobalVariable(CsmVariable var) { if (var instanceof VariableImpl) { CsmScope scope = (var).getScope(); // Cannot check on globalness class members, parameters, etc. if (CsmKindUtilities.isFile(scope) || CsmKindUtilities.isNamespace(scope)) { return NamespaceImpl.isNamespaceScope((VariableImpl) var, CsmKindUtilities.isFile(scope)); } return true; } return true; // throw UnsupportedOperationException? }
public static CsmFile getCsmFile(CsmObject csmObject) { if (CsmKindUtilities.isFile(csmObject)) { return ((CsmFile) csmObject); } else if (CsmKindUtilities.isOffsetable(csmObject)) { return ((CsmOffsetable) csmObject).getContainingFile(); } return null; }
protected boolean isCStyleStatic() { return isStatic() && CsmKindUtilities.isFile(getScope()); }
public static String getHtml(CsmObject obj) { if (CsmKindUtilities.isOffsetable(obj)) { return getHtml((CsmOffsetable)obj); } else if (CsmKindUtilities.isFile(obj)) { return CsmDisplayUtilities.htmlize(((CsmFile)obj).getName().toString()); } else { return obj.toString(); } }
private static XRefResultSet.DeclarationScope checkFileClassNamespaceContainers( ObjectContext<CsmObject> objContext, ObjectContext<CsmFunctionDefinition> csmFunction, PrintWriter printOut) { XRefResultSet.DeclarationScope out = XRefResultSet.DeclarationScope.UNRESOLVED; if (CsmKindUtilities.isFile(objContext.objScope)) { out = checkFileContainer(objContext, csmFunction); } else if (objContext.objClass != null) { out = checkClassContainers(objContext, csmFunction); } else if (objContext.objNs != null) { out = checkNamespaceContainers(objContext, csmFunction); } else if (printOut != null) { printOut.println("unknown scope of " + objContext.csmObject + " in context of " + csmFunction.csmObject); // NOI18N } return out; }
public static FileObject getFileObject(CsmObject object) { CsmFile container = null; if (CsmKindUtilities.isFile(object)) { container = (CsmFile)object; } else if (CsmKindUtilities.isOffsetable(object)) { container = ((CsmOffsetable)object).getContainingFile(); } return container == null ? null : CsmUtilities.getFileObject(container); }
/*package*/ static boolean isLangContainerFeature(CsmObject obj) { assert obj != null; return CsmKindUtilities.isFunction(obj) || CsmKindUtilities.isClass(obj) || CsmKindUtilities.isEnum(obj) || CsmKindUtilities.isNamespaceDefinition(obj) || CsmKindUtilities.isFile(obj); }
@Override public String getReplaceText(CsmReference ref, String newText, AbstractRefactoring refactoring) { String out = null; final CsmObject referencedObject = ref.getReferencedObject(); if (CsmKindUtilities.isFile(referencedObject)) { final CsmObject owner = ref.getOwner(); assert CsmKindUtilities.isInclude(owner) : "include directive is expected " + owner; FileObject file = CsmUtilities.getFileObject((CsmFile) referencedObject); if (file != null) { String oldText = ref.getText().toString(); // check if include directive really contains file name and not macro expression String fileNameExt = file.getNameExt(); final int lastIndexOf = oldText.lastIndexOf(fileNameExt); if (lastIndexOf > 0) { String fileName = file.getName(); out = oldText.substring(0, lastIndexOf) + newText + oldText.substring(lastIndexOf + fileName.length()); } } } return out; }
public static boolean openSource(CsmObject element) { if (CsmKindUtilities.isOffsetable(element)) { return openAtElement((CsmOffsetable) element); } else if (CsmKindUtilities.isFile(element)) { final CsmFile file = (CsmFile) element; CsmOffsetable fileTarget = new FileTarget(file); return openAtElement(fileTarget); } return false; }
public List<CsmFunction> getFileLocalFunctions(CsmContext context, String strPrefix, boolean match, boolean needDeclFromUnnamedNS) { Map<CharSequence, CsmFunction> out = new HashMap<CharSequence, CsmFunction>(); if (!context.isEmpty()) { for (Iterator it = context.iterator(); it.hasNext();) { CsmContext.CsmContextEntry elem = (CsmContext.CsmContextEntry) it.next(); if (CsmKindUtilities.isFile(elem.getScope())) { CsmFile currentFile = (CsmFile) elem.getScope(); fillFileLocalFunctions(strPrefix, match, currentFile, needDeclFromUnnamedNS, false, out); for (Iterator it2 = context.iterator(); it2.hasNext();) { CsmContext.CsmContextEntry elem2 = (CsmContext.CsmContextEntry) it2.next(); if (CsmKindUtilities.isNamespaceDefinition(elem2.getScope())) { List<CsmFunction> funs = new ArrayList<CsmFunction>(); CsmNamespaceDefinition nsd = (CsmNamespaceDefinition) elem2.getScope(); fillFileLocalIncludeNamespaceFunctions(nsd.getNamespace(), strPrefix, match, currentFile, funs, needDeclFromUnnamedNS); for (CsmFunction fun : funs) { out.put(fun.getSignature(), fun); } } } break; } } } return new ArrayList<CsmFunction>(out.values()); }
public static CsmContext findContextFromScope(CsmFile file, int offset, CsmScope contextScope) { CsmContext context = new CsmContext(file, offset); List<CsmScope> scopes = new ArrayList<CsmScope>(); scopes.add(contextScope); while (CsmKindUtilities.isScopeElement(contextScope) && !CsmKindUtilities.isFile(contextScope)) { contextScope = ((CsmScopeElement) contextScope).getScope(); scopes.add(0, contextScope); } for (CsmScope scope : scopes) { CsmContextUtilities.updateContext(scope, offset, context); } context.setLastObject(context.getLastScope()); exploreTypeObject(context, context.getLastObject(), offset); return context; } }
/** * Return the name of the context of the scope element - * either namespace or (for file-level, such as C-style statics) file * (If the element is a nested class, return containing class' namespace) */ public static String getContextName(CsmScopeElement element) { CsmScope scope = element.getScope(); if( CsmKindUtilities.isClass(scope) ) { CsmClass cls = ((CsmClass) scope); CsmNamespace ns = getClassNamespace(cls); return ns.getQualifiedName().toString(); } else if( CsmKindUtilities.isNamespace(scope) ) { return ((CsmNamespace) scope).getQualifiedName().toString(); } else if( CsmKindUtilities.isFile(scope) ) { return ((CsmFile) scope).getName().toString(); } return ""; }
private static Iterator<? extends CsmObject> getInnerObjectsIterator(CsmFilter offsetFilter, CsmScope scope) { Iterator<? extends CsmObject> out; if (CsmKindUtilities.isFile(scope)) { out = CsmSelect.getDeclarations((CsmFile)scope, offsetFilter); } else if (CsmKindUtilities.isNamespaceDefinition(scope)) { out = CsmSelect.getDeclarations(((CsmNamespaceDefinition)scope), offsetFilter); } else if (CsmKindUtilities.isClass(scope)) { out = CsmSelect.getClassMembers(((CsmClass)scope), offsetFilter); } else { out = scope.getScopeElements().iterator(); } return out; }
public static String getSimpleText(CsmObject element) { String text = ""; if (element != null) { if (CsmKindUtilities.isFile(element)) { text = CsmUtilities.getFileObject(((CsmFile)element)).getName(); } else if (CsmKindUtilities.isNamedElement(element)) { text = ((CsmNamedElement) element).getName().toString(); } else if (CsmKindUtilities.isStatement(element)) { text = ((CsmStatement)element).getText().toString(); } else if (CsmKindUtilities.isOffsetable(element) ) { text = ((CsmOffsetable)element).getText().toString(); } // cut off destructor prefix if (text.startsWith("~")) { // NOI18N text = text.substring(1); } for (CsmRefactoringNameProvider provider : renameProviders.allInstances()) { String newName = provider.getRefactoredName(element, text); if (newName != null) { text = newName; } } } return text; }
private Iterator<? extends CsmObject> getInnerObjectsIterator(CsmFilter offsetFilter, CsmScope scope) { Iterator<? extends CsmObject> out; if (CsmKindUtilities.isFile(scope)) { out = CsmSelect.getDeclarations((CsmFile)scope, offsetFilter); } else if (CsmKindUtilities.isNamespaceDefinition(scope)) { out = CsmSelect.getDeclarations(((CsmNamespaceDefinition)scope), offsetFilter); } else if (CsmKindUtilities.isClass(scope)) { Iterator<CsmMember> out1 = CsmSelect.getClassMembers(((CsmClass)scope), offsetFilter); Iterator<CsmFriend> out2 = CsmSelect.getClassFrirends(((CsmClass)scope), offsetFilter); out = new CompoundIterator(out1, out2); } else if (CsmKindUtilities.isCompoundStatement(scope)) { // we stop on compound statement out = Collections.<CsmObject>emptyList().iterator(); } else { out = scope.getScopeElements().iterator(); } return out; }
FileReferencesContext(CsmScope csmScope){ if (CsmKindUtilities.isFile(csmScope)) { csmFile = (CsmFile) csmScope; } else if (CsmKindUtilities.isFunction(csmScope)) { csmFile = ((CsmFunction)csmScope).getContainingFile(); } else if (CsmKindUtilities.isOffsetable(csmScope)) { csmFile = ((CsmOffsetable)csmScope).getContainingFile(); } //lastOffset = 0; CsmListeners.getDefault().addProgressListener(this); }
public RenameRefactoringUI(CsmObject csmObject, String newName) { this.origObject = csmObject; this.dispOldName = this.oldName = CsmRefactoringUtils.getSimpleText(this.origObject); this.newName = newName; this.fromListener = (newName != null); Lookup lkp = null; if (CsmKindUtilities.isFile(csmObject)) { // name is without extension, because later it will be passed to usual rename // refactoring as well which make real file rename and has ability to undo it FileObject fo = CsmUtilities.getFileObject(((CsmFile)csmObject)); if (fo != null) { lkp = Lookups.fixed(csmObject, fo); } } if (lkp == null) { lkp = Lookups.singleton(csmObject); } this.refactoring = new RenameRefactoring(lkp); }
protected Problem checkIfModificationPossibleInFile(Problem problem, CsmObject csmObject) { CsmFile csmFile = null; if (CsmKindUtilities.isFile(csmObject)) { csmFile = (CsmFile) csmObject; } else if (CsmKindUtilities.isOffsetable(csmObject)) { csmFile = ((CsmOffsetable) csmObject).getContainingFile(); } if (csmFile != null) { FileObject fo = CsmUtilities.getFileObject(csmFile); if (!CsmRefactoringUtils.isRefactorable(fo)) { problem = createProblem(problem, true, getCannotRename(fo)); } // check that object is in opened project if (problem == null && !CsmRefactoringUtils.isElementInOpenProject(csmFile)) { problem = new Problem(false, NbBundle.getMessage(CsmModificationRefactoringPlugin.class, "ERR_ProjectNotOpened")); return problem; } } return problem; }
@Override public Image getIcon(int type) { if (description.iconElementHandle == null) { return super.getIcon(type); } if (CsmKindUtilities.isFile(description.iconElementHandle)) { FileObject fo = ((CsmFile) description.iconElementHandle).getFileObject(); if (fo != null && fo.isValid()) { try { DataObject dob = DataObject.find(fo); Node node = dob.getNodeDelegate(); if (node != null) { return node.getIcon(type); } } catch (DataObjectNotFoundException ex) { } } return super.getIcon(type); } return ImageUtilities.icon2Image(CsmImageLoader.getIcon(description.iconElementHandle)); }