001: /* Segment.java */
002:
003: package org.quilt.cover.seg;
004:
005: import java.util.Iterator;
006: import java.util.List;
007:
008: /**
009: * A segment for coverage purposes. It has an index and visit count,
010: * and 'from' and 'to', which will typically be line numbers or indices
011: * of some sort.
012: */
013:
014: public class Segment {
015:
016: /** ideally unique */
017: private int index = -1;
018: /** visit count */
019: private int visits = 0;
020: /** index, line number, etc */
021: private int from = -1;
022: private int to = -1;
023:
024: /** No-arg constructor; creates a segment with -1 index. */
025: public Segment() {
026: }
027:
028: /**
029: * Constructor specifying a segment index.
030: *
031: * @param n The index; should be non-negative.
032: */
033:
034: public Segment(int n) {
035: index = n;
036: }
037:
038: // GET/SET METHODS //////////////////////////////////////////////
039: /** Get the 'from' value. */
040: public int getFrom() {
041: return from;
042: }
043:
044: /** Set the 'from' value. */
045: public void setFrom(int n) {
046: from = n;
047: }
048:
049: /** Get the (ideally unique) index of the segment. */
050: public int getIndex() {
051: return index;
052: }
053:
054: /** Set the segment index. */
055: public void setIndex(int n) {
056: index = n;
057: }
058:
059: /** Get the 'to' value. */
060: public int getTo() {
061: return to;
062: }
063:
064: /** Set the 'to' value. */
065: public void setTo(int n) {
066: to = n;
067: }
068:
069: /** Get the number of visits so far. */
070: public int getVisits() {
071: return visits;
072: }
073:
074: /** Set the number of visits to zero. */
075: public void reset() {
076: visits = 0;
077: }
078:
079: /** Set the number of visits; may never be used. */
080: public void setVisits(int n) {
081: visits = n;
082: }
083:
084: // OTHER METHODS ////////////////////////////////////////////////
085: /**
086: * Add the visit count from another segment.
087: *
088: * @param seg Reference to the other segment.
089: */
090: protected Segment add(final Segment seg) {
091: visits += seg.getVisits();
092: return this ;
093: }
094:
095: /** Step the visit count. */
096: public void visit() {
097: visits++;
098: }
099:
100: /**
101: * Format the segment for XML output.
102: *
103: * @param type String whose value is appropriate for an XML element name.
104: */
105: public String toXML(final String type) {
106: return "<" + type + " index=\"" + index + "\" from=\"" + from
107: + "\" to=\"" + to + "\">\n"
108:
109: + " <visits>" + visits + "</visits>\n"
110:
111: + "</" + type + ">\n";
112: }
113:
114: /** Format the segment for output as a String. */
115: public String toString() {
116: return "segment " + index + ": " + from + " --> " + to + " : "
117: + visits + " visits";
118: }
119: }
|