Milán Major

netscape-revival

1 branch
Code

sun-java/classsrc/netscape/jri/JRIEnv.java

package netscape.jri;

import netscape.jri.*;

interface JRIEnv {
    // Environments
    Class	LoadClass(byte[] buf);
    Class	FindClass(ConstCString name);
    void	Throw(Throwable obj);
    void	ThrowNew(Class clazz, ConstCString message);
    Throwable	ExceptionOccurred();
    void	ExceptionDescribe();
    void	ExceptionClear();

    // References
    jglobal	NewGlobalRef(Object obj);
    void	DisposeGlobalRef(jglobal ref);
    Object	GetGlobalRef(jglobal ref);
    void	SetGlobalRef(jglobal ref, Object value);
    boolean	IsSameObject(Object o1, Object o2);

    // Object Operations
    Object	NewObject(Class clazz, int methodID, Varargs args);
    Class	GetObjectClass(Object obj);
    boolean	IsInstanceOf(Object obj, Class clazz);

    // Calling Public Dynamic Methods of Objects
    int		GetMethodID(Class clazz, ConstCString name, ConstCString sig);

    Object	CallMethod(Object obj, int methodID, Varargs args);
    boolean	CallMethodBoolean(Object obj, int methodID, Varargs args);
    byte	CallMethodByte(Object obj, int methodID, Varargs args);
    char	CallMethodChar(Object obj, int methodID, Varargs args);
    short	CallMethodShort(Object obj, int methodID, Varargs args);
    int		CallMethodInt(Object obj, int methodID, Varargs args);
    long	CallMethodLong(Object obj, int methodID, Varargs args);
    float	CallMethodFloat(Object obj, int methodID, Varargs args);
    double	CallMethodDouble(Object obj, int methodID, Varargs args);

    // Accessing Public Fields of Objects
    int		GetFieldID(Class clazz, ConstCString name, ConstCString sig);

    Object	GetField(Object obj, int fieldID);
    boolean	GetFieldBoolean(Object obj, int fieldID);
    byte	GetFieldByte(Object obj, int fieldID);
    char	GetFieldChar(Object obj, int fieldID);
    short	GetFieldShort(Object obj, int fieldID);
    int		GetFieldInt(Object obj, int fieldID);
    long	GetFieldLong(Object obj, int fieldID);
    float	GetFieldFloat(Object obj, int fieldID);
    double	GetFieldDouble(Object obj, int fieldID);

    void	SetField(Object obj, int fieldID, Object value);
    void	SetFieldBoolean(Object obj, int fieldID, boolean value);
    void	SetFieldByte(Object obj, int fieldID, byte value);
    void	SetFieldChar(Object obj, int fieldID, char value);
    void	SetFieldShort(Object obj, int fieldID, short value);
    void	SetFieldInt(Object obj, int fieldID, int value);
    void	SetFieldLong(Object obj, int fieldID, long value);
    void	SetFieldFloat(Object obj, int fieldID, float value);
    void	SetFieldDouble(Object obj, int fieldID, double value);

    // Class Operations
    boolean	IsSubclassOf(Class clazz, Class superclass);

    // Calling Public Dynamic Methods of Objects
    int		GetStaticMethodID(Class clazz, ConstCString name, ConstCString sig);

    Object	CallStaticMethod(Class clazz, int methodID, Varargs args);
    boolean	CallStaticMethodBoolean(Class clazz, int methodID, Varargs args);
    byte	CallStaticMethodByte(Class clazz, int methodID, Varargs args);
    char	CallStaticMethodChar(Class clazz, int methodID, Varargs args);
    short	CallStaticMethodShort(Class clazz, int methodID, Varargs args);
    int		CallStaticMethodInt(Class clazz, int methodID, Varargs args);
    long	CallStaticMethodLong(Class clazz, int methodID, Varargs args);
    float	CallStaticMethodFloat(Class clazz, int methodID, Varargs args);
    double	CallStaticMethodDouble(Class clazz, int methodID, Varargs args);

    // Accessing Public Static Fields of Classes
    int		GetStaticFieldID(Class clazz, ConstCString name, ConstCString sig);

    Object	GetStaticField(Class clazz, int fieldID);
    boolean	GetStaticFieldBoolean(Class clazz, int fieldID);
    byte	GetStaticFieldByte(Class clazz, int fieldID);
    char	GetStaticFieldChar(Class clazz, int fieldID);
    short	GetStaticFieldShort(Class clazz, int fieldID);
    int		GetStaticFieldInt(Class clazz, int fieldID);
    long	GetStaticFieldLong(Class clazz, int fieldID);
    float	GetStaticFieldFloat(Class clazz, int fieldID);
    double	GetStaticFieldDouble(Class clazz, int fieldID);

    void	SetStaticField(Class clazz, int fieldID, Object value);
    void	SetStaticFieldBoolean(Class clazz, int fieldID, boolean value);
    void	SetStaticFieldByte(Class clazz, int fieldID, byte value);
    void	SetStaticFieldChar(Class clazz, int fieldID, char value);
    void	SetStaticFieldShort(Class clazz, int fieldID, short value);
    void	SetStaticFieldInt(Class clazz, int fieldID, int value);
    void	SetStaticFieldLong(Class clazz, int fieldID, long value);
    void	SetStaticFieldFloat(Class clazz, int fieldID, float value);
    void	SetStaticFieldDouble(Class clazz, int fieldID, double value);

    // String Operations
    // Unicode Interface
    String	NewString(const_jchar_star unicode, int length);
    int		GetStringLength(String string);
    const_jchar_star	GetStringChars(String string);
    // UTF Interface
    String	NewStringUTF(const_jbyte_star utf, int length);
    int		GetStringUTFLength(String string);
    const_jbyte_star	GetStringUTFChars(String string);
    
    // Scalar Array Operations
    Object	NewScalarArray(int length, ConstCString elementSig,
			       const_jbyte_star initialElement);
    int		GetScalarArrayLength(Object array);
    jbyte_star	GetScalarArrayElements(Object array);

    // Object Array Operations
    Object	NewObjectArray(int length, Class elementClass, 
			       Object initialElement);
    int		GetObjectArrayLength(Object array);
    Object	GetObjectArrayElement(Object array, int index);
    void	SetObjectArrayElement(Object array, int index, Object value);

    // Native Bootstrap
    void	RegisterNatives(Class clazz, 
				null_terminated_cstring_array nameAndSigArray,
				null_terminated_pointer_array nativeProcArray);
    void	UnregisterNatives(Class clazz);
}

class jglobal extends CType {
    public static final String ctype = "jglobal";
}

class const_jchar_star extends CType {
    public static final String ctype = "const jchar*";
}

class const_jbyte_star extends CType {
    public static final String ctype = "const jbyte*";
}

class jbyte_star extends CType {
    public static final String ctype = "jbyte*";
}

class null_terminated_cstring_array extends CType {
    public static final String ctype = "char**";
}

class null_terminated_pointer_array extends CType {
    public static final String ctype = "void**";
}