コード例 #1
0
ファイル: pythonenv.cpp プロジェクト: originell/jpype
PyObject* JPyString::fromString(const char* str) 
{
#if PY_MAJOR_VERSION < 3
	PY_CHECK( PyObject* obj = PyString_FromString(str) );
	return obj;
#else
	PY_CHECK( PyObject* bytes = PyBytes_FromString(str) );
	PY_CHECK( PyObject* unicode = PyUnicode_FromEncodedObject(bytes, "UTF-8", "strict") );
	Py_DECREF(bytes);
	return unicode;
#endif

}
コード例 #2
0
ファイル: pythonenv.cpp プロジェクト: originell/jpype
JCharString JPyString::asJCharString(PyObject* obj) 
{	
	PyObject* torelease = NULL;
	TRACE_IN("JPyString::asJCharString");
	
	if (PyBytes_Check(obj))
	{
		PY_CHECK( obj = PyUnicode_FromObject(obj) );	
		torelease = obj;
	}

	Py_UNICODE* val = PyUnicode_AS_UNICODE(obj);	
	Py_ssize_t length = JPyObject::length(obj);
	JCharString res(length);
	for (int i = 0; val[i] != 0; i++)
	{
		res[i] = (jchar)val[i];
	}

	if (torelease != NULL)
	{
		Py_DECREF(torelease);
	}

	return res;
	TRACE_OUT;
}
コード例 #3
0
ファイル: pythonenv.cpp プロジェクト: jaheba/jpype
string JPyString::asString(PyObject* obj) 
{	
	TRACE_IN("JPyString::asString");
	PY_CHECK( string res = string(PyString_AsString(obj)) );
	return res;
	TRACE_OUT;
}
コード例 #4
0
ファイル: pythonenv.cpp プロジェクト: originell/jpype
PyObject* JPyString::fromUnicode(const jchar* str, int len) 
{
	Py_UNICODE* value = new Py_UNICODE[len+1];
	value[len] = 0;
	for (int i = 0; i < len; i++)
	{
		value[i] = (Py_UNICODE)str[i];
	}
	PY_CHECK( PyObject* obj = PyUnicode_FromUnicode(value, len) );
	delete[] value;
	return obj;
}
コード例 #5
0
ファイル: pythonenv.cpp プロジェクト: originell/jpype
string JPyString::asString(PyObject* obj) 
{	
	TRACE_IN("JPyString::asString");
#if PY_MAJOR_VERSION < 3
	PY_CHECK( string res = string(PyBytes_AsString(obj)) );
#else
	PyObject* val;
	bool needs_decref = false;
	if(PyUnicode_Check(obj)) {
		 val = PyUnicode_AsEncodedString(obj, "UTF-8", "strict");
		 needs_decref = true;
	} else {
		val = obj;
	}

	PY_CHECK( string res = string(PyBytes_AsString(val)) );

	if(needs_decref) {
		Py_DECREF(val);
	}
#endif
	return res;
	TRACE_OUT;
}
コード例 #6
0
ファイル: pythonenv.cpp プロジェクト: originell/jpype
Py_ssize_t JPyString::AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)
{	
	PY_CHECK( Py_ssize_t res = PyBytes_AsStringAndSize(obj, buffer, length) );
	return res;
}
コード例 #7
0
ファイル: pythonenv.cpp プロジェクト: jaheba/jpype
PyObject* JPyString::fromString(const char* str) 
{
	PY_CHECK( PyObject* obj = PyString_FromString(str) );
	return obj;
}