Real pointers and some memory utilities for python
Project description
pyptrs
This library provides real pointers (as in languages like C) and some memory access utilites.
Installation
pip install pyptrs
Creating A Pointer
You should never create pointers directly. Instead, use the functions below:
pyptrs.pointer_to_object(obj, c_object = False)
Return a pointer to obj. c_object specifies whether to treat the obj as a python object or a C object. If c_object is True, obj must be an instance of a ctypes C data type. You can learn more information about these data types from here, here and here
pyptrs.pointer_to_address(address, ctype = None)
Return a pointer that points to the given address. If ctype is None, a python object is assumed to be living in that address. Otherwise, ctype must be ctypes C data type. You can learn more information about these data types from here, here and here
Pointer Objects
Pointer.get_size()
Return the number of bytes occupied by the pointed object in memory.
Pointer.get_mem()
Return a bytes object representing the pointed object.
Pointer.temp_value(value, force_write = False)
Dereference and assign value to the pointed object, then return a context manager that reverts this assignment at exit. If size of value is bigger than the pointed object, a MemoryError will be raised. In order to prevent this, pass True to force_write.
Simulated Operators
pyptrs.dereference(pointer, *value, force_write = False)
If value is not given, it just dereferences the pointer. If value is given, it must be a single argument and it dereferences the pointed object and assigns value to it then returns a backup_id that can be passed to pyptrs.mem_restore(). If size of value is bigger than the pointed object, a MemoryError will be raised. In order to prevent this, pass True to force_write. Type of value can be anything if the pointed object is a python object. If the type of the pointed object is a C type, type of value must be the corresponding ctypes C data type.
pyptrs.address_of(obj, c_object = False)
Return address of the obj. If c_object is True type of obj must be a ctypes C data type. You can learn more information about these data types from here, here and here If c_object is True, address of the actual C object is returned, not the address of its ctypes wrapper.
Utils
pyptrs.mem_read(address, amount = 1)
Read amount bytes starting from address and return them as a bytes object.
pyptrs.mem_write(address, data = b"")
Write the bytes represented by data to address and return a backup_id that can be passed to pyptrs.mem_restore().
pyptrs.mem_restore(backup_id)
Revert the changes done to memory by the function that returned backup_id.
pyptrs.mem_restore_last()
Revert the last change done to memory either by pyptrs.dereference() or pyptrs.mem_write().
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyptrs-1.0.0.post1.tar.gz.
File metadata
- Download URL: pyptrs-1.0.0.post1.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b8a65975dd90bb08f47300dce65c60098e53048d88c0f362885bd697f4e2aa2
|
|
| MD5 |
f2419d9a0e4f6d4b3e38e81e27585913
|
|
| BLAKE2b-256 |
099d036269f3c68d351f2e2bdfd87bd927d84d5a4201953807be80ef137ab0d9
|
File details
Details for the file pyptrs-1.0.0.post1-py2.py3-none-any.whl.
File metadata
- Download URL: pyptrs-1.0.0.post1-py2.py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a810498bd4fe7bdd8140cb57786cc383ae76ee508449e03ab8008d3ca4f682d6
|
|
| MD5 |
d2e963affb06a0e23b72a946db32c0da
|
|
| BLAKE2b-256 |
c68f1afd96c5f5ee1eee4044b039051f4bf89e7dd07e8be5a79632977d76659d
|