KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > vladium > jcd > cls > attribute > DeclaredExceptionTable


1 /* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2  *
3  * This program and the accompanying materials are made available under
4  * the terms of the Common Public License v1.0 which accompanies this distribution,
5  * and is available at http://www.eclipse.org/legal/cpl-v10.html
6  *
7  * $Id: DeclaredExceptionTable.java,v 1.1.1.1 2004/05/09 16:57:47 vlad_r Exp $
8  */

9 package com.vladium.jcd.cls.attribute;
10
11 import java.io.IOException JavaDoc;
12
13 import com.vladium.jcd.lib.UDataOutputStream;
14 import com.vladium.util.IntVector;
15
16 // ----------------------------------------------------------------------------
17
/**
18  * @author (C) 2001, Vlad Roubtsov
19  */

20 final class DeclaredExceptionTable implements IDeclaredExceptionTable
21 {
22     // public: ................................................................
23

24     // ACCESSORS:
25

26     public int get (final int offset)
27     {
28         return m_exceptions.get (offset);
29     }
30     
31     public int size ()
32     {
33         return m_exceptions.size ();
34     }
35     
36     public long length ()
37     {
38         return (1 + m_exceptions.size ()) << 1; // use size() if class becomes non-final
39
}
40         
41     // Cloneable:
42

43     /**
44      * Performs a deep copy.
45      */

46     public Object JavaDoc clone ()
47     {
48         try
49         {
50             final DeclaredExceptionTable _clone = (DeclaredExceptionTable) super.clone ();
51             
52             // deep clone:
53
_clone.m_exceptions = (IntVector) m_exceptions.clone ();
54             
55             return _clone;
56         }
57         catch (CloneNotSupportedException JavaDoc e)
58         {
59             throw new InternalError JavaDoc (e.toString ());
60         }
61     }
62     
63     // IClassFormatOutput:
64

65     public void writeInClassFormat (final UDataOutputStream out) throws IOException JavaDoc
66     {
67         int number_of_exceptions = m_exceptions.size (); // use size() if class becomes non-final
68
out.writeU2 (number_of_exceptions);
69         
70         for (int i = 0; i < number_of_exceptions; i++)
71         {
72             out.writeU2 (get (i));
73         }
74     }
75
76
77     // MUTATORS:
78

79     public int add (final int exception_index)
80     {
81         final int newoffset = m_exceptions.size (); // use size() if class becomes non-final
82
m_exceptions.add (exception_index);
83         
84         return newoffset;
85     }
86     
87     public int set (final int offset, final int exception_index)
88     {
89         return m_exceptions.set (offset, exception_index);
90     }
91     
92     // protected: .............................................................
93

94     // package: ...............................................................
95

96
97     DeclaredExceptionTable (final int capacity)
98     {
99          m_exceptions = capacity < 0 ? new IntVector () : new IntVector (capacity);
100     }
101
102     // private: ...............................................................
103

104     
105     private IntVector m_exceptions;
106     
107 } // end of class
108
// ----------------------------------------------------------------------------
109
Popular Tags