示例#1
0
 @Override
 public IIndexName[] findNames(int offset, int length) throws CoreException {
   ArrayList<IIndexName> result = new ArrayList<IIndexName>();
   for (PDOMName name = getFirstName(); name != null; name = name.getNextInFile()) {
     int nameOffset = name.getNodeOffset();
     if (nameOffset >= offset) {
       if (nameOffset + name.getNodeLength() <= offset + length) {
         result.add(name);
       } else if (name.isReference()) {
         // Names are ordered, but callers are inserted before
         // their references.
         break;
       }
     }
   }
   for (PDOMMacro macro = getFirstMacro(); macro != null; macro = macro.getNextMacro()) {
     int nameOffset = macro.getNodeOffset();
     if (nameOffset >= offset) {
       if (nameOffset + macro.getNodeLength() <= offset + length) {
         IIndexFragmentName name = macro.getDefinition();
         if (name != null) {
           result.add(name);
         }
       } else {
         break;
       }
     }
   }
   for (PDOMMacroReferenceName name = getFirstMacroReference();
       name != null;
       name = name.getNextInFile()) {
     int nameOffset = name.getNodeOffset();
     if (nameOffset >= offset) {
       if (nameOffset + name.getNodeLength() <= offset + length) {
         result.add(name);
       } else {
         break;
       }
     }
   }
   return result.toArray(new IIndexName[result.size()]);
 }