summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'cfg-to-paths/src/Node.java')
-rw-r--r--cfg-to-paths/src/Node.java73
1 files changed, 53 insertions, 20 deletions
diff --git a/cfg-to-paths/src/Node.java b/cfg-to-paths/src/Node.java
index 5f82f64..3b6f2c1 100644
--- a/cfg-to-paths/src/Node.java
+++ b/cfg-to-paths/src/Node.java
@@ -2,33 +2,14 @@ import java.util.*;
public class Node
{
+ /** Static *****************************************************************/
private static final Map<String, Node> NODE_FROM_STRING;
- private final Collection<Node> next_nodes;
-
- private final String name;
static
{
NODE_FROM_STRING = new HashMap<String, Node>();
}
- private Node (final String name)
- {
- this.name = name;
- next_nodes = new ArrayList<Node>();
- }
-
- public Collection<Node> next_nodes ()
- {
- return next_nodes;
- }
-
- @Override
- public String toString ()
- {
- return name;
- }
-
public static Node get_node (final String s)
{
return NODE_FROM_STRING.get(s);
@@ -44,6 +25,24 @@ public class Node
return true;
}
+ public static boolean handle_is_terminal (final String a)
+ {
+ Node n;
+
+ n = NODE_FROM_STRING.get(a);
+
+ if (n == (Node) null)
+ {
+ n = new Node(a);
+
+ NODE_FROM_STRING.put(a, n);
+ }
+
+ n.set_as_terminal();
+
+ return true;
+ }
+
public static boolean handle_connect_to (final String a, final String b)
{
final Node n_a, n_b;
@@ -68,4 +67,38 @@ public class Node
return true;
}
+
+ /** Non-Static *************************************************************/
+ private final Collection<Node> next_nodes;
+ private final String name;
+ private boolean is_terminal;
+
+ private Node (final String name)
+ {
+ this.name = name;
+
+ next_nodes = new ArrayList<Node>();
+ is_terminal = false;
+ }
+
+ private void set_as_terminal ()
+ {
+ is_terminal = true;
+ }
+
+ public Collection<Node> next_nodes ()
+ {
+ return next_nodes;
+ }
+
+ public boolean is_terminal ()
+ {
+ return is_terminal;
+ }
+
+ @Override
+ public String toString ()
+ {
+ return name;
+ }
}