// Copyright (c) Corporation for National Research Initiatives
package org.python.core;
/**
* Common methods for all generated proxy classes.
*
* Proxy classes are created whenever a python class inherits from a java class. Instances of such a
* python class consists of two objects:
* <ul>
* <li>An instance of the proxy class. The _getPyInstance() will return a reference to the
* PyInstance.
* <li>An instance of PyInstance. The PyInstance.javaProxy contains a reference to the proxy class
* instance.
* </ul>
*
* All proxy classes implement this interface.
*/
// This interface should be applicable to ANY class
// Choose names that are extremely unlikely to have conflicts
public interface PyProxy {
/**
* Associate a PyObject with this proxy instance. This is done during construction and
* initialization of the proxy instance.
*/
void _setPyInstance(PyObject proxy);
/**
* Return the associated PyObject.
*/
PyObject _getPyInstance();
/**
* Associate an system state with this proxy instance. This is done during construction and
* initialization of the proxy instance.
*/
abstract public void _setPySystemState(PySystemState ss);
/**
* Return the associated system state.
*/
PySystemState _getPySystemState();
/**
* Initialize the proxy instance. If the proxy is not initialized, this will call the python
* constructor with <code>args</code>.
* <p>
* In some situations is it necessary to call the __initProxy__ method from the java superclass
* ctor before the ctor makes call to methods that is overridden in python.
* <p>
* In most situation the __initProxy__ is called automatically by the jython runtime.
*/
void __initProxy__(Object[] args);
}