Пример #1
0
/* Lookup the error handling callback function registered under the
   name error. As a special case NULL can be passed, in which case
   the error handling callback for strict encoding will be returned. */
PyObject *PyCodec_LookupError(const char *name)
{
	env(NULL);
	jobject er = (*env)->CallStaticObjectMethod(env, pyCodecsClass, pyCodecsLookupError,
		(*env)->NewStringUTF(env, name));
	jstring tpName = (*env)->CallObjectMethod(env,
				(*env)->CallObjectMethod(env, er, pyObjectGetType),
				pyTypeGetName);
	//puts("tp name obtained:");
	jputsLong(__LINE__);
	cstr_from_jstring(cName, tpName);
	jputs(cName);
	return JyNI_PyObject_FromJythonPyObject(er);
//    PyObject *handler = NULL;
//
//    PyInterpreterState *interp = PyThreadState_GET()->interp;
//    if (interp->codec_search_path == NULL && _PyCodecRegistry_Init())
//        return NULL;
//
//    if (name==NULL)
//        name = "strict";
//    handler = PyDict_GetItemString(interp->codec_error_registry, (char *)name);
//    if (!handler)
//        PyErr_Format(PyExc_LookupError, "unknown error handler name '%.400s'", name);
//    else
//        Py_INCREF(handler);
//    return handler;
}
Пример #2
0
PyObject* PyCode_Get_co_name(PyObject* code)
{
	env(NULL);
	jobject jCode = JyNI_JythonPyObject_FromPyObject(code);
	jobject jstr = (*env)->GetObjectField(env, jCode, pyCode_co_name);
	cstr_from_jstring(cstr, jstr);
	return PyString_FromString(cstr);
}
Пример #3
0
/*
 * This function returns a NEW reference, i.e. caller must decref it in the end.
 */
PyObject* JySync_Init_PyClass_From_JyClass(jobject src, PyTypeObject* nonNativeSubtype)
{
	env(NULL);
	jstring nm = (*env)->GetObjectField(env, src, pyClass___name__Field);
	cstr_from_jstring(cnm, nm);
//	jputs("Sync-Class:");
//	jputs(cnm);
	return PyClass_New(
		JyNI_PyObject_FromJythonPyObject((*env)->GetObjectField(env, src, pyClass___bases__Field)),
		JyNI_PyObject_FromJythonPyObject((*env)->GetObjectField(env, src, pyClass___dict__Field)),
		PyString_FromString(cnm));
}
Пример #4
0
PyObject* PyCode_Get_co_lnotab(PyObject* code)
{
	env(NULL);
	jobject jCode = JyNI_JythonPyObject_FromPyObject(code);
	if ((*env)->IsInstanceOf(env, jCode, pyBytecodeClass))
	{
		jobject jstr = (*env)->CallStaticObjectMethod(env, JyNIClass, JyNI_pyCode_co_lnotab, jCode);
		cstr_from_jstring(cstr, jstr);
		return PyString_FromString(cstr);
	} else
	{
		return NULL;
	}
}
Пример #5
0
//PyObject* JySync_Init_PyFunction_From_JyFunction(jobject src)
void JySync_PyFunction_From_JyFunction(jobject src, PyObject* dest)
{
//Need to sync:
//func_code, func_globals, func_module, func_defaults, func_closure
	env();
	jobject jCode = (*env)->GetObjectField(env, src, pyFunction___code__Field);
	PyObject* pt = JyNI_PyObject_FromJythonPyObject(jCode);
	((PyFunctionObject*) dest)->func_code = pt;
	jobject jGlobals = (*env)->CallObjectMethod(env, src, pyFunction_getFuncGlobals);
	((PyFunctionObject*) dest)->func_globals = JyNI_PyObject_FromJythonPyObject(jGlobals);
	jobject jModule = (*env)->GetObjectField(env, src, pyFunction___module__Field);
	((PyFunctionObject*) dest)->func_module = JyNI_PyObject_FromJythonPyObject(jModule);
	jobject jDefaults = (*env)->CallObjectMethod(env, src, pyFunction_getFuncDefaults);
	((PyFunctionObject*) dest)->func_defaults = JyNI_PyObject_FromJythonPyObject(jDefaults);
	jobject jClosure = (*env)->GetObjectField(env, src, pyFunction___closure__Field);
	((PyFunctionObject*) dest)->func_closure = JyNI_PyObject_FromJythonPyObject(jClosure);
	jstring jName = (*env)->GetObjectField(env, src, pyFunction___name__Field);
	cstr_from_jstring(cName, jName);
	((PyFunctionObject*) dest)->func_name = PyString_FromString(cName);
}