/** * Compute the end offset of give AST node. * * @param node * @return */ private int getEndOffset(IASTNode node) { IASTFileLocation fileLocation = getMaxFileLocation(node.getNodeLocations()); if (fileLocation != null) { return fileLocation.getNodeOffset() + fileLocation.getNodeLength(); } // fallback: use container range end DocumentRangeNode container = getCurrentContainer(); Position containerRange = container.getRange(); return containerRange.getOffset() + containerRange.getLength(); }
/** * Compute the start offset of given AST node. * * @param node * @return */ private int getStartOffset(IASTNode node) { IASTFileLocation fileLocation = getMinFileLocation(node.getNodeLocations()); if (fileLocation != null) { return fileLocation.getNodeOffset(); } DocumentRangeNode container = getCurrentContainer(); Object[] children = container.getChildren(); if (children != null && children.length > 0) { Position prevRange = ((DocumentRangeNode) children[children.length - 1]).getRange(); return prevRange.getOffset() + prevRange.getLength(); } // fallback: use container range start Position containerRange = container.getRange(); return containerRange.getOffset(); }