org.python.compiler
Class ProxyMaker
- java.lang.Object
-
- org.python.compiler.ProxyCodeHelpers
-
- org.python.compiler.ProxyMaker
-
- All Implemented Interfaces:
- org.objectweb.asm.Opcodes, ClassConstants
- Direct Known Subclasses:
- AdapterMaker, JavaMaker
public class ProxyMaker extends ProxyCodeHelpers implements ClassConstants, org.objectweb.asm.Opcodes
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.python.compiler.ProxyCodeHelpers
ProxyCodeHelpers.AnnotationDescr, ProxyCodeHelpers.ConstructorDescr, ProxyCodeHelpers.MethodDescr
-
-
Field Summary
Fields Modifier and Type Field and Description ClassFileclassfilejava.lang.StringmyClassThe name of the class to build.-
Fields inherited from class org.python.compiler.ProxyCodeHelpers
tBoolean, tByte, tCharacter, tDouble, tFloat, tInteger, tLong, tNone, tOther, tShort, tVoid, types
-
Fields inherited from interface org.python.compiler.ClassConstants
$clss, $obj, $objArr, $pyCode, $pyComplex, $pyExc, $pyFloat, $pyFrame, $pyFuncTbl, $pyInteger, $pyLong, $pyObj, $pyObjArr, $pyProxy, $pyRunnable, $pyStr, $pyUnicode, $str, $strArr, $threadState, $throwable
-
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V9
-
-
Constructor Summary
Constructors Constructor and Description ProxyMaker(java.lang.String superclassName, java.lang.Class<?> superclass)Deprecated.ProxyMaker(java.lang.String proxyClassName, java.lang.Class<?> superclass, java.lang.Class<?>... interfaces)Creates a proxy class maker that produces classes namedproxyClassNamethat extendssuperclassand implements the interfaces ininterfaces.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description voidaddClassDictInit()voidaddConstructor(java.lang.String name, java.lang.Class<?>[] parameters, java.lang.Class<?> ret, java.lang.String sig, int access)voidaddConstructorMethodCode(java.lang.String pyName, java.lang.Class<?>[] parameters, java.lang.Class<?>[] exceptions, int access, java.lang.Class<?> declaringClass, Code code)A constructor that is also a method (!)voidaddConstructors(java.lang.Class<?> c)voidaddMethod(java.lang.reflect.Method method, int access)voidaddMethod(java.lang.String name, java.lang.Class<?> ret, java.lang.Class<?>[] parameters, java.lang.Class<?>[] exceptions, int access, java.lang.Class<?> declaringClass)Adds a method of the given name to the class being implemented.voidaddMethod(java.lang.String name, java.lang.String pyName, java.lang.Class<?> ret, java.lang.Class<?>[] parameters, java.lang.Class<?>[] exceptions, int access, java.lang.Class<?> declaringClass, ProxyCodeHelpers.AnnotationDescr[] methodAnnotations, ProxyCodeHelpers.AnnotationDescr[][] parameterAnnotations)Generates and adds a proxy method to the proxy classvoidaddProxy()voidaddSuperMethod(java.lang.reflect.Method method, int access)voidaddSuperMethod(java.lang.String methodName, java.lang.String superName, java.lang.String declClass, java.lang.Class<?>[] parameters, java.lang.Class<?> ret, java.lang.String sig, int access)voidbuild()voidbuild(java.io.OutputStream out)Builds this proxy and writes its bytecode toout.voidcallMethod(Code code, java.lang.String name, java.lang.Class<?>[] parameters, java.lang.Class<?> ret, java.lang.Class<?>[] exceptions)voidcallSuper(Code code, java.lang.String name, java.lang.String superclass, java.lang.Class<?>[] parameters, java.lang.Class<?> ret, boolean doReturn)voiddoConstants()voiddoJavaCall(Code code, java.lang.String name, java.lang.String type, java.lang.String jcallName)voidgetArgs(Code code, java.lang.Class<?>[] parameters)-
Methods inherited from class org.python.compiler.ProxyCodeHelpers
doNullReturn, doReturn, fillTypes, findPython, getType, makeSig, makeSig, mapClass, mapClasses, mapExceptions, mapType, notImplementedAbstractMethod
-
-
-
-
Field Detail
-
classfile
public ClassFile classfile
-
myClass
public java.lang.String myClass
The name of the class to build.
-
-
Constructor Detail
-
ProxyMaker
@Deprecated public ProxyMaker(java.lang.String superclassName, java.lang.Class<?> superclass)Deprecated. - UseProxyMaker(String, Class, Class[])Creates a proxy class maker that produces classes namedorg.python.proxies.(superclassName)withsuperclassas an implemented interface or extended class, depending on the its type.
-
ProxyMaker
public ProxyMaker(java.lang.String proxyClassName, java.lang.Class<?> superclass, java.lang.Class<?>... interfaces)Creates a proxy class maker that produces classes namedproxyClassNamethat extendssuperclassand implements the interfaces ininterfaces.
-
-
Method Detail
-
doConstants
public void doConstants() throws java.lang.Exception- Throws:
java.lang.Exception
-
callSuper
public void callSuper(Code code, java.lang.String name, java.lang.String superclass, java.lang.Class<?>[] parameters, java.lang.Class<?> ret, boolean doReturn) throws java.lang.Exception
- Throws:
java.lang.Exception
-
doJavaCall
public void doJavaCall(Code code, java.lang.String name, java.lang.String type, java.lang.String jcallName) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getArgs
public void getArgs(Code code, java.lang.Class<?>[] parameters) throws java.lang.Exception
- Throws:
java.lang.Exception
-
callMethod
public void callMethod(Code code, java.lang.String name, java.lang.Class<?>[] parameters, java.lang.Class<?> ret, java.lang.Class<?>[] exceptions) throws java.lang.Exception
- Throws:
java.lang.Exception
-
addMethod
public void addMethod(java.lang.reflect.Method method, int access) throws java.lang.Exception- Throws:
java.lang.Exception
-
addMethod
public void addMethod(java.lang.String name, java.lang.Class<?> ret, java.lang.Class<?>[] parameters, java.lang.Class<?>[] exceptions, int access, java.lang.Class<?> declaringClass) throws java.lang.ExceptionAdds a method of the given name to the class being implemented. IfdeclaringClassis null, the generated method will expect to find an object of the method's name in the Python object and call it. If it isn't null, if an object is found in the Python object, it'll be called. Otherwise the superclass will be called. No checking is done to guarantee that the superclass has a method with the same signature.- Throws:
java.lang.Exception
-
addMethod
public void addMethod(java.lang.String name, java.lang.String pyName, java.lang.Class<?> ret, java.lang.Class<?>[] parameters, java.lang.Class<?>[] exceptions, int access, java.lang.Class<?> declaringClass, ProxyCodeHelpers.AnnotationDescr[] methodAnnotations, ProxyCodeHelpers.AnnotationDescr[][] parameterAnnotations) throws java.lang.ExceptionGenerates and adds a proxy method to the proxy class- Parameters:
name- of the java methodpyName- name of the python method to which the java method proxies (useful for clamped objects)ret- return typeparameters- parameter typesexceptions- throwable exception typesaccess-declaringClass-methodAnnotations- method annotationsparameterAnnotations- parameter annotations- Throws:
java.lang.Exception
-
addConstructorMethodCode
public void addConstructorMethodCode(java.lang.String pyName, java.lang.Class<?>[] parameters, java.lang.Class<?>[] exceptions, int access, java.lang.Class<?> declaringClass, Code code) throws java.lang.ExceptionA constructor that is also a method (!)- Throws:
java.lang.Exception
-
addConstructor
public void addConstructor(java.lang.String name, java.lang.Class<?>[] parameters, java.lang.Class<?> ret, java.lang.String sig, int access) throws java.lang.Exception- Throws:
java.lang.Exception
-
addConstructors
public void addConstructors(java.lang.Class<?> c) throws java.lang.Exception- Throws:
java.lang.Exception
-
addSuperMethod
public void addSuperMethod(java.lang.reflect.Method method, int access) throws java.lang.Exception- Throws:
java.lang.Exception
-
addSuperMethod
public void addSuperMethod(java.lang.String methodName, java.lang.String superName, java.lang.String declClass, java.lang.Class<?>[] parameters, java.lang.Class<?> ret, java.lang.String sig, int access) throws java.lang.Exception- Throws:
java.lang.Exception
-
addProxy
public void addProxy() throws java.lang.Exception- Throws:
java.lang.Exception
-
addClassDictInit
public void addClassDictInit() throws java.lang.Exception- Throws:
java.lang.Exception
-
build
public void build(java.io.OutputStream out) throws java.lang.ExceptionBuilds this proxy and writes its bytecode toout.- Throws:
java.lang.Exception
-
build
public void build() throws java.lang.Exception- Throws:
java.lang.Exception
-
-
DMelt 3.0 © DataMelt by jWork.ORG