/* * Copyright 2009 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.dev.jjs.impl.gflow.cfg; /** * Edge in CFG graph. Edge can be annotated by its role when there are several * edges coming from the node, to be able to reason about them separately (e.g. * it's important which edge is then/else branch in conditional node). */ public class CfgEdge { Object data; // We do not add setStart/setEnd methods because we'd like to be sure // that no one except CfgNode changes these. CfgNode<?> end; CfgNode<?> start; private final String role; public CfgEdge() { this.role = null; } public CfgEdge(String role) { this.role = role; } /** * Get edge end node. */ public CfgNode<?> getEnd() { return end; } /** * Get edge role. */ public String getRole() { return role; } /** * Get edge start node. */ public CfgNode<?> getStart() { return start; } @Override public String toString() { return (start != null ? start.toDebugString() : "*") + "->" + (end != null ? end.toDebugString() : "*"); } }