/* Sim_type_p.java
*/
package eduni.simjava;
/**
* A predicate to select events with specific tags from the deferred
* event queue.
* @see eduni.simjava.Sim_predicate
* @version 1.0, 4 September 1996
* @author Ross McNab
*/
public class Sim_type_p extends Sim_predicate {
private int tag1,tag2,tag3;
private int ntags;
/** Constructor.
* @param t1 An event tag value
* @return A predicate which selects events with the tag value t1
*/
public Sim_type_p(int t1) { tag1 = t1; ntags = 1; }
/** Constructor.
* @param t1 An event tag value
* @param t2 An event tag value
* @return A predicate which selects events with the tag values t1
* or t2
*/
public Sim_type_p(int t1, int t2) { tag1 = t1; tag2 = t2; ntags = 2; }
/** Constructor.
* @param t1 An event tag value
* @param t2 An event tag value
* @param t3 An event tag value
* @return A predicate which selects events with the tag value t1,
* t2, or t3
*/
public Sim_type_p(int t1, int t2, int t3) {
tag1 = t1; tag2 = t2; tag3 = t3;
ntags = 3;
}
/** The match function called by Sim_system.sim_select(),
* not used directly by the user
*/
public boolean match(Sim_event ev) {
switch (ntags) {
case 1: return (ev.get_tag()==tag1);
case 2: return (ev.get_tag()==tag1) || (ev.get_tag()==tag2);
case 3: return (ev.get_tag()==tag1) || (ev.get_tag()==tag2) ||
(ev.get_tag()==tag3);
}
return false;
}
}