public void clear() throws CoreException { ICPPUsingDirective[] directives = getUsingDirectives(); for (ICPPUsingDirective ud : directives) { if (ud instanceof IPDOMNode) { ((IPDOMNode) ud).delete(null); } } setLastUsingDirective(0); // Remove the includes PDOMInclude include = getFirstInclude(); while (include != null) { PDOMInclude nextInclude = include.getNextInIncludes(); // if (contextsRemoved != null && include.getPrevInIncludedByRecord() == 0) { // contextsRemoved.add(include.getIncludesLocation()); // } include.delete(); include = nextInclude; } setFirstInclude(null); // Delete all the macros in this file PDOMLinkage linkage = getLinkage(); PDOMMacro macro = getFirstMacro(); while (macro != null) { PDOMMacro nextMacro = macro.getNextMacro(); macro.delete(linkage); macro = nextMacro; } setFirstMacro(null); // Delete all the names in this file ArrayList<PDOMName> names = new ArrayList<PDOMName>(); PDOMName name = getFirstName(); while (name != null) { names.add(name); linkage.onDeleteName(name); name = name.getNextInFile(); } for (Iterator<PDOMName> iterator = names.iterator(); iterator.hasNext(); ) { name = iterator.next(); name.delete(); } setFirstName(null); // Delete all macro references ArrayList<PDOMMacroReferenceName> mrefs = new ArrayList<PDOMMacroReferenceName>(); PDOMMacroReferenceName mref = getFirstMacroReference(); while (mref != null) { mrefs.add(mref); mref = mref.getNextInFile(); } for (PDOMMacroReferenceName m : mrefs) { m.delete(); } setFirstMacroReference(null); setSourceReadTime(0); setTimestamp(-1); }