aa
Work.java
Go to the documentation of this file.
1 package com.cliffc.aa.node;
2 
3 import com.cliffc.aa.util.Ary;
4 import com.cliffc.aa.util.VBitSet;
5 
6 import java.util.function.Function;
7 
8 public abstract class Work implements Function<Node,Node> {
9  public final Ary<Node> _work = new Ary<>(new Node[1],0);
10  final VBitSet _on = new VBitSet();
11  public final String _name;
12  public final boolean _replacing;
13  public Work(String name, boolean replacing) { _name=name; _replacing = replacing; }
14  public int len() { return _work._len; }
15  public <N extends Node> N add(N n) {
16  if( !_on.tset(n._uid) ) _work.push(n);
17  return n;
18  }
19  public abstract Node apply(Node n);
20 
21  public Node pop() {
22  if( _work._len==0 ) return null;
23  Node n = _work.pop();
24  _on.clear(n._uid);
25  return n;
26  }
27  public Node at(int i) { return _work.at(i); }
28  public void del(int i) { _on.clear(at(i)._uid); _work.del(i); }
29  public void del(Node n) {
30  if( !_on.get(n._uid) ) return;
31  _on.clear(n._uid);
32  _work.del(n);
33  }
34 
35  public boolean isEmpty() { return _work._len==0; }
36  public boolean on(Node n) { return _on.test(n._uid); }
37  public void clear() { _work.clear(); _on.clear(); }
38  @Override public String toString() { return _name+_on.toString(); }
39 }
com.cliffc.aa.node.Work.toString
String toString()
Definition: Work.java:38
com.cliffc.aa.node.Work._work
final Ary< Node > _work
Definition: Work.java:9
com.cliffc.aa.node.Work._replacing
final boolean _replacing
Definition: Work.java:12
com.cliffc.aa.node.Work
Definition: Work.java:8
com.cliffc
com.cliffc.aa.util.VBitSet.test
boolean test(int idx)
Definition: VBitSet.java:8
com.cliffc.aa.node.Work.del
void del(int i)
Definition: Work.java:28
com.cliffc.aa.node.Node
Definition: Node.java:16
com.cliffc.aa.util
Definition: AbstractEntry.java:1
com.cliffc.aa.node.Work.on
boolean on(Node n)
Definition: Work.java:36
com.cliffc.aa.util.Ary
Definition: Ary.java:11
com.cliffc.aa.node.Work.del
void del(Node n)
Definition: Work.java:29
com.cliffc.aa.util.VBitSet.tset
boolean tset(int idx)
Definition: VBitSet.java:7
com.cliffc.aa.node.Work.Work
Work(String name, boolean replacing)
Definition: Work.java:13
com.cliffc.aa.node.Work._name
final String _name
Definition: Work.java:11
com.cliffc.aa.node.Work.apply
abstract Node apply(Node n)
com.cliffc.aa.node.Work.clear
void clear()
Definition: Work.java:37
com.cliffc.aa.node.Work._on
final VBitSet _on
Definition: Work.java:10
com.cliffc.aa.util.VBitSet
Definition: VBitSet.java:5
com.cliffc.aa.node.Work.at
Node at(int i)
Definition: Work.java:27
com.cliffc.aa.node.Work.add
public< N extends Node > N add(N n)
Definition: Work.java:15
com.cliffc.aa
Definition: AA.java:1
com.cliffc.aa.node.Work.pop
Node pop()
Definition: Work.java:21
com.cliffc.aa.node.Work.isEmpty
boolean isEmpty()
Definition: Work.java:35
com.cliffc.aa.node.Node._uid
int _uid
Definition: Node.java:84
com
com.cliffc.aa.node.Work.len
int len()
Definition: Work.java:14