| /******************************************************************************* |
| * Copyright (c) 2000, 2004 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jdt.internal.eval; |
| |
| import org.eclipse.jdt.core.compiler.CharOperation; |
| import org.eclipse.jdt.internal.compiler.env.IBinaryField; |
| import org.eclipse.jdt.internal.compiler.env.IBinaryMethod; |
| import org.eclipse.jdt.internal.compiler.env.IBinaryNestedType; |
| import org.eclipse.jdt.internal.compiler.env.IBinaryType; |
| import org.eclipse.jdt.internal.compiler.env.IConstants; |
| import org.eclipse.jdt.internal.compiler.env.IGenericType; |
| import org.eclipse.jdt.internal.core.util.Util; |
| |
| /** |
| * The skeleton of the class 'org.eclipse.jdt.internal.eval.target.CodeSnippet' |
| * used at compile time. Note that the method run() is declared to |
| * throw Throwable so that the user can write a code snipet that |
| * throws checked exceptio without having to catch those. |
| */ |
| public class CodeSnippetSkeleton implements IBinaryType, EvaluationConstants { |
| IBinaryMethod[] methods = new IBinaryMethod[] { |
| new BinaryMethodSkeleton( |
| "<init>".toCharArray(), //$NON-NLS-1$ |
| "()V".toCharArray(), //$NON-NLS-1$ |
| new char[][] {}, |
| true |
| ), |
| new BinaryMethodSkeleton( |
| "run".toCharArray(), //$NON-NLS-1$ |
| "()V".toCharArray(), //$NON-NLS-1$ |
| new char[][] {"java/lang/Throwable".toCharArray()}, //$NON-NLS-1$ |
| false |
| ), |
| new BinaryMethodSkeleton( |
| "setResult".toCharArray(), //$NON-NLS-1$ |
| "(Ljava/lang/Object;Ljava/lang/Class;)V".toCharArray(), //$NON-NLS-1$ |
| new char[][] {}, |
| false |
| ) |
| }; |
| |
| public class BinaryMethodSkeleton implements IBinaryMethod { |
| char[][] exceptionTypeNames; |
| char[] methodDescriptor; |
| char[] selector; |
| boolean isConstructor; |
| |
| public BinaryMethodSkeleton(char[] selector, char[] methodDescriptor, char[][] exceptionTypeNames, boolean isConstructor) { |
| this.selector = selector; |
| this.methodDescriptor = methodDescriptor; |
| this.exceptionTypeNames = exceptionTypeNames; |
| this.isConstructor = isConstructor; |
| } |
| public char[][] getExceptionTypeNames() { |
| return this.exceptionTypeNames; |
| } |
| public char[] getMethodDescriptor() { |
| return this.methodDescriptor; |
| } |
| public int getModifiers() { |
| return IConstants.AccPublic; |
| } |
| public char[] getSelector() { |
| return this.selector; |
| } |
| public boolean isClinit() { |
| return false; |
| } |
| public boolean isConstructor() { |
| return this.isConstructor; |
| } |
| public char[][] getArgumentNames() { |
| return null; |
| } |
| public char[] getGenericSignature() { |
| return null; |
| } |
| public long getTagBits() { |
| return 0; |
| } |
| } |
| |
| /** |
| * CodeSnippetSkeleton constructor comment. |
| */ |
| public CodeSnippetSkeleton() { |
| super(); |
| } |
| public char[] getEnclosingTypeName() { |
| return null; |
| } |
| public IBinaryField[] getFields() { |
| return null; |
| } |
| /** |
| * @see org.eclipse.jdt.internal.compiler.env.IDependent#getFileName() |
| */ |
| public char[] getFileName() { |
| return CharOperation.concat(CODE_SNIPPET_NAME, Util.defaultJavaExtension().toCharArray()); |
| } |
| public char[] getGenericSignature() { |
| return null; |
| } |
| public char[][] getInterfaceNames() { |
| return null; |
| } |
| public IBinaryNestedType[] getMemberTypes() { |
| return null; |
| } |
| public IBinaryMethod[] getMethods() { |
| return this.methods; |
| } |
| public int getModifiers() { |
| return IConstants.AccPublic; |
| } |
| public char[] getName() { |
| return CODE_SNIPPET_NAME; |
| } |
| public char[] getSuperclassName() { |
| return null; |
| } |
| public boolean isAnonymous() { |
| return false; |
| } |
| public boolean isBinaryType() { |
| return true; |
| } |
| /** |
| * @see org.eclipse.jdt.internal.compiler.env.IGenericType#getKind() |
| */ |
| public int getKind() { |
| return IGenericType.CLASS_DECL; |
| } |
| public boolean isLocal() { |
| return false; |
| } |
| public boolean isMember() { |
| return false; |
| } |
| public char[] sourceFileName() { |
| return null; |
| } |
| public long getTagBits() { |
| return 0; |
| } |
| } |