Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
ae2f087b
Commit
ae2f087b
authored
Aug 26, 2007
by
Neal Norwitz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Spell check (also americanify behaviour, it's almost 3 times as common)
parent
94e49c3a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
26 deletions
+26
-26
Doc/library/ctypes.rst
Doc/library/ctypes.rst
+26
-26
No files found.
Doc/library/ctypes.rst
View file @
ae2f087b
...
@@ -109,7 +109,7 @@ UNICODE is defined or not::
...
@@ -109,7 +109,7 @@ UNICODE is defined or not::
*windll* does not try to select one of them by magic, you must access the
*windll* does not try to select one of them by magic, you must access the
version you need by specifying ``GetModuleHandleA`` or ``GetModuleHandleW``
version you need by specifying ``GetModuleHandleA`` or ``GetModuleHandleW``
explicit
e
ly, and then call it with normal strings or unicode strings
explicitly, and then call it with normal strings or unicode strings
respectively.
respectively.
Sometimes, dlls export functions with names which aren't valid Python
Sometimes, dlls export functions with names which aren't valid Python
...
@@ -383,7 +383,7 @@ course, it must be one of integer, string, or unicode::
...
@@ -383,7 +383,7 @@ course, it must be one of integer, string, or unicode::
If you don't want to store the instance's data in the :attr:`_as_parameter_`
If you don't want to store the instance's data in the :attr:`_as_parameter_`
instance variable, you could define a ``property`` which makes the data
instance variable, you could define a ``property`` which makes the data
avai
b
lable.
available.
.. _ctypes-specifying-required-argument-types:
.. _ctypes-specifying-required-argument-types:
...
@@ -600,7 +600,7 @@ Structure/union alignment and byte order
...
@@ -600,7 +600,7 @@ Structure/union alignment and byte order
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
By default, Structure and Union fields are aligned in the same way the C
By default, Structure and Union fields are aligned in the same way the C
compiler does it. It is possible to override this behavio
u
r be specifying a
compiler does it. It is possible to override this behavior be specifying a
:attr:`_pack_` class attribute in the subclass definition. This must be set to a
:attr:`_pack_` class attribute in the subclass definition. This must be set to a
positive integer and specifies the maximum alignment for the fields. This is
positive integer and specifies the maximum alignment for the fields. This is
what ``#pragma pack(n)`` also does in MSVC.
what ``#pragma pack(n)`` also does in MSVC.
...
@@ -643,7 +643,7 @@ positive integer::
...
@@ -643,7 +643,7 @@ positive integer::
TenPointsArrayType = POINT * 10
TenPointsArrayType = POINT * 10
Here is an example of an somewhat artifical data type, a structure containing 4
Here is an example of an somewhat artific
i
al data type, a structure containing 4
POINTs among other stuff::
POINTs among other stuff::
>>> from ctypes import *
>>> from ctypes import *
...
@@ -1134,7 +1134,7 @@ hit the NULL entry::
...
@@ -1134,7 +1134,7 @@ hit the NULL entry::
>>>
>>>
The fact that standard Python has a frozen module and a frozen package
The fact that standard Python has a frozen module and a frozen package
(indicated by the negative size member) is not wellknown, it is only used for
(indicated by the negative size member) is not well
known, it is only used for
testing. Try it out with ``import __hello__`` for example.
testing. Try it out with ``import __hello__`` for example.
...
@@ -1167,7 +1167,7 @@ Consider the following example::
...
@@ -1167,7 +1167,7 @@ Consider the following example::
>>>
>>>
Hm. We certainly expected the last statement to print ``3 4 1 2``. What
Hm. We certainly expected the last statement to print ``3 4 1 2``. What
happen
d
ed? Here are the steps of the ``rc.a, rc.b = rc.b, rc.a`` line above::
happened? Here are the steps of the ``rc.a, rc.b = rc.b, rc.a`` line above::
>>> temp0, temp1 = rc.b, rc.a
>>> temp0, temp1 = rc.b, rc.a
>>> rc.a = temp0
>>> rc.a = temp0
...
@@ -1180,8 +1180,8 @@ contents of ``temp0`` into ``rc`` 's buffer. This, in turn, changes the
...
@@ -1180,8 +1180,8 @@ contents of ``temp0`` into ``rc`` 's buffer. This, in turn, changes the
contents of ``temp1``. So, the last assignment ``rc.b = temp1``, doesn't have
contents of ``temp1``. So, the last assignment ``rc.b = temp1``, doesn't have
the expected effect.
the expected effect.
Keep in mind that retrieving subobjects from Structure, Unions, and Arrays
Keep in mind that retrieving sub
-
objects from Structure, Unions, and Arrays
doesn't *copy* the subobject, instead it retrieves a wrapper object accessing
doesn't *copy* the sub
-
object, instead it retrieves a wrapper object accessing
the root-object's underlying buffer.
the root-object's underlying buffer.
Another example that may behave different from what one would expect is this::
Another example that may behave different from what one would expect is this::
...
@@ -1292,11 +1292,11 @@ library to load.
...
@@ -1292,11 +1292,11 @@ library to load.
is the form used for the posix linker option :option:`-l`). If no library can
is the form used for the posix linker option :option:`-l`). If no library can
be found, returns ``None``.
be found, returns ``None``.
The exact functionality is system dependen
d
.
The exact functionality is system dependen
t
.
On Linux, ``find_library`` tries to run external programs (/sbin/ldconfig, gcc,
On Linux, ``find_library`` tries to run external programs (/sbin/ldconfig, gcc,
and objdump) to find the library file. It returns the filename of the library
and objdump) to find the library file. It returns the filename of the library
file. Here are so
n
e examples::
file. Here are so
m
e examples::
>>> from ctypes.util import find_library
>>> from ctypes.util import find_library
>>> find_library("m")
>>> find_library("m")
...
@@ -1308,7 +1308,7 @@ file. Here are sone examples::
...
@@ -1308,7 +1308,7 @@ file. Here are sone examples::
>>>
>>>
On OS X, ``find_library`` tries several predefined naming schemes and paths to
On OS X, ``find_library`` tries several predefined naming schemes and paths to
locate the library, and returns a full pathname if successful
l
::
locate the library, and returns a full pathname if successful::
>>> from ctypes.util import find_library
>>> from ctypes.util import find_library
>>> find_library("c")
>>> find_library("c")
...
@@ -1367,7 +1367,7 @@ way is to instantiate one of the following classes:
...
@@ -1367,7 +1367,7 @@ way is to instantiate one of the following classes:
platform.
platform.
The Python GIL is released before calling any function exported by these
The Python GIL is released before calling any function exported by these
libraries, and reaquired afterwards.
libraries, and rea
c
quired afterwards.
.. class:: PyDLL(name, mode=DEFAULT_MODE, handle=None)
.. class:: PyDLL(name, mode=DEFAULT_MODE, handle=None)
...
@@ -1411,7 +1411,7 @@ details, consult the ``dlopen(3)`` manpage, on Windows, *mode* is ignored.
...
@@ -1411,7 +1411,7 @@ details, consult the ``dlopen(3)`` manpage, on Windows, *mode* is ignored.
*RTLD_GLOBAL*, otherwise it is the same as *RTLD_LOCAL*.
*RTLD_GLOBAL*, otherwise it is the same as *RTLD_LOCAL*.
Instances of these classes have no public methods, however :meth:`__getattr__`
Instances of these classes have no public methods, however :meth:`__getattr__`
and :meth:`__getitem__` have special behavio
u
r: functions exported by the shared
and :meth:`__getitem__` have special behavior: functions exported by the shared
library can be accessed as attributes of by index. Please note that both
library can be accessed as attributes of by index. Please note that both
:meth:`__getattr__` and :meth:`__getitem__` cache their result, so calling them
:meth:`__getattr__` and :meth:`__getitem__` cache their result, so calling them
repeatedly returns the same object each time.
repeatedly returns the same object each time.
...
@@ -1427,7 +1427,7 @@ underscore to not clash with exported function names:
...
@@ -1427,7 +1427,7 @@ underscore to not clash with exported function names:
.. attribute:: PyDLL._name
.. attribute:: PyDLL._name
The name of the library passed in the contructor.
The name of the library passed in the con
s
tructor.
Shared libraries can also be loaded by using one of the prefabricated objects,
Shared libraries can also be loaded by using one of the prefabricated objects,
which are instances of the :class:`LibraryLoader` class, either by calling the
which are instances of the :class:`LibraryLoader` class, either by calling the
...
@@ -1440,7 +1440,7 @@ loader instance.
...
@@ -1440,7 +1440,7 @@ loader instance.
Class which loads shared libraries. ``dlltype`` should be one of the
Class which loads shared libraries. ``dlltype`` should be one of the
:class:`CDLL`, :class:`PyDLL`, :class:`WinDLL`, or :class:`OleDLL` types.
:class:`CDLL`, :class:`PyDLL`, :class:`WinDLL`, or :class:`OleDLL` types.
:meth:`__getattr__` has special behavio
u
r: It allows to load a shared library by
:meth:`__getattr__` has special behavior: It allows to load a shared library by
accessing it as attribute of a library loader instance. The result is cached,
accessing it as attribute of a library loader instance. The result is cached,
so repeated attribute accesses return the same library each time.
so repeated attribute accesses return the same library each time.
...
@@ -1508,7 +1508,7 @@ They are instances of a private class:
...
@@ -1508,7 +1508,7 @@ They are instances of a private class:
Instances of foreign functions are also C compatible data types; they represent
Instances of foreign functions are also C compatible data types; they represent
C function pointers.
C function pointers.
This behavio
u
r can be customized by assigning to special attributes of the
This behavior can be customized by assigning to special attributes of the
foreign function object.
foreign function object.
...
@@ -1520,7 +1520,7 @@ foreign function object.
...
@@ -1520,7 +1520,7 @@ foreign function object.
It is possible to assign a callable Python object that is not a ctypes type, in
It is possible to assign a callable Python object that is not a ctypes type, in
this case the function is assumed to return a C ``int``, and the callable will
this case the function is assumed to return a C ``int``, and the callable will
be called with this integer, allowing to do further processing or error
be called with this integer, allowing to do further processing or error
checking. Using this is deprecated, for more flexible postprocessing or error
checking. Using this is deprecated, for more flexible post
processing or error
checking use a ctypes data type as :attr:`restype` and assign a callable to the
checking use a ctypes data type as :attr:`restype` and assign a callable to the
:attr:`errcheck` attribute.
:attr:`errcheck` attribute.
...
@@ -1558,10 +1558,10 @@ foreign function object.
...
@@ -1558,10 +1558,10 @@ foreign function object.
:attr:`restype` attribute.
:attr:`restype` attribute.
``func`` is the foreign function object itself, this allows to reuse the same
``func`` is the foreign function object itself, this allows to reuse the same
callable object to check or postprocess the results of several functions.
callable object to check or post
process the results of several functions.
``arguments`` is a tuple containing the parameters originally passed to the
``arguments`` is a tuple containing the parameters originally passed to the
function call, this allows to specialize the behavio
u
r on the arguments used.
function call, this allows to specialize the behavior on the arguments used.
The object that this function returns will be returned from the foreign function
The object that this function returns will be returned from the foreign function
call, but it can also check the result value and raise an exception if the
call, but it can also check the result value and raise an exception if the
...
@@ -1634,7 +1634,7 @@ different ways, depending on the type and number of the parameters in the call.
...
@@ -1634,7 +1634,7 @@ different ways, depending on the type and number of the parameters in the call.
:noindex:
:noindex:
Returns a foreign function that will call a COM method. ``vtbl_index`` is the
Returns a foreign function that will call a COM method. ``vtbl_index`` is the
index into the virtual function table, a small nonnegative integer. *name* is
index into the virtual function table, a small non
-
negative integer. *name* is
name of the COM method. *iid* is an optional pointer to the interface identifier
name of the COM method. *iid* is an optional pointer to the interface identifier
which is used in extended error reporting.
which is used in extended error reporting.
...
@@ -1827,14 +1827,14 @@ Utility functions
...
@@ -1827,14 +1827,14 @@ Utility functions
.. function:: DllCanUnloadNow()
.. function:: DllCanUnloadNow()
Windows only: This function is a hook which allows to implement inprocess COM
Windows only: This function is a hook which allows to implement in
-
process COM
servers with ctypes. It is called from the DllCanUnloadNow function that the
servers with ctypes. It is called from the DllCanUnloadNow function that the
_ctypes extension dll exports.
_ctypes extension dll exports.
.. function:: DllGetClassObject()
.. function:: DllGetClassObject()
Windows only: This function is a hook which allows to implement inprocess COM
Windows only: This function is a hook which allows to implement in
-
process COM
servers with ctypes. It is called from the DllGetClassObject function that the
servers with ctypes. It is called from the DllGetClassObject function that the
``_ctypes`` extension dll exports.
``_ctypes`` extension dll exports.
...
@@ -1920,7 +1920,7 @@ Utility functions
...
@@ -1920,7 +1920,7 @@ Utility functions
Windows only: this function is probably the worst-named thing in ctypes. It
Windows only: this function is probably the worst-named thing in ctypes. It
creates an instance of WindowsError. If *code* is not specified,
creates an instance of WindowsError. If *code* is not specified,
``GetLastError`` is called to determine the error code. If ``descr`` is not
``GetLastError`` is called to determine the error code. If ``descr`` is not
spcified, :func:`FormatError` is called to get a textual description of the
sp
e
cified, :func:`FormatError` is called to get a textual description of the
error.
error.
...
@@ -1982,13 +1982,13 @@ Common instance variables of ctypes data types:
...
@@ -1982,13 +1982,13 @@ Common instance variables of ctypes data types:
Sometimes ctypes data instances do not own the memory block they contain,
Sometimes ctypes data instances do not own the memory block they contain,
instead they share part of the memory block of a base object. The
instead they share part of the memory block of a base object. The
:attr:`_b_base_` readonly member is the root ctypes object that owns the memory
:attr:`_b_base_` read
-
only member is the root ctypes object that owns the memory
block.
block.
.. attribute:: _CData._b_needsfree_
.. attribute:: _CData._b_needsfree_
This readonly variable is true when the ctypes data instance has allocated the
This read
-
only variable is true when the ctypes data instance has allocated the
memory block itself, false otherwise.
memory block itself, false otherwise.
...
@@ -2033,7 +2033,7 @@ converted to native Python types. In other words, if a foreign function has a
...
@@ -2033,7 +2033,7 @@ converted to native Python types. In other words, if a foreign function has a
:attr:`restype` of :class:`c_char_p`, you will always receive a Python string,
:attr:`restype` of :class:`c_char_p`, you will always receive a Python string,
*not* a :class:`c_char_p` instance.
*not* a :class:`c_char_p` instance.
Subclasses of fundamental data types do *not* inherit this behavio
u
r. So, if a
Subclasses of fundamental data types do *not* inherit this behavior. So, if a
foreign functions :attr:`restype` is a subclass of :class:`c_void_p`, you will
foreign functions :attr:`restype` is a subclass of :class:`c_void_p`, you will
receive an instance of this subclass from the function call. Of course, you can
receive an instance of this subclass from the function call. Of course, you can
get the value of the pointer by accessing the ``value`` attribute.
get the value of the pointer by accessing the ``value`` attribute.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment