// Path: src/individualBasedModel/Host.java
// public class Host {
// 	
// 	///////////////////////////////////
// 	// class variables and methods
// 	private static long hostCounter 	= -1;
// 	
// 	private static long nextHostUID() {
// 		hostCounter++;
// 		return (hostCounter);
// 	}
// 	
// 	/**
// 	 * reset the host counter between multiple replicate runs of DiscreteSpatialPhyloSimulator
// 	 */
// 	static void resetHostCounter() {
// 		hostCounter = -1;
// 	}
// 	
// 	///////////////////////////////////
// 	// instance variables & methods
// 
// 	// instance variables
// 	protected String 			name = null;
// 	protected long	 		 	uid;
// 	protected InfectionState 	state 		= InfectionState.SUSCEPTIBLE;
// 	
// 	protected Deme				myDeme;
// 	
// 	// constructors
// 	public Host(Deme myDeme) {
// 		this.uid 	= nextHostUID();
// 		this.name   = "H"+String.format("%07d", uid);	//""+uid;
// 		this.myDeme = myDeme;
// 	}
// 	
// 	public Host(Deme myDeme, String name) {
// 		this.uid  	= nextHostUID();
// 		this.name 	= name;
// 		this.myDeme = myDeme;
// 	}
// 	
// 	//////////////////////////////////
// 	// setters
// 	
// 	public void setState(InfectionState state) {
// 		this.state = state;
// 	}
// 	
// 	///////////////////////////////////
// 	// getters
// 	
// 	public InfectionState getState() {
// 		return state;
// 	}
// 	
// 	public String getName() {
// 		if (this.name == null) {
// 			this.name = ""+uid;
// 		}
// 		return this.name;
// 	}
// 	
// 	public String getNameWithDeme() {
// 		//return (getName() + "_" + myDeme.getName());
// 		return (name + "_" + myDeme);
// 	}
// 	
// 	public long getUid() {
// 		return uid;
// 	}
// 	
// 	/////////////////////////////////////////////////////////////////////////
// 	// comparison methods and toString
// 
// 	@Override
// 	public String toString() {
// 		return "Host [name=" + name + ", uid=" + uid + ", state=" + state
// 				+ ", myDeme=" + myDeme + "]";
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + (int) (uid ^ (uid >>> 32));
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Host other = (Host) obj;
// 		if (uid != other.uid)
// 			return false;
// 		return true;
// 	}
// 	
// 	
// 	
// }


import java.util.*;
import individualBasedModel.Host;
package trees;


/**
 * 
 * @author Samantha Lycett
 * @created 26 Nov 2012
 * @version 28 Nov 2012
 * @version 17 June 2013
 * @version 2  July 2013
 */
public class TransmissionNode implements Node, Cloneable {

	///////////////////////////////////
	// class variables and methods
	private static long nodeCounter 	= -1;

	private static long nextNodeUID() {
		nodeCounter++;
		return (nodeCounter);
	}
	
	/**
	 * only use this to reset the node counter between runs
	 */
	public static void resetNodeCounter() {
		nodeCounter = -1;
	}
	
	///////////////////////////////////
	
	
	protected long 			uid;
	protected String 		name;						// access through getName because is set from host
	
// Path: src/individualBasedModel/Host.java
// public class Host {
// 	
// 	///////////////////////////////////
// 	// class variables and methods
// 	private static long hostCounter 	= -1;
// 	
// 	private static long nextHostUID() {
// 		hostCounter++;
// 		return (hostCounter);
// 	}
// 	
// 	/**
// 	 * reset the host counter between multiple replicate runs of DiscreteSpatialPhyloSimulator
// 	 */
// 	static void resetHostCounter() {
// 		hostCounter = -1;
// 	}
// 	
// 	///////////////////////////////////
// 	// instance variables & methods
// 
// 	// instance variables
// 	protected String 			name = null;
// 	protected long	 		 	uid;
// 	protected InfectionState 	state 		= InfectionState.SUSCEPTIBLE;
// 	
// 	protected Deme				myDeme;
// 	
// 	// constructors
// 	public Host(Deme myDeme) {
// 		this.uid 	= nextHostUID();
// 		this.name   = "H"+String.format("%07d", uid);	//""+uid;
// 		this.myDeme = myDeme;
// 	}
// 	
// 	public Host(Deme myDeme, String name) {
// 		this.uid  	= nextHostUID();
// 		this.name 	= name;
// 		this.myDeme = myDeme;
// 	}
// 	
// 	//////////////////////////////////
// 	// setters
// 	
// 	public void setState(InfectionState state) {
// 		this.state = state;
// 	}
// 	
// 	///////////////////////////////////
// 	// getters
// 	
// 	public InfectionState getState() {
// 		return state;
// 	}
// 	
// 	public String getName() {
// 		if (this.name == null) {
// 			this.name = ""+uid;
// 		}
// 		return this.name;
// 	}
// 	
// 	public String getNameWithDeme() {
// 		//return (getName() + "_" + myDeme.getName());
// 		return (name + "_" + myDeme);
// 	}
// 	
// 	public long getUid() {
// 		return uid;
// 	}
// 	
// 	/////////////////////////////////////////////////////////////////////////
// 	// comparison methods and toString
// 
// 	@Override
// 	public String toString() {
// 		return "Host [name=" + name + ", uid=" + uid + ", state=" + state
// 				+ ", myDeme=" + myDeme + "]";
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		final int prime = 31;
// 		int result = 1;
// 		result = prime * result + (int) (uid ^ (uid >>> 32));
// 		return result;
// 	}
// 
// 	@Override
// 	public boolean equals(Object obj) {
// 		if (this == obj)
// 			return true;
// 		if (obj == null)
// 			return false;
// 		if (getClass() != obj.getClass())
// 			return false;
// 		Host other = (Host) obj;
// 		if (uid != other.uid)
// 			return false;
// 		return true;
// 	}
// 	
// 	
// 	
// }


// Path: src/trees/TransmissionNode.java
import java.util.*;
import individualBasedModel.Host;

package trees;


/**
 * 
 * @author Samantha Lycett
 * @created 26 Nov 2012
 * @version 28 Nov 2012
 * @version 17 June 2013
 * @version 2  July 2013
 */
public class TransmissionNode implements Node, Cloneable {

	///////////////////////////////////
	// class variables and methods
	private static long nodeCounter 	= -1;

	private static long nextNodeUID() {
		nodeCounter++;
		return (nodeCounter);
	}
	
	/**
	 * only use this to reset the node counter between runs
	 */
	public static void resetNodeCounter() {
		nodeCounter = -1;
	}
	
	///////////////////////////////////
	
	
	protected long 			uid;
	protected String 		name;						// access through getName because is set from host
	
	Host					host;