⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.10
Server IP:
157.245.101.34
Server:
Linux skvinfotech-website 5.4.0-131-generic #147-Ubuntu SMP Fri Oct 14 17:07:22 UTC 2022 x86_64
Server Software:
Apache/2.4.41 (Ubuntu)
PHP Version:
7.4.33
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
share
/
swig4.0
/
python
/
View File Name :
pybuffer.i
/* Implementing buffer protocol typemaps */ /* %pybuffer_mutable_binary(TYPEMAP, SIZE) * * Macro for functions accept mutable buffer pointer with a size. * This can be used for both input and output. For example: * * %pybuffer_mutable_binary(char *buff, int size); * void foo(char *buff, int size) { * for(int i=0; i<size; ++i) * buff[i]++; * } */ %define %pybuffer_mutable_binary(TYPEMAP, SIZE) %typemap(in) (TYPEMAP, SIZE) { int res; Py_ssize_t size = 0; void *buf = 0; Py_buffer view; res = PyObject_GetBuffer($input, &view, PyBUF_WRITABLE); size = view.len; buf = view.buf; PyBuffer_Release(&view); if (res < 0) { PyErr_Clear(); %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); } $1 = ($1_ltype) buf; $2 = ($2_ltype) (size/sizeof($*1_type)); } %enddef /* %pybuffer_mutable_string(TYPEMAP) * * Macro for functions accept mutable zero terminated string pointer. * This can be used for both input and output. For example: * * %pybuffer_mutable_string(char *str); * void foo(char *str) { * while(*str) { * *str = toupper(*str); * str++; * } */ %define %pybuffer_mutable_string(TYPEMAP) %typemap(in) (TYPEMAP) { int res; void *buf = 0; Py_buffer view; res = PyObject_GetBuffer($input, &view, PyBUF_WRITABLE); buf = view.buf; PyBuffer_Release(&view); if (res < 0) { PyErr_Clear(); %argument_fail(res, "(TYPEMAP)", $symname, $argnum); } $1 = ($1_ltype) buf; } %enddef /* pybuffer_binary(TYPEMAP, SIZE) * * Macro for functions accept read only buffer pointer with a size. * This must be used for input. For example: * * %pybuffer_binary(char *buff, int size); * int foo(char *buff, int size) { * int count = 0; * for(int i=0; i<size; ++i) * if (0==buff[i]) count++; * return count; * } */ %define %pybuffer_binary(TYPEMAP, SIZE) %typemap(in) (TYPEMAP, SIZE) { int res; Py_ssize_t size = 0; const void *buf = 0; Py_buffer view; res = PyObject_GetBuffer($input, &view, PyBUF_CONTIG_RO); size = view.len; buf = view.buf; PyBuffer_Release(&view); if (res < 0) { PyErr_Clear(); %argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum); } $1 = ($1_ltype) buf; $2 = ($2_ltype) (size / sizeof($*1_type)); } %enddef /* %pybuffer_string(TYPEMAP) * * Macro for functions accept read only zero terminated string pointer. * This can be used for input. For example: * * %pybuffer_string(char *str); * int foo(char *str) { * int count = 0; * while(*str) { * if (isalnum(*str)) * count++; * str++; * } */ %define %pybuffer_string(TYPEMAP) %typemap(in) (TYPEMAP) { int res; const void *buf = 0; Py_buffer view; res = PyObject_GetBuffer($input, &view, PyBUF_CONTIG_RO); buf = view.buf; PyBuffer_Release(&view); if (res < 0) { %argument_fail(res, "(TYPEMAP)", $symname, $argnum); } $1 = ($1_ltype) buf; } %enddef