comparison src/if_python3.c @ 3910:2a7b2943be22 v7.3.711

updated for version 7.3.711 Problem: vim.current.buffer is not available. (lilydjwg) Solution: Use py3_PyUnicode_AsUTF8 instead of py3_PyUnicode_AsUTF8String. (Ken Takata)
author Bram Moolenaar <bram@vim.org>
date Tue, 23 Oct 2012 05:17:37 +0200
parents b5b892472ecb
children eb268db98f32
comparison
equal deleted inserted replaced
3909:eb8c38e45aee 3910:2a7b2943be22
174 # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented) 174 # define _PyObject_NextNotImplemented (*py3__PyObject_NextNotImplemented)
175 # define PyModule_AddObject py3_PyModule_AddObject 175 # define PyModule_AddObject py3_PyModule_AddObject
176 # define PyImport_AppendInittab py3_PyImport_AppendInittab 176 # define PyImport_AppendInittab py3_PyImport_AppendInittab
177 # if PY_VERSION_HEX >= 0x030300f0 177 # if PY_VERSION_HEX >= 0x030300f0
178 # undef _PyUnicode_AsString 178 # undef _PyUnicode_AsString
179 # define _PyUnicode_AsString py3_PyUnicode_AsUTF8String 179 # define _PyUnicode_AsString py3_PyUnicode_AsUTF8
180 # else 180 # else
181 # define _PyUnicode_AsString py3__PyUnicode_AsString 181 # define _PyUnicode_AsString py3__PyUnicode_AsString
182 # endif 182 # endif
183 # undef PyUnicode_AsEncodedString 183 # undef PyUnicode_AsEncodedString
184 # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString 184 # define PyUnicode_AsEncodedString py3_PyUnicode_AsEncodedString
284 static PyObject* py3__Py_NoneStruct; 284 static PyObject* py3__Py_NoneStruct;
285 static PyObject* py3__Py_FalseStruct; 285 static PyObject* py3__Py_FalseStruct;
286 static PyObject* py3__Py_TrueStruct; 286 static PyObject* py3__Py_TrueStruct;
287 static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o); 287 static int (*py3_PyModule_AddObject)(PyObject *m, const char *name, PyObject *o);
288 static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void)); 288 static int (*py3_PyImport_AppendInittab)(const char *name, PyObject* (*initfunc)(void));
289 #if PY_VERSION_HEX >= 0x030300f0 289 # if PY_VERSION_HEX >= 0x030300f0
290 static char* (*py3_PyUnicode_AsUTF8String)(PyObject *unicode); 290 static char* (*py3_PyUnicode_AsUTF8)(PyObject *unicode);
291 #else 291 # else
292 static char* (*py3__PyUnicode_AsString)(PyObject *unicode); 292 static char* (*py3__PyUnicode_AsString)(PyObject *unicode);
293 #endif 293 # endif
294 static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors); 294 static PyObject* (*py3_PyUnicode_AsEncodedString)(PyObject *unicode, const char* encoding, const char* errors);
295 static char* (*py3_PyBytes_AsString)(PyObject *bytes); 295 static char* (*py3_PyBytes_AsString)(PyObject *bytes);
296 static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length); 296 static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, int *length);
297 static PyObject* (*py3_PyBytes_FromString)(char *str); 297 static PyObject* (*py3_PyBytes_FromString)(char *str);
298 static PyObject* (*py3_PyFloat_FromDouble)(double num); 298 static PyObject* (*py3_PyFloat_FromDouble)(double num);
346 } py3_funcname_table[] = 346 } py3_funcname_table[] =
347 { 347 {
348 {"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv}, 348 {"PySys_SetArgv", (PYTHON_PROC*)&py3_PySys_SetArgv},
349 {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome}, 349 {"Py_SetPythonHome", (PYTHON_PROC*)&py3_Py_SetPythonHome},
350 {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize}, 350 {"Py_Initialize", (PYTHON_PROC*)&py3_Py_Initialize},
351 #ifndef PY_SSIZE_T_CLEAN 351 # ifndef PY_SSIZE_T_CLEAN
352 {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, 352 {"PyArg_ParseTuple", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
353 {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue}, 353 {"Py_BuildValue", (PYTHON_PROC*)&py3_Py_BuildValue},
354 #else 354 # else
355 {"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&py3_PyArg_ParseTuple}, 355 {"_PyArg_ParseTuple_SizeT", (PYTHON_PROC*)&py3_PyArg_ParseTuple},
356 {"_Py_BuildValue_SizeT", (PYTHON_PROC*)&py3_Py_BuildValue}, 356 {"_Py_BuildValue_SizeT", (PYTHON_PROC*)&py3_Py_BuildValue},
357 #endif 357 # endif
358 {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free}, 358 {"PyMem_Free", (PYTHON_PROC*)&py3_PyMem_Free},
359 {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc}, 359 {"PyMem_Malloc", (PYTHON_PROC*)&py3_PyMem_Malloc},
360 {"PyList_New", (PYTHON_PROC*)&py3_PyList_New}, 360 {"PyList_New", (PYTHON_PROC*)&py3_PyList_New},
361 {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure}, 361 {"PyGILState_Ensure", (PYTHON_PROC*)&py3_PyGILState_Ensure},
362 {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release}, 362 {"PyGILState_Release", (PYTHON_PROC*)&py3_PyGILState_Release},
404 {"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct}, 404 {"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct},
405 {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear}, 405 {"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
406 {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init}, 406 {"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init},
407 {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject}, 407 {"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject},
408 {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab}, 408 {"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
409 #if PY_VERSION_HEX >= 0x030300f0 409 # if PY_VERSION_HEX >= 0x030300f0
410 {"PyUnicode_AsUTF8String", (PYTHON_PROC*)&py3_PyUnicode_AsUTF8String}, 410 {"PyUnicode_AsUTF8", (PYTHON_PROC*)&py3_PyUnicode_AsUTF8},
411 #else 411 # else
412 {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString}, 412 {"_PyUnicode_AsString", (PYTHON_PROC*)&py3__PyUnicode_AsString},
413 #endif 413 # endif
414 {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString}, 414 {"PyBytes_AsString", (PYTHON_PROC*)&py3_PyBytes_AsString},
415 {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, 415 {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize},
416 {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, 416 {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString},
417 {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble}, 417 {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble},
418 {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble}, 418 {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble},
501 } 501 }
502 } 502 }
503 503
504 /* Load unicode functions separately as only the ucs2 or the ucs4 functions 504 /* Load unicode functions separately as only the ucs2 or the ucs4 functions
505 * will be present in the library. */ 505 * will be present in the library. */
506 #if PY_VERSION_HEX >= 0x030300f0 506 # if PY_VERSION_HEX >= 0x030300f0
507 ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString"); 507 ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString");
508 ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode"); 508 ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode");
509 ucs_as_encoded_string = symbol_from_dll(hinstPy3, 509 ucs_as_encoded_string = symbol_from_dll(hinstPy3,
510 "PyUnicode_AsEncodedString"); 510 "PyUnicode_AsEncodedString");
511 #else 511 # else
512 ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString"); 512 ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
513 ucs_decode = symbol_from_dll(hinstPy3, 513 ucs_decode = symbol_from_dll(hinstPy3,
514 "PyUnicodeUCS2_Decode"); 514 "PyUnicodeUCS2_Decode");
515 ucs_as_encoded_string = symbol_from_dll(hinstPy3, 515 ucs_as_encoded_string = symbol_from_dll(hinstPy3,
516 "PyUnicodeUCS2_AsEncodedString"); 516 "PyUnicodeUCS2_AsEncodedString");
521 ucs_decode = symbol_from_dll(hinstPy3, 521 ucs_decode = symbol_from_dll(hinstPy3,
522 "PyUnicodeUCS4_Decode"); 522 "PyUnicodeUCS4_Decode");
523 ucs_as_encoded_string = symbol_from_dll(hinstPy3, 523 ucs_as_encoded_string = symbol_from_dll(hinstPy3,
524 "PyUnicodeUCS4_AsEncodedString"); 524 "PyUnicodeUCS4_AsEncodedString");
525 } 525 }
526 #endif 526 # endif
527 if (ucs_from_string && ucs_decode && ucs_as_encoded_string) 527 if (ucs_from_string && ucs_decode && ucs_as_encoded_string)
528 { 528 {
529 py3_PyUnicode_FromString = ucs_from_string; 529 py3_PyUnicode_FromString = ucs_from_string;
530 py3_PyUnicode_Decode = ucs_decode; 530 py3_PyUnicode_Decode = ucs_decode;
531 py3_PyUnicode_AsEncodedString = ucs_as_encoded_string; 531 py3_PyUnicode_AsEncodedString = ucs_as_encoded_string;