package org.aspectj.runtime.internal.cflowstack;
import java.util.Stack;
public class ThreadStackFactoryImpl implements ThreadStackFactory {
private static class ThreadStackImpl extends ThreadLocal implements ThreadStack {
public Object initialValue() {
return new Stack();
}
public Stack getThreadStack() {
return (Stack)get();
}
public void removeThreadStack() {
this.remove();
}
}
public ThreadStack getNewThreadStack() {
return new ThreadStackImpl();
}
private static class ThreadCounterImpl extends ThreadLocal implements ThreadCounter {
public Object initialValue() {
return new Counter();
}
public Counter getThreadCounter() {
return (Counter)get();
}
public void removeThreadCounter() {
this.remove();
}
public void inc() { getThreadCounter().value++; }
public void dec() { getThreadCounter().value--; }
public boolean isNotZero() { return getThreadCounter().value!= 0; }
static class Counter {
protected int value = 0;
}
}
public ThreadCounter getNewThreadCounter() {
return new ThreadCounterImpl();
}
}