/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/python_pybuffer.i
78 строк
2 KB
William S Fulton
Restore missing testing of python_pybuffer testcase
04 дек 2025, 09:42
04 дек 2025, 09:42
5ead577
Код
Авторство
О чём код?
%module python_pybuffer /* Due to removal of old Buffer Protocol in python-3.13 and the new Buffer Protocol only being added to the Stable ABI in python-3.11, this test can be run only if: * * 1. Py_LIMITED_API is not set * * or * * 2. Py_LIMITED_API is set * and * 2a. python >= 3.13 and Py_LIMITED_API >= 3.11 * or * 2a. python < 3.13 and Py_LIMITED_API < 3.13 (actually any value for Py_LIMITED_API, but any Py_LIMITED_API greater than the version of python is treated as if it is set to the python version) */ %include <pybuffer.i> %include <cstring.i> /*functions for the test case*/ %pybuffer_mutable_binary(char *buf1, int len); %pybuffer_mutable_string(char *buf2); %pybuffer_binary(const char *buf3, int len); %pybuffer_string(const char *buf4); %inline %{ void func1(char *buf1, int len) { int i; for (i=0; i<len; ++i) buf1[i] = 'a'; return; } void func2(char *buf2) { strcpy(buf2, "Hello world!"); } int func3(const char *buf3, int len) { int count = 0; int i; for(i=0; i<len; ++i) if (isalnum(buf3[i])) ++count; return count; } size_t func4(const char *buf4) { return strlen(buf4); } %} /*functions for the benchmark*/ %pybuffer_mutable_string(char *str1); %cstring_mutable(char *str2); %inline %{ void title(char *str) { int outword = 1; while(*str) { if (isalnum(*str)) { if (outword) { outword = 0; *str = toupper(*str); } } else { outword = 0; } str++; } } void title1(char *str1) { title(str1); } void title2(char *str2) { title(str2); } %}