@@ -254,9 +254,63 @@ static PyType_Spec Writer_spec = {
254254};
255255
256256
257+ static  PyObject  * 
258+ byteswriter_center_example (Py_ssize_t  spaces , char  * str , Py_ssize_t  str_size )
259+ {
260+     PyBytesWriter  * writer ;
261+     char  * buf  =  PyBytesWriter_Create (& writer , spaces  *  2 );
262+     if  (buf  ==  NULL ) {
263+         goto error ;
264+     }
265+     assert (PyBytesWriter_GetRemaining (writer , buf ) ==  spaces  *  2 );
266+ 
267+     // Add left spaces 
268+     memset (buf , ' ' , spaces );
269+     buf  +=  spaces ;
270+     assert (PyBytesWriter_GetRemaining (writer , buf ) ==  spaces );
271+ 
272+     // Copy string 
273+     buf  =  PyBytesWriter_Extend (writer , buf , str_size );
274+     if  (buf  ==  NULL ) {
275+         goto error ;
276+     }
277+     assert (PyBytesWriter_GetRemaining (writer , buf ) ==  spaces  +  str_size );
278+ 
279+     memcpy (buf , str , str_size );
280+     buf  +=  str_size ;
281+     assert (PyBytesWriter_GetRemaining (writer , buf ) ==  spaces );
282+ 
283+     // Add right spaces 
284+     memset (buf , ' ' , spaces );
285+     buf  +=  spaces ;
286+     assert (PyBytesWriter_GetRemaining (writer , buf ) ==  0 );
287+ 
288+     return  PyBytesWriter_Finish (writer , buf );
289+ 
290+ error :
291+     PyBytesWriter_Discard (writer );
292+     return  NULL ;
293+ }
294+ 
295+ 
296+ static  PyObject  * 
297+ byteswriter_center (PyObject  * Py_UNUSED (module ), PyObject  * args )
298+ {
299+     Py_ssize_t  spaces ;
300+     char  * str ;
301+     Py_ssize_t  str_size ;
302+     if  (!PyArg_ParseTuple (args , "ny#" , & spaces , & str , & str_size )) {
303+         return  NULL ;
304+     }
305+ 
306+     return  byteswriter_center_example (spaces , str , str_size );
307+ }
308+ 
309+ 
257310static  PyMethodDef  test_methods [] =  {
258311    {"bytes_resize" , bytes_resize , METH_VARARGS },
259312    {"bytes_join" , bytes_join , METH_VARARGS },
313+     {"byteswriter_center" , byteswriter_center , METH_VARARGS },
260314    {NULL },
261315};
262316
0 commit comments