[ctypes-commit] ctypes/docs/manual manual.html,1.1.2.10,1.1.2.11 libraries.txt,1.1.2.4,1.1.2.5 funct
Brought to you by:
theller
From: Thomas H. <th...@us...> - 2006-02-17 21:18:21
|
Update of /cvsroot/ctypes/ctypes/docs/manual In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26915 Modified Files: Tag: branch_1_0 manual.html libraries.txt functions.txt Log Message: Shortly document the CDLL, WinDLL, OleDLL, and PyDLL types. Mention that functions can be accessed by indexing with the function name also. Rgenerate the html file. Index: functions.txt =================================================================== RCS file: /cvsroot/ctypes/ctypes/docs/manual/Attic/functions.txt,v retrieving revision 1.1.2.5 retrieving revision 1.1.2.6 diff -C2 -d -r1.1.2.5 -r1.1.2.6 *** functions.txt 17 Feb 2006 07:07:34 -0000 1.1.2.5 --- functions.txt 17 Feb 2006 21:18:16 -0000 1.1.2.6 *************** *** 9,13 **** --- 9,16 ---- libc = cdll.find("c") # posix libc = cdll.msvcrt # windows + # attribute access atoi = libc.atoi + # alternative indexing notation + atoi = libc["atoi"] This creates an instance of a foreign function object, using the Index: libraries.txt =================================================================== RCS file: /cvsroot/ctypes/ctypes/docs/manual/Attic/libraries.txt,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -C2 -d -r1.1.2.4 -r1.1.2.5 *** libraries.txt 16 Feb 2006 19:47:30 -0000 1.1.2.4 --- libraries.txt 17 Feb 2006 21:18:16 -0000 1.1.2.5 *************** *** 129,130 **** --- 129,150 ---- Python C api as the ``pythonapi`` symbol, you should however make sure to set the correct ``restype`` for the functions you use. + + Library objects + ~~~~~~~~~~~~~~~ + + The library loaders create instances of ``CDLL``, ``WinDLL``, + ``OleDLL``, or ``PyDLL`` classes. You can, however, also load a + library by constructing one of these classes by calling the + constructor with the pathname of the library and an optional ``mode`` + argument as described in the previous section. + + Library objects implement ``__getattr__`` and ``__getitem__`` methods + that allow to access foreign functions by attribute access or + indexing. The latter is useful if the name of the function is not a + valid Python identifier, or clashes with special Python method names + that start and end with two underscore characters. + + Library objects have two private attributes: ``_name`` is the pathname + of the library, ``_handle`` is the handle to the library that + ``dlopen`` has returned. + Index: manual.html =================================================================== RCS file: /cvsroot/ctypes/ctypes/docs/manual/Attic/manual.html,v retrieving revision 1.1.2.10 retrieving revision 1.1.2.11 diff -C2 -d -r1.1.2.10 -r1.1.2.11 *** manual.html 17 Feb 2006 20:42:03 -0000 1.1.2.10 --- manual.html 17 Feb 2006 21:18:16 -0000 1.1.2.11 *************** *** 300,332 **** <li><a class="reference" href="#class-libraryloader" id="id2" name="id2">class LibraryLoader</a></li> <li><a class="reference" href="#predefined-library-loaders" id="id3" name="id3">Predefined library loaders</a></li> </ul> </li> ! <li><a class="reference" href="#foreign-functions" id="id4" name="id4">Foreign functions</a><ul> ! <li><a class="reference" href="#function-prototypes" id="id5" name="id5">Function prototypes</a></li> ! <li><a class="reference" href="#parameter-flags" id="id6" name="id6">Parameter flags</a></li> ! <li><a class="reference" href="#com-methods-windows-only" id="id7" name="id7">COM methods (Windows only)</a></li> ! <li><a class="reference" href="#callback-functions" id="id8" name="id8">Callback functions</a></li> </ul> </li> ! <li><a class="reference" href="#simple-types" id="id9" name="id9">Simple types</a><ul> ! <li><a class="reference" href="#class-attributes-of-simple-types" id="id10" name="id10">Class attributes of simple types</a></li> ! <li><a class="reference" href="#class-methods-of-simple-types" id="id11" name="id11">Class methods of simple types</a></li> ! <li><a class="reference" href="#instance-attributes-of-simple-types" id="id12" name="id12">Instance attributes of simple types</a></li> ! <li><a class="reference" href="#numeric-types" id="id13" name="id13">Numeric types</a></li> ! <li><a class="reference" href="#character-types" id="id14" name="id14">Character types</a></li> ! <li><a class="reference" href="#pointer-types" id="id15" name="id15">Pointer types</a></li> ! <li><a class="reference" href="#string-types" id="id16" name="id16">String types</a></li> </ul> </li> ! <li><a class="reference" href="#structure-and-union-types" id="id17" name="id17">Structure and union types</a><ul> ! <li><a class="reference" href="#defining-field-names-and-types" id="id18" name="id18">Defining field names and types</a></li> ! <li><a class="reference" href="#packing-fields" id="id19" name="id19">Packing fields</a></li> ! <li><a class="reference" href="#bit-fields" id="id20" name="id20">Bit fields</a></li> ! <li><a class="reference" href="#recursive-data-types" id="id21" name="id21">Recursive data types</a></li> ! <li><a class="reference" href="#byte-order" id="id22" name="id22">Byte order</a></li> </ul> </li> ! <li><a class="reference" href="#builtin-functions" id="id23" name="id23">Builtin functions</a><ul> ! <li><a class="reference" href="#deprecated-functions" id="id24" name="id24">Deprecated functions</a></li> </ul> </li> --- 300,333 ---- <li><a class="reference" href="#class-libraryloader" id="id2" name="id2">class LibraryLoader</a></li> <li><a class="reference" href="#predefined-library-loaders" id="id3" name="id3">Predefined library loaders</a></li> + <li><a class="reference" href="#library-objects" id="id4" name="id4">Library objects</a></li> </ul> </li> ! <li><a class="reference" href="#foreign-functions" id="id5" name="id5">Foreign functions</a><ul> ! <li><a class="reference" href="#function-prototypes" id="id6" name="id6">Function prototypes</a></li> ! <li><a class="reference" href="#parameter-flags" id="id7" name="id7">Parameter flags</a></li> ! <li><a class="reference" href="#com-methods-windows-only" id="id8" name="id8">COM methods (Windows only)</a></li> ! <li><a class="reference" href="#callback-functions" id="id9" name="id9">Callback functions</a></li> </ul> </li> ! <li><a class="reference" href="#simple-types" id="id10" name="id10">Simple types</a><ul> ! <li><a class="reference" href="#class-attributes-of-simple-types" id="id11" name="id11">Class attributes of simple types</a></li> ! <li><a class="reference" href="#class-methods-of-simple-types" id="id12" name="id12">Class methods of simple types</a></li> ! <li><a class="reference" href="#instance-attributes-of-simple-types" id="id13" name="id13">Instance attributes of simple types</a></li> ! <li><a class="reference" href="#numeric-types" id="id14" name="id14">Numeric types</a></li> ! <li><a class="reference" href="#character-types" id="id15" name="id15">Character types</a></li> ! <li><a class="reference" href="#pointer-types" id="id16" name="id16">Pointer types</a></li> ! <li><a class="reference" href="#string-types" id="id17" name="id17">String types</a></li> </ul> </li> ! <li><a class="reference" href="#structure-and-union-types" id="id18" name="id18">Structure and union types</a><ul> ! <li><a class="reference" href="#defining-field-names-and-types" id="id19" name="id19">Defining field names and types</a></li> ! <li><a class="reference" href="#packing-fields" id="id20" name="id20">Packing fields</a></li> ! <li><a class="reference" href="#bit-fields" id="id21" name="id21">Bit fields</a></li> ! <li><a class="reference" href="#recursive-data-types" id="id22" name="id22">Recursive data types</a></li> ! <li><a class="reference" href="#byte-order" id="id23" name="id23">Byte order</a></li> </ul> </li> ! <li><a class="reference" href="#builtin-functions" id="id24" name="id24">Builtin functions</a><ul> ! <li><a class="reference" href="#deprecated-functions" id="id25" name="id25">Deprecated functions</a></li> </ul> </li> *************** *** 445,451 **** </blockquote> </div> </div> <div class="section"> ! <h1><a class="toc-backref" href="#id4" id="foreign-functions" name="foreign-functions">Foreign functions</a></h1> <p>Functions exported from loaded shared libraries (foreign functions) can be accessed in two ways. The easiest way is to retrieve them as --- 446,468 ---- </blockquote> </div> + <div class="section"> + <h2><a class="toc-backref" href="#id4" id="library-objects" name="library-objects">Library objects</a></h2> + <p>The library loaders return instances of <tt class="docutils literal"><span class="pre">CDLL</span></tt>, <tt class="docutils literal"><span class="pre">WinDLL</span></tt>, + <tt class="docutils literal"><span class="pre">OleDLL</span></tt>, or <tt class="docutils literal"><span class="pre">PyDLL</span></tt> classes. You can, however, also load a + library by constructing one of these classes by calling the + constructor with the pathname of the library and an optional <tt class="docutils literal"><span class="pre">mode</span></tt> + argument as described in the previous section.</p> + <p>These classes implement <tt class="docutils literal"><span class="pre">__getattr__</span></tt> and <tt class="docutils literal"><span class="pre">__getitem__</span></tt> methods + that allow to access foreign functions by attribute access or indexing. + The latter is useful if the name of the function is not a valid Python + identifier, or clashes with special Python method names that start and + end with two underscore characters.</p> + <p>Library objects have two private attributes: <tt class="docutils literal"><span class="pre">_name</span></tt> is the pathname + of the library, <tt class="docutils literal"><span class="pre">_handle</span></tt> is the handle to the library that + <tt class="docutils literal"><span class="pre">dlopen</span></tt> has returned.</p> + </div> </div> <div class="section"> ! <h1><a class="toc-backref" href="#id5" id="foreign-functions" name="foreign-functions">Foreign functions</a></h1> <p>Functions exported from loaded shared libraries (foreign functions) can be accessed in two ways. The easiest way is to retrieve them as *************** *** 482,486 **** detects a failure, or return the needed return value otherwise.</p> <div class="section"> ! <h2><a class="toc-backref" href="#id5" id="function-prototypes" name="function-prototypes">Function prototypes</a></h2> <p>Another way to access a function exported from shared libraries is to first create a prototype by calling a factory function, specifying the --- 499,503 ---- detects a failure, or return the needed return value otherwise.</p> <div class="section"> ! <h2><a class="toc-backref" href="#id6" id="function-prototypes" name="function-prototypes">Function prototypes</a></h2> <p>Another way to access a function exported from shared libraries is to first create a prototype by calling a factory function, specifying the *************** *** 506,510 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id6" id="parameter-flags" name="parameter-flags">Parameter flags</a></h2> <p>It is possible to specify a third argument <tt class="docutils literal"><span class="pre">paramflags</span></tt> when calling the prototype. This is used to specify additional information for --- 523,527 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id7" id="parameter-flags" name="parameter-flags">Parameter flags</a></h2> <p>It is possible to specify a third argument <tt class="docutils literal"><span class="pre">paramflags</span></tt> when calling the prototype. This is used to specify additional information for *************** *** 543,547 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id7" id="com-methods-windows-only" name="com-methods-windows-only">COM methods (Windows only)</a></h2> <p>XXX Should this be left undocumented? Mentioned for completeness.</p> <p>The prototypes created by <tt class="docutils literal"><span class="pre">WINFUNCTYPE</span></tt> can be called with a --- 560,564 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id8" id="com-methods-windows-only" name="com-methods-windows-only">COM methods (Windows only)</a></h2> <p>XXX Should this be left undocumented? Mentioned for completeness.</p> <p>The prototypes created by <tt class="docutils literal"><span class="pre">WINFUNCTYPE</span></tt> can be called with a *************** *** 560,564 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id8" id="callback-functions" name="callback-functions">Callback functions</a></h2> <p>ctypes is able to create C callable functions from Python callables. This is useful because sometimes library functions need a callback --- 577,581 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id9" id="callback-functions" name="callback-functions">Callback functions</a></h2> <p>ctypes is able to create C callable functions from Python callables. This is useful because sometimes library functions need a callback *************** *** 588,592 **** </div> <div class="section"> ! <h1><a class="toc-backref" href="#id9" id="simple-types" name="simple-types">Simple types</a></h1> <p>Simple types have some special behaviour: When they are accessed as structure or union fields, items of array instances, or as foreign --- 605,609 ---- </div> <div class="section"> ! <h1><a class="toc-backref" href="#id10" id="simple-types" name="simple-types">Simple types</a></h1> <p>Simple types have some special behaviour: When they are accessed as structure or union fields, items of array instances, or as foreign *************** *** 598,602 **** allows you to define new behaviour almost completely.</p> <div class="section"> ! <h2><a class="toc-backref" href="#id10" id="class-attributes-of-simple-types" name="class-attributes-of-simple-types">Class attributes of simple types</a></h2> <p><tt class="docutils literal"><span class="pre">__ctype__be__</span></tt>, <tt class="docutils literal"><span class="pre">__ctype_le__</span></tt></p> <blockquote> --- 615,619 ---- allows you to define new behaviour almost completely.</p> <div class="section"> ! <h2><a class="toc-backref" href="#id11" id="class-attributes-of-simple-types" name="class-attributes-of-simple-types">Class attributes of simple types</a></h2> <p><tt class="docutils literal"><span class="pre">__ctype__be__</span></tt>, <tt class="docutils literal"><span class="pre">__ctype_le__</span></tt></p> <blockquote> *************** *** 608,612 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id11" id="class-methods-of-simple-types" name="class-methods-of-simple-types">Class methods of simple types</a></h2> <p>(To be exact, these are not class methods, instead these are methods of the metaclass. The most prominent difference to classmethods is --- 625,629 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id12" id="class-methods-of-simple-types" name="class-methods-of-simple-types">Class methods of simple types</a></h2> <p>(To be exact, these are not class methods, instead these are methods of the metaclass. The most prominent difference to classmethods is *************** *** 642,646 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id12" id="instance-attributes-of-simple-types" name="instance-attributes-of-simple-types">Instance attributes of simple types</a></h2> <p><tt class="docutils literal"><span class="pre">_type_</span></tt></p> <blockquote> --- 659,663 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id13" id="instance-attributes-of-simple-types" name="instance-attributes-of-simple-types">Instance attributes of simple types</a></h2> <p><tt class="docutils literal"><span class="pre">_type_</span></tt></p> <blockquote> *************** *** 673,677 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id13" id="numeric-types" name="numeric-types">Numeric types</a></h2> <p>Integer types are <tt class="docutils literal"><span class="pre">c_byte</span></tt>, <tt class="docutils literal"><span class="pre">c_short</span></tt>, <tt class="docutils literal"><span class="pre">c_int</span></tt>, <tt class="docutils literal"><span class="pre">c_long</span></tt>, <tt class="docutils literal"><span class="pre">c_longlong</span></tt> and their unsigned variants <tt class="docutils literal"><span class="pre">c_ubyte</span></tt>, <tt class="docutils literal"><span class="pre">c_ushort</span></tt>, --- 690,694 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id14" id="numeric-types" name="numeric-types">Numeric types</a></h2> <p>Integer types are <tt class="docutils literal"><span class="pre">c_byte</span></tt>, <tt class="docutils literal"><span class="pre">c_short</span></tt>, <tt class="docutils literal"><span class="pre">c_int</span></tt>, <tt class="docutils literal"><span class="pre">c_long</span></tt>, <tt class="docutils literal"><span class="pre">c_longlong</span></tt> and their unsigned variants <tt class="docutils literal"><span class="pre">c_ubyte</span></tt>, <tt class="docutils literal"><span class="pre">c_ushort</span></tt>, *************** *** 685,689 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id14" id="character-types" name="character-types">Character types</a></h2> <p>Character types are <tt class="docutils literal"><span class="pre">c_char</span></tt> and <tt class="docutils literal"><span class="pre">c_wchar</span></tt>, representing the C <tt class="docutils literal"><span class="pre">char</span></tt> and <tt class="docutils literal"><span class="pre">wchar_t</span></tt> types.</p> --- 702,706 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id15" id="character-types" name="character-types">Character types</a></h2> <p>Character types are <tt class="docutils literal"><span class="pre">c_char</span></tt> and <tt class="docutils literal"><span class="pre">c_wchar</span></tt>, representing the C <tt class="docutils literal"><span class="pre">char</span></tt> and <tt class="docutils literal"><span class="pre">wchar_t</span></tt> types.</p> *************** *** 694,698 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id15" id="pointer-types" name="pointer-types">Pointer types</a></h2> <p>The only simple pointer type is <tt class="docutils literal"><span class="pre">c_void_p</span></tt>, which represents the C <tt class="docutils literal"><span class="pre">void</span> <span class="pre">*</span></tt> data type. <tt class="docutils literal"><span class="pre">c_void_p</span></tt> can also be written as --- 711,715 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id16" id="pointer-types" name="pointer-types">Pointer types</a></h2> <p>The only simple pointer type is <tt class="docutils literal"><span class="pre">c_void_p</span></tt>, which represents the C <tt class="docutils literal"><span class="pre">void</span> <span class="pre">*</span></tt> data type. <tt class="docutils literal"><span class="pre">c_void_p</span></tt> can also be written as *************** *** 707,711 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id16" id="string-types" name="string-types">String types</a></h2> <p>ctypes has the <tt class="docutils literal"><span class="pre">c_char_p</span></tt> and <tt class="docutils literal"><span class="pre">c_wchar_p</span></tt> types which represent const pointers to zero terminated strings in C: <tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> and --- 724,728 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id17" id="string-types" name="string-types">String types</a></h2> <p>ctypes has the <tt class="docutils literal"><span class="pre">c_char_p</span></tt> and <tt class="docutils literal"><span class="pre">c_wchar_p</span></tt> types which represent const pointers to zero terminated strings in C: <tt class="docutils literal"><span class="pre">const</span> <span class="pre">char</span> <span class="pre">*</span></tt> and *************** *** 722,731 **** </div> <div class="section"> ! <h1><a class="toc-backref" href="#id17" id="structure-and-union-types" name="structure-and-union-types">Structure and union types</a></h1> <p>ctypes provides the abstract base classes <tt class="docutils literal"><span class="pre">Structure</span></tt> and <tt class="docutils literal"><span class="pre">Union</span></tt> to define structure and union types. Subclasses must at least define a <tt class="docutils literal"><span class="pre">_fields_</span></tt> attribute.</p> <div class="section"> ! <h2><a class="toc-backref" href="#id18" id="defining-field-names-and-types" name="defining-field-names-and-types">Defining field names and types</a></h2> <p><tt class="docutils literal"><span class="pre">_fields_</span></tt> must be a sequence of tuples. The first item of each tuple is a string specifying the name of the structure/union field. --- 739,748 ---- </div> <div class="section"> ! <h1><a class="toc-backref" href="#id18" id="structure-and-union-types" name="structure-and-union-types">Structure and union types</a></h1> <p>ctypes provides the abstract base classes <tt class="docutils literal"><span class="pre">Structure</span></tt> and <tt class="docutils literal"><span class="pre">Union</span></tt> to define structure and union types. Subclasses must at least define a <tt class="docutils literal"><span class="pre">_fields_</span></tt> attribute.</p> <div class="section"> ! <h2><a class="toc-backref" href="#id19" id="defining-field-names-and-types" name="defining-field-names-and-types">Defining field names and types</a></h2> <p><tt class="docutils literal"><span class="pre">_fields_</span></tt> must be a sequence of tuples. The first item of each tuple is a string specifying the name of the structure/union field. *************** *** 745,749 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id19" id="packing-fields" name="packing-fields">Packing fields</a></h2> <p>Normally fields are aligned in the same way as the host's C compiler. The native alignment can be overridden by setting a <tt class="docutils literal"><span class="pre">_pack_</span></tt> --- 762,766 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id20" id="packing-fields" name="packing-fields">Packing fields</a></h2> <p>Normally fields are aligned in the same way as the host's C compiler. The native alignment can be overridden by setting a <tt class="docutils literal"><span class="pre">_pack_</span></tt> *************** *** 752,756 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id20" id="bit-fields" name="bit-fields">Bit fields</a></h2> <p>Integer fields support bit sizes. The bit-size must be specified as the third item of the <tt class="docutils literal"><span class="pre">_fields_</span></tt> tuple. Bit fields are constructed --- 769,773 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id21" id="bit-fields" name="bit-fields">Bit fields</a></h2> <p>Integer fields support bit sizes. The bit-size must be specified as the third item of the <tt class="docutils literal"><span class="pre">_fields_</span></tt> tuple. Bit fields are constructed *************** *** 761,765 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id21" id="recursive-data-types" name="recursive-data-types">Recursive data types</a></h2> <p>To support recursive type definitions, it is possible to assign the <tt class="docutils literal"><span class="pre">_fields_</span></tt> value after the class statement. Here is an example of a --- 778,782 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id22" id="recursive-data-types" name="recursive-data-types">Recursive data types</a></h2> <p>To support recursive type definitions, it is possible to assign the <tt class="docutils literal"><span class="pre">_fields_</span></tt> value after the class statement. Here is an example of a *************** *** 775,779 **** </div> <div class="section"> ! <h2><a class="toc-backref" href="#id22" id="byte-order" name="byte-order">Byte order</a></h2> <p>It is possible to create Structure and Union types using non-native byte order by using the <tt class="docutils literal"><span class="pre">BigEndianStructure</span></tt>, --- 792,796 ---- </div> <div class="section"> ! <h2><a class="toc-backref" href="#id23" id="byte-order" name="byte-order">Byte order</a></h2> <p>It is possible to create Structure and Union types using non-native byte order by using the <tt class="docutils literal"><span class="pre">BigEndianStructure</span></tt>, *************** *** 784,788 **** </div> <div class="section"> ! <h1><a class="toc-backref" href="#id23" id="builtin-functions" name="builtin-functions">Builtin functions</a></h1> <p>XXX Change to alphabetical order!</p> <p><tt class="docutils literal"><span class="pre">CFUNCTYPE(restype,</span> <span class="pre">*argtypes)</span></tt></p> --- 801,805 ---- </div> <div class="section"> ! <h1><a class="toc-backref" href="#id24" id="builtin-functions" name="builtin-functions">Builtin functions</a></h1> <p>XXX Change to alphabetical order!</p> <p><tt class="docutils literal"><span class="pre">CFUNCTYPE(restype,</span> <span class="pre">*argtypes)</span></tt></p> *************** *** 881,885 **** Returns the last error code set by Windows.</blockquote> <div class="section"> ! <h2><a class="toc-backref" href="#id24" id="deprecated-functions" name="deprecated-functions">Deprecated functions</a></h2> <p><tt class="docutils literal"><span class="pre">c_buffer(init,</span> <span class="pre">size=None)</span></tt></p> <blockquote> --- 898,902 ---- Returns the last error code set by Windows.</blockquote> <div class="section"> ! <h2><a class="toc-backref" href="#id25" id="deprecated-functions" name="deprecated-functions">Deprecated functions</a></h2> <p><tt class="docutils literal"><span class="pre">c_buffer(init,</span> <span class="pre">size=None)</span></tt></p> <blockquote> |