aboutsummaryrefslogtreecommitdiffstats
path: root/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java')
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java
new file mode 100644
index 000000000..d1e2fb767
--- /dev/null
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/nodeTypes/NodeWithRange.java
@@ -0,0 +1,54 @@
+package com.github.javaparser.ast.nodeTypes;
+
+import com.github.javaparser.Position;
+import com.github.javaparser.Range;
+import com.github.javaparser.ast.Node;
+
+import java.util.Optional;
+
+/**
+ * A node that has a Range, which is every Node.
+ *
+ */
+public interface NodeWithRange<N> {
+ Optional<Range> getRange();
+
+ N setRange(Range range);
+
+ /**
+ * The begin position of this node in the source file.
+ */
+ default Optional<Position> getBegin() {
+ return getRange().map(r -> r.begin);
+ }
+
+ /**
+ * The end position of this node in the source file.
+ */
+ default Optional<Position> getEnd() {
+ return getRange().map(r -> r.end);
+ }
+
+ default boolean containsWithin(Node other) {
+ if (getRange().isPresent() && other.getRange().isPresent()) {
+ return getRange().get().contains(other.getRange().get());
+ }
+ return false;
+ }
+
+ /**
+ * @deprecated use isAfter() on range
+ */
+ @Deprecated
+ default boolean isPositionedAfter(Position position) {
+ return getRange().map(r -> r.isAfter(position)).orElse(false);
+ }
+
+ /**
+ * @deprecated use isBefore() on range
+ */
+ @Deprecated
+ default boolean isPositionedBefore(Position position) {
+ return getRange().map(r -> r.isBefore(position)).orElse(false);
+ }
+}