001: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
002:
003: This file is part of the db4o open source object database.
004:
005: db4o is free software; you can redistribute it and/or modify it under
006: the terms of version 2 of the GNU General Public License as published
007: by the Free Software Foundation and as clarified by db4objects' GPL
008: interpretation policy, available at
009: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
010: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
011: Suite 350, San Mateo, CA 94403, USA.
012:
013: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
014: WARRANTY; without even the implied warranty of MERCHANTABILITY or
015: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
016: for more details.
017:
018: You should have received a copy of the GNU General Public License along
019: with this program; if not, write to the Free Software Foundation, Inc.,
020: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
021: package EDU.purdue.cs.bloat.reflect;
022:
023: /**
024: * MethodInfo provides methods for accessing and modifying a method. It is
025: * implemented by <tt>file.Method</tt>.
026: *
027: * @see EDU.purdue.cs.bloat.file.Method
028: *
029: * @author Nate Nystrom (<a
030: * href="mailto:nystrom@cs.purdue.edu">nystrom@cs.purdue.edu</a>)
031: */
032: public interface MethodInfo {
033: /**
034: * Returns the class which declared the method.
035: */
036: public ClassInfo declaringClass();
037:
038: /**
039: * Returns the index into the constant pool of the name of the method.
040: */
041: public int nameIndex();
042:
043: /**
044: * Returns the index into the constant pool of the type of the method.
045: */
046: public int typeIndex();
047:
048: /**
049: * Sets the index into the constant pool of the name of the method.
050: */
051: public void setNameIndex(int index);
052:
053: /**
054: * Set the index into the constant pool of the type of the method.
055: *
056: * @param index
057: * The index into the constant pool of the type of the method.
058: */
059: public void setTypeIndex(int index);
060:
061: /**
062: * Set the modifiers of the method. The values correspond to the constants
063: * in the Modifiers class.
064: *
065: * @param modifiers
066: * A bit vector of modifier flags for the method.
067: * @see Modifiers
068: */
069: public void setModifiers(int modifiers);
070:
071: /**
072: * Get the modifiers of the method. The values correspond to the constants
073: * in the Modifiers class.
074: *
075: * @return A bit vector of modifier flags for the method.
076: * @see Modifiers
077: */
078: public int modifiers();
079:
080: /**
081: * Get the indices into the constant pool of the types of the exceptions
082: * thrown by the method.
083: *
084: * @return The indices into the constant pool of the types of the exceptions
085: * thrown by the method.
086: */
087: public int[] exceptionTypes();
088:
089: /**
090: * Get the maximum height of the operand stack.
091: *
092: * @return The maximum height of the operand stack.
093: */
094: public int maxStack();
095:
096: /**
097: * Set the maximum height of the operand stack.
098: *
099: * @param maxStack
100: * The maximum height of the operand stack.
101: */
102: public void setMaxStack(int maxStack);
103:
104: /**
105: * Get the maximum number of locals used in the method.
106: *
107: * @return The maximum number of locals used in the method.
108: */
109: public int maxLocals();
110:
111: /**
112: * Set the maximum number of locals used in the method.
113: *
114: * @param maxLocals
115: * The maximum number of locals used in the method.
116: */
117: public void setMaxLocals(int maxLocals);
118:
119: /**
120: * Get the byte code array of the method.
121: *
122: * @return The byte code array of the method.
123: */
124: public byte[] code();
125:
126: /**
127: * Set the byte code array of the method.
128: *
129: * @param code
130: * The byte code array of the method.
131: */
132: public void setCode(byte[] code);
133:
134: /**
135: * Get the line number debug info of the instructions in the method.
136: *
137: * @return The line numbers of the instructions in the method. The array
138: * will be of size 0 if the method has no line number debug info.
139: */
140: public LineNumberDebugInfo[] lineNumbers();
141:
142: /**
143: * Set the line number debug info of the instructions in the method.
144: *
145: * @param lineNumbers
146: * The line numbers of the instructions in the method. The array
147: * will be of size 0 if the method has no line number debug info.
148: */
149: public void setLineNumbers(LineNumberDebugInfo[] lineNumbers);
150:
151: /**
152: * Get the local variable debug information for the method.
153: *
154: * @return The local variables in the method. The array will be of size 0 if
155: * the method has no local variable debug info.
156: */
157: public LocalDebugInfo[] locals();
158:
159: /**
160: * Set the local variables in the method.
161: *
162: * @param locals
163: * The local variables in the method.
164: */
165: public void setLocals(LocalDebugInfo[] locals);
166:
167: /**
168: * Get the exception handlers in the method.
169: *
170: * @return The exception handlers in the method.
171: */
172: public Catch[] exceptionHandlers();
173:
174: /**
175: * Set the exception handlers in the method.
176: *
177: * @param exceptions
178: * The exception handlers in the method.
179: */
180: public void setExceptionHandlers(Catch[] exceptions);
181:
182: /**
183: * Creates a clone of this <tt>MethodInfo</tt> except that its declaring
184: * class does not know about it.
185: */
186: public Object clone();
187: }
|