You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pylucene-commits@lucene.apache.org by va...@apache.org on 2017/03/19 23:12:52 UTC
svn commit: r1787671 - in /lucene/pylucene/trunk/jcc: CHANGES
_jcc3/java/lang/String.cpp jcc3/sources/JCCEnv.cpp jcc3/sources/JCCEnv.h
jcc3/sources/jcc.cpp
Author: vajda
Date: Sun Mar 19 23:12:52 2017
New Revision: 1787671
URL: http://svn.apache.org/viewvc?rev=1787671&view=rev
Log:
removed superfluous string functions
Modified:
lucene/pylucene/trunk/jcc/CHANGES
lucene/pylucene/trunk/jcc/_jcc3/java/lang/String.cpp
lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.cpp
lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.h
lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp
Modified: lucene/pylucene/trunk/jcc/CHANGES
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/CHANGES?rev=1787671&r1=1787670&r2=1787671&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/CHANGES (original)
+++ lucene/pylucene/trunk/jcc/CHANGES Sun Mar 19 23:12:52 2017
@@ -1,6 +1,7 @@
Version 2.23 -> 3.0
-------------------
- added support for Python 3.6 (with R�diger Meier and Thomas Koch)
+ - python3: fixed bugs with surrogate pairs (now supported for the first time)
-
Version 2.22 -> 2.23
Modified: lucene/pylucene/trunk/jcc/_jcc3/java/lang/String.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/_jcc3/java/lang/String.cpp?rev=1787671&r1=1787670&r2=1787671&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/_jcc3/java/lang/String.cpp (original)
+++ lucene/pylucene/trunk/jcc/_jcc3/java/lang/String.cpp Sun Mar 19 23:12:52 2017
@@ -99,7 +99,8 @@ namespace java {
case 1:
if (!PyArg_ParseTuple(args, "s", &bytes))
return -1;
- INT_CALL(self->object = String(env->fromUTF8(bytes)));
+ INT_CALL(self->object = String(
+ env->get_vm_env()->NewStringUTF(bytes)));
break;
default:
PyErr_SetString(PyExc_ValueError, "invalid args");
Modified: lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.cpp?rev=1787671&r1=1787670&r2=1787671&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.cpp (original)
+++ lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.cpp Sun Mar 19 23:12:52 2017
@@ -951,15 +951,6 @@ char *JCCEnv::getClassPath()
return classpath;
}
-jstring JCCEnv::fromUTF8(const char *bytes) const
-{
- jstring str = get_vm_env()->NewStringUTF(bytes);
-
- reportException();
-
- return str;
-}
-
jstring JCCEnv::fromUTF32(const uint32_t *chars, jsize len) const
{
std::vector<jchar> jchars;
@@ -984,56 +975,6 @@ jstring JCCEnv::fromUTF32(const uint32_t
return str;
}
-char *JCCEnv::toUTF8(jstring str) const
-{
- JNIEnv *vm_env = get_vm_env();
- int len = vm_env->GetStringUTFLength(str);
- char *bytes = (char *) malloc(len + 1);
- jboolean isCopy = 0;
- const char *utf = vm_env->GetStringUTFChars(str, &isCopy);
-
- if (!bytes)
- return NULL;
-
- memcpy(bytes, utf, len);
- bytes[len] = '\0';
-
- vm_env->ReleaseStringUTFChars(str, utf);
-
- return bytes;
-}
-
-char *JCCEnv::toString(jobject obj) const
-{
- try {
- return obj
- ? toUTF8((jstring) callObjectMethod(obj, _mids[mid_obj_toString]))
- : NULL;
- } catch (int e) {
- switch (e) {
- case _EXC_PYTHON:
- return NULL;
- case _EXC_JAVA: {
- JNIEnv *vm_env = get_vm_env();
-
- vm_env->ExceptionDescribe();
- vm_env->ExceptionClear();
-
- return NULL;
- }
- default:
- throw;
- }
- }
-}
-
-char *JCCEnv::getClassName(jobject obj) const
-{
- return obj
- ? toString(callObjectMethod(obj, _mids[mid_obj_getClass]))
- : NULL;
-}
-
#ifdef PYTHON
jstring JCCEnv::fromPyString(PyObject *object) const
@@ -1064,7 +1005,8 @@ jstring JCCEnv::fromPyString(PyObject *o
}
case PyUnicode_1BYTE_KIND:
- return fromUTF8((const char *) PyUnicode_1BYTE_DATA(object));
+ return get_vm_env()->NewStringUTF(
+ (const char *) PyUnicode_1BYTE_DATA(object));
case PyUnicode_2BYTE_KIND: {
Py_ssize_t len = PyUnicode_GET_LENGTH(object);
@@ -1082,7 +1024,7 @@ jstring JCCEnv::fromPyString(PyObject *o
}
}
else if (PyBytes_Check(object))
- return fromUTF8(PyBytes_AS_STRING(object));
+ return get_vm_env()->NewStringUTF(PyBytes_AS_STRING(object));
PyObject *tuple = Py_BuildValue("(sO)", "expected a string", object);
@@ -1160,13 +1102,13 @@ PyObject *JCCEnv::toPyUnicode(jobject ob
{
try {
if (obj)
- return fromJString(
- (jstring) callObjectMethod(obj, _mids[mid_obj_toString]), 0);
+ return fromJString((jstring) callObjectMethod(
+ obj, _mids[mid_obj_toString]), 0);
Py_RETURN_NONE;
} catch (int e) {
switch (e) {
case _EXC_PYTHON:
- return NULL;
+ return NULL;
case _EXC_JAVA: {
JNIEnv *vm_env = get_vm_env();
@@ -1181,6 +1123,13 @@ PyObject *JCCEnv::toPyUnicode(jobject ob
}
}
+PyObject *JCCEnv::getClassName(jobject obj) const
+{
+ if (obj)
+ return toPyUnicode(callObjectMethod(obj, _mids[mid_obj_getClass]));
+ Py_RETURN_NONE;
+}
+
/* may be called from finalizer thread which has no vm_env thread local */
void JCCEnv::finalizeObject(JNIEnv *jenv, PyObject *obj)
{
Modified: lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.h
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.h?rev=1787671&r1=1787670&r2=1787671&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.h (original)
+++ lucene/pylucene/trunk/jcc/jcc3/sources/JCCEnv.h Sun Mar 19 23:12:52 2017
@@ -280,17 +280,14 @@ public:
void setClassPath(const char *classPath);
char *getClassPath();
- jstring fromUTF8(const char *bytes) const;
jstring fromUTF32(const uint32_t *chars, jsize len) const;
- char *toUTF8(jstring str) const;
- char *toString(jobject obj) const;
- char *getClassName(jobject obj) const;
#ifdef PYTHON
jclass getPythonExceptionClass() const;
bool restorePythonException(jthrowable throwable) const;
jstring fromPyString(PyObject *object) const;
PyObject *fromJString(jstring js, int delete_local_ref) const;
PyObject *toPyUnicode(jobject obj) const;
+ PyObject *getClassName(jobject obj) const;
void finalizeObject(JNIEnv *jenv, PyObject *obj);
#endif
Modified: lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp
URL: http://svn.apache.org/viewvc/lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp?rev=1787671&r1=1787670&r2=1787671&view=diff
==============================================================================
--- lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp (original)
+++ lucene/pylucene/trunk/jcc/jcc3/sources/jcc.cpp Sun Mar 19 23:12:52 2017
@@ -227,8 +227,7 @@ static PyObject *t_jccenv__dumpRefs(PyOb
iter++) {
if (classes) // return dict of { class name: instance count }
{
- char *name = env->getClassName(iter->second.global);
- PyObject *key = PyUnicode_FromString(name);
+ PyObject *key = env->getClassName(iter->second.global);
PyObject *value = PyDict_GetItem(result, key);
if (value == NULL)
@@ -239,8 +238,6 @@ static PyObject *t_jccenv__dumpRefs(PyOb
PyDict_SetItem(result, key, value);
Py_DECREF(key);
Py_DECREF(value);
-
- delete name;
}
else if (values) // return list of (value string, ref count)
{