CaRMtl/rene/zirkel/construction/Count.java
2018-09-04 22:51:42 -04:00

84 lines
2.0 KiB
Java

/*
Copyright 2006 Rene Grothmann, modified by Eric Hakenholz
This file is part of C.a.R. software.
C.a.R. is a free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 3 of the License.
C.a.R. is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package rene.zirkel.construction;
import java.util.Enumeration;
import java.util.Vector;
/**
* This is used to generate unique numbers for construction objects. Instances
* will be static in their classes. There is also an alternative count, which
* can be used for macro generation.
*/
public class Count {
static Vector Counts = new Vector();
int N, BackupN;
boolean Fixed = false;
public Count() {
reset();
Counts.addElement(this);
}
public synchronized int next() {
if (Fixed)
return 0;
N++;
return N;
}
public synchronized void reset() {
N = 0;
}
public synchronized void setAlternate(final boolean flag) {
if (flag) {
BackupN = N;
N = 0;
} else
N = BackupN;
}
static synchronized public void resetAll() {
final Enumeration e = Counts.elements();
while (e.hasMoreElements())
((Count) e.nextElement()).reset();
}
static synchronized public void setAllAlternate(final boolean flag) {
final Enumeration e = Counts.elements();
while (e.hasMoreElements())
((Count) e.nextElement()).setAlternate(flag);
}
public synchronized void fix(final boolean flag) {
Fixed = flag;
}
static synchronized public void fixAll(final boolean flag) {
final Enumeration e = Counts.elements();
while (e.hasMoreElements())
((Count) e.nextElement()).fix(flag);
}
}