Skip to content

Commit

Permalink
gh-127255: Make CopyComPointer public and add to ctypes doc. (GH-…
Browse files Browse the repository at this point in the history
  • Loading branch information
junkmd authored Dec 3, 2024
1 parent 979bf24 commit 412e11f
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 4 deletions.
18 changes: 18 additions & 0 deletions Doc/library/ctypes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1949,6 +1949,24 @@ Utility functions
It behaves similar to ``pointer(obj)``, but the construction is a lot faster.


.. function:: CopyComPointer(src, dst)

Copies a COM pointer from *src* to *dst* and returns the Windows specific
:c:type:`!HRESULT` value.

If *src* is not ``NULL``, its ``AddRef`` method is called, incrementing the
reference count.

In contrast, the reference count of *dst* will not be decremented before
assigning the new value. Unless *dst* is ``NULL``, the caller is responsible
for decrementing the reference count by calling its ``Release`` method when
necessary.

.. availability:: Windows

.. versionadded:: next


.. function:: cast(obj, type)

This function is similar to the cast operator in C. It returns a new instance
Expand Down
5 changes: 4 additions & 1 deletion Doc/whatsnew/3.14.rst
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,12 @@ ctypes
to help match a non-default ABI.
(Contributed by Petr Viktorin in :gh:`97702`.)

* The :exc:`~ctypes.COMError` exception is now public.
* On Windows, the :exc:`~ctypes.COMError` exception is now public.
(Contributed by Jun Komoda in :gh:`126686`.)

* On Windows, the :func:`~ctypes.CopyComPointer` function is now public.
(Contributed by Jun Komoda in :gh:`127275`.)

datetime
--------

Expand Down
2 changes: 1 addition & 1 deletion Lib/ctypes/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
raise Exception("Version number mismatch", __version__, _ctypes_version)

if _os.name == "nt":
from _ctypes import COMError, FormatError
from _ctypes import COMError, CopyComPointer, FormatError

DEFAULT_MODE = RTLD_LOCAL
if _os.name == "posix" and _sys.platform == "darwin":
Expand Down
3 changes: 1 addition & 2 deletions Lib/test/test_ctypes/test_win32_com_foreign_func.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
raise unittest.SkipTest("Windows-specific test")


from _ctypes import COMError, CopyComPointer
from ctypes import HRESULT
from ctypes import COMError, CopyComPointer, HRESULT


COINIT_APARTMENTTHREADED = 0x2
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
The :func:`~ctypes.CopyComPointer` function is now public.
Previously, this was private and only available in ``_ctypes``.

0 comments on commit 412e11f

Please sign in to comment.