private CharSequence getVariableText(CsmVariable var) { CharSequence itemText = var.getText(); if (CsmUtilities.isAutoType(var.getType())) { DisplayResolvedTypeHandler handler = new DisplayResolvedTypeHandler(); CsmExpressionResolver.resolveType( var.getName(), var.getContainingFile(), var.getType().getEndOffset(), null, handler ); if (handler.typeText != null) { return handler.typeText; } } return itemText; }
private boolean findVariable(CharSequence name, Iterator<CsmOffsetableDeclaration> it, int offset, CsmFilter filter) { while(it.hasNext()) { CsmOffsetableDeclaration decl = it.next(); if (decl.getStartOffset() >= offset) { break; } switch (decl.getKind()) { case VARIABLE: if (CharSequences.comparator().compare(name, ((CsmVariable) decl).getName()) == 0) { return true; } break; case VARIABLE_DEFINITION: if (CharSequences.comparator().compare(name, ((CsmVariable) decl).getQualifiedName()) == 0) { return true; } break; case NAMESPACE_DEFINITION: CsmNamespaceDefinition nd = (CsmNamespaceDefinition) decl; if (nd.getStartOffset() <= offset && nd.getEndOffset() >= offset) { if (findVariable(name, CsmSelect.getDeclarations(nd, filter), offset, filter)) { return true; } } break; } } return false; }
@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? }
CsmType type = CsmKindUtilities.isVariable(objUnderOffset) ? ((CsmVariable) objUnderOffset).getType() : ((CsmTypedef) objUnderOffset).getType(); CsmParameter parameter = null; boolean repeat; CharSequence name = var.getName(); if (name != null) { if (name.length() > 0 && tokenUnderOffset.text().toString().equals(name.toString()) && !var.isExtern()) { if ((var.getInitialValue() == null) && (var.getType() != null) && (var.getType().getArrayDepth() == 0)) { csmItem = var;
if (var.length() == 0 && CsmKindUtilities.isVariable(context.getLastObject()) && ((CsmVariable)context.getLastObject()).getInitialValue() != null) { String expr = varObj.getInitialValue().getText().toString(); if(findLCurlsNumberBeforPosition(expr, pos - varObj.getInitialValue().getStartOffset()) > 1) { int pos2 = findLastAssignmentBeforPosition(expr, pos - varObj.getInitialValue().getStartOffset()); int pos3 = findLastTypeCastBeforPosition(expr, pos - varObj.getInitialValue().getStartOffset()); if(pos2 != -1 && pos3 < pos2) { CsmType type = findExactVarType(file, var, varObj.getInitialValue().getStartOffset() + pos2, refContext); if(type != null) { String varName = expr.substring(pos2); if (CsmOffsetUtilities.isInObject(varObj.getInitialValue(), pos)) { CsmType type = varObj.getType(); if (type.getArrayDepth() > 0) { CsmClassifier cls = type.getClassifier(); if (CsmKindUtilities.isVariable(decl)) { CsmVariable v = (CsmVariable) decl; if (v.getName().toString().equals(var)) { return v.getType();
private void init(final CsmVariable var){ final CharSequence old = text; text = var.getName(); final Runnable runnable = new Runnable() { @Override public void run() { if (SwingUtilities.isEventDispatchThread()) { if ((old == null) || !old.equals(text)) { fireNameChange(old == null ? null : old.toString(), text == null ? null : text.toString()); fireDisplayNameChange(old == null ? null : old.toString(), text == null ? null : text.toString()); fireShortDescriptionChange(old == null ? null : old.toString(), text == null ? null : text.toString()); } fireIconChange(); fireOpenedIconChange(); } else { resetIcon(CsmImageLoader.getImage(var)); SwingUtilities.invokeLater(this); } } }; if (SwingUtilities.isEventDispatchThread()) { RP.post(runnable); } else { runnable.run(); } }
CsmVariable var = (CsmVariable) context.getLastObject(); CsmClassifier classifier = CsmBaseUtilities.getOriginalClassifier(var.getType().getClassifier(), var.getContainingFile()); CsmExpression expression = var.getInitialValue(); if (expression != null) { CsmCacheMap cache = CsmCacheManager.getClientCache(CsmContextUtilities.class, CACHE_INITIALIZER);
CsmType type = ((CsmVariable)lastObj).getType(); if (!CsmOffsetUtilities.sameOffsets(lastObj, type) && CsmOffsetUtilities.isInObject(type, offset)) { if (findInExpression(((CsmVariable)lastObj).getInitialValue(), lastObj, offset, context, innerObj)) { lastObj = last = innerObj.value;
private CsmType findAutoVariableType(CsmVariable var, CsmType varType) { assert isAutoType(varType) : "var must have auto type!"; // NOI18N CsmType oldType = varType; final CsmExpression initialValue = var.getInitialValue(); if (initialValue != null) { varType = findExpressionType(initialValue); if(CsmKindUtilities.isStatement(var.getScope()) ) { if(((CsmStatement) var.getScope()).getKind().equals(CsmStatement.Kind.RANGE_FOR)) { CsmRangeForStatement forStmt = (CsmRangeForStatement) var.getScope(); final CsmExpression initializer = forStmt.getInitializer(); if(initializer != null && initializer.getText() != null) {
public static boolean isInInitializerList(CsmContext context, int offset) { CsmFunction f = getFunction(context, false); if (CsmKindUtilities.isConstructor(f)) { for (CsmExpression izer : ((CsmInitializerListContainer) f).getInitializerList()) { if (CsmOffsetUtilities.isInObject(izer, offset)) { return true; } } } if (CsmKindUtilities.isVariable(context.getLastObject())) { CsmVariable var = (CsmVariable) context.getLastObject(); CsmExpression initialValue = var.getInitialValue(); if (initialValue != null && CsmOffsetUtilities.isInObject(initialValue, offset)) { return true; } } return false; }
if (decl instanceof CsmVariable) { CsmVariable d = (CsmVariable) decl; if (d.getStartOffset() <= selectionStrat && selectionEnd <= d.getEndOffset()) { CsmExpression initialValue = d.getInitialValue(); if (initialValue != null) { if (initialValue.getStartOffset() <= selectionStrat && selectionEnd <= initialValue.getEndOffset()) {
private boolean isWanted(CsmObject obj, CsmFile file) { if (!CsmKindUtilities.isLocalVariable(obj)) { // we want only local variables ... return false; } CsmVariable var = (CsmVariable)obj; if (!var.getContainingFile().equals(file)) { // ... only from current file return false; } if (CsmKindUtilities.isParameter(obj)) { CsmParameter prm = (CsmParameter) var; Set<CsmParameter> set = getFunctionDefinitionParameters(file); return set.contains(prm); } else { return true; } } private Set<CsmParameter> getFunctionDefinitionParameters(CsmFile file) {
private List<CsmVariable> filterVariables(List<CsmVariable> res) { Map<String, CsmVariable> out = new HashMap<String, CsmVariable>(res.size()); for (CsmVariable var : res) { String fqn = var.getQualifiedName().toString(); CsmVariable old = out.get(fqn); // replace extern variable by normal one if needed if (old == null || !CsmKindUtilities.isExternVariable(var)) { out.put(fqn, var); } } return new ArrayList<CsmVariable>(out.values()); }
@Override public void run() { CsmOffsetable target = csmObject; if (!more) { if (CsmKindUtilities.isFunctionDeclaration((CsmObject)csmObject)){ CsmFunctionDefinition def = ((CsmFunction)csmObject).getDefinition(); if (def != null){ target = def; } else { CsmReference ref = CsmFunctionDefinitionResolver.getDefault().getFunctionDefinition((CsmFunction)csmObject); if (ref != null){ target = ref; } } } else if(CsmKindUtilities.isVariableDeclaration((CsmObject)csmObject)){ CsmVariableDefinition def = ((CsmVariable)csmObject).getDefinition(); if (def != null){ target = def; } } } CsmUtilities.openSource(target); } };
private CsmFunctional lookForVariableOperator(CsmVariable object) { CsmType varType = ((CsmVariable) object).getType(); return lookForOperator(varType); }
private Map<String,List<CsmUID<CsmVariable>>> getFileLocalIncludeVariables() { synchronized(lock) { if (fileLocalVars == null) { fileLocalVars = new HashMap<String, List<CsmUID<CsmVariable>>>(); CsmDeclaration.Kind[] kinds = new CsmDeclaration.Kind[] { CsmDeclaration.Kind.VARIABLE, CsmDeclaration.Kind.VARIABLE_DEFINITION}; CsmFilter filter = CsmContextUtilities.createFilter(kinds, null, true, true, false); List<CsmVariable> allVars = new ArrayList<CsmVariable>(10); CsmProjectContentResolver.fillFileLocalVariablesByFilter(filter, csmFile, allVars); for (CsmVariable var : allVars) { String name = var.getName().toString(); List<CsmUID<CsmVariable>> list = fileLocalVars.get(name); if (list == null) { list = new ArrayList<CsmUID<CsmVariable>>(); fileLocalVars.put(name, list); } list.add(UIDs.get(var)); } } return fileLocalVars; } }