KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > javassist > runtime > Cflow


1 /*
2  * Javassist, a Java-bytecode translator toolkit.
3  * Copyright (C) 1999-2005 Shigeru Chiba. All Rights Reserved.
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License. Alternatively, the contents of this file may be used under
8  * the terms of the GNU Lesser General Public License Version 2.1 or later.
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  */

15
16 package javassist.runtime;
17
18 /**
19  * A support class for implementing <code>$cflow</code>.
20  * This support class is required at runtime
21  * only if <code>$cflow</code> is used.
22  *
23  * @see javassist.CtBehavior#useCflow(String)
24  */

25 public class Cflow extends ThreadLocal JavaDoc {
26     private static class Depth {
27         private int depth;
28         Depth() { depth = 0; }
29         int get() { return depth; }
30         void inc() { ++depth; }
31         void dec() { --depth; }
32     }
33
34     protected synchronized Object JavaDoc initialValue() {
35         return new Depth();
36     }
37
38     /**
39      * Increments the counter.
40      */

41     public void enter() { ((Depth)get()).inc(); }
42
43     /**
44      * Decrements the counter.
45      */

46     public void exit() { ((Depth)get()).dec(); }
47
48     /**
49      * Returns the value of the counter.
50      */

51     public int value() { return ((Depth)get()).get(); }
52 }
53
Popular Tags