class SimplePointerList(ModifiableMixIn):
Known subclasses: pyzim.pointerlist.OnDiskSimplePointerList, pyzim.pointerlist.OrderedPointerList
Constructor: SimplePointerList(pointers)
A pointer list of a ZIM file.
A simple pointer list maps an index to a pointer.
| Class Method | from |
Load a pointer list from the provided bytestring |
| Class Method | from |
Load a pointer list from a file. |
| Class Method | from |
Load a pointer list from an entry inside a ZIM archive. |
| Class Method | from |
Load a pointer list from a ZIM file at the specified offset. |
| Class Method | new |
Instantiate a new, empty pointerlist. |
| Method | __getitem__ |
Get the pointer at the specified index. |
| Method | __init__ |
The default constructor. |
| Method | __len__ |
The length of this pointer list. |
| Method | append |
Append a pointer to the end of pointerlist. |
| Method | get |
Return the pointer for the specified index. |
| Method | get |
Return the index of pointer in this list. |
| Method | get |
Calculate the size of this object when written to a file. |
| Method | iter |
Iterate over all pointers in this pointer list. |
| Method | mass |
Perform a mass update on all pointers in the specified range, changing their value as specified. |
| Method | remove |
Remove the pointer at the specified index. |
| Method | set |
Set the pointer at the specified index. |
| Method | to |
Dump this pointer list into a bytestring and return it. |
| Constant | POINTER |
format of a single pointer |
| Instance Variable | _lock |
Undocumented |
| Instance Variable | _pointers |
list of pointers in this pointer list |
Inherited from ModifiableMixIn:
| Method | add |
Add another modifiable object as a child of this one. |
| Method | after |
This method should be called after this object has been read and/or flushed to disk. In other words, it should be called at least once whenever this object matches the state of the object on the disk. |
| Method | dirty |
Setter for ModifiableMixIn.dirty |
| Method | ensure |
If this object is non-mutable, raise an Exception. |
| Method | get |
Return the size of this object on disk as it has been read. |
| Method | get |
Return the size of this object when written to a file before any modifications has been made since the last read/flush. |
| Method | mark |
Convenience function to mark this object as dirty. |
| Method | remove |
Remove a submodifiable from this object. |
| Instance Variable | dirty |
True if this object or a sub-modifiable has been modified. |
| Instance Variable | mutable |
if not nonzero, prevent modifications of this object. |
| Instance Variable | _dirty |
a boolean flag that's nonzero if this object has been modified |
| Instance Variable | _old |
the size of this object on disk before any modifications since the last flush/read |
| Instance Variable | _submodifiables |
a list of child objects, whose dirty state will affect this objects dirty state. |
Load a pointer list from the provided bytestring
NOTE: it is not possible to validate that the string contains the whole pointer list.
| Parameters | |
s:bytes | bytestring to parse |
| Returns | |
pyzim.pointerlist.SimplePointerList | the pointerlist parsed from the bytes |
Load a pointer list from a file.
| Parameters | |
| f:file-like | file-like object to read from |
n:int | number of entries in the pointer list. |
seek:int or None | if specified, seek this position of the file before reading |
| Returns | |
pyzim.pointerlist.SimplePointerList | the pointerlist read from the file |
Load a pointer list from an entry inside a ZIM archive.
NOTE: it is not possible to validate that the string contains the whole pointer list.
| Parameters | |
zim:pyzim.archive.Zim | ZIM file to read from |
fullstr | full url of entry to read pointerlist from |
| Returns | |
pyzim.pointerlist.SimplePointerList | the pointerlist parsed from the bytes |
Load a pointer list from a ZIM file at the specified offset.
This usually acquires the file lock and calls SimplePointerList.from_file, but subclasses may behave differently.
| Parameters | |
zim:pyzim.archive.Zim | ZIM file to read from |
n:int | number of entries in the pointer list. |
seek:int or None | if specified, seek this position of the file before reading |
| Returns | |
pyzim.pointerlist.SimplePointerList | the pointerlist read from the file |
Get the pointer at the specified index.
This is basically just a wrapper around SimplePointerList.get_by_index.
| Parameters | |
i:int | index of pointer to get |
| Returns | |
int | the poiner with the specified index |
| Raises | |
IndexError | when the index is out of bounds. |
pyzim.pointerlist.OnDiskSimplePointerListThe length of this pointer list.
| Returns | |
int | the length of this pointer list |
Append a pointer to the end of pointerlist.
If you are working with a pyzim.pointerlist.OrderedPointerList, you will not want to use this method. Instead, use pyzim.pointerlist.OrderedPointerList.add, which correctly inserts the pointer.
| Parameters | |
pointer:int | pointer to add |
| Raises | |
pyzim.exceptions.NonMutable | if pointer list is not mutable |
pyzim.pointerlist.OnDiskSimplePointerListReturn the pointer for the specified index.
| Parameters | |
i:int | index of pointer to get |
| Returns | |
int | the poiner with the specified index |
| Raises | |
IndexError | when the index is out of bounds. |
Calculate the size of this object when written to a file.
NOTE: in this context, size refers to the direct size of the object. If this object contains references to other objects, their sizes will not be included. For example, a pyzim.entry.ContentEntry also links to a blob, but this function will only return the size of the entry itself, excluding the referenced blob.
| Returns | |
int | the size, in bytes |
Iterate over all pointers in this pointer list.
If start and end are specified, they reference the indexes of the first (inclusive) and last (exclusive) pointers to return. In other words, this behavior matches the l[start:end] syntax.
| Parameters | |
start:int | index of first pointer to return (inclusive) |
end:int | index of last pointer to return (exclusive) |
| Yields | |
int | the pointers in the specified range |
Perform a mass update on all pointers in the specified range, changing their value as specified.
Each pointer is changed by the 'diff' value.
IMPORTANT: Unlike SimplePointerList.iter_pointers, start and end of this method refer to the pointer values, not the indexes.
If start and end are specified, they reference the pointers of the first (inclusive) and last (exclusive) pointers to modify. In other words, this behavior matches the l[start:end] syntax.
| Parameters | |
diff:int | value to add to each pointer |
start:int | min values of pointers to modify (inclusive) |
end:int | max values of pointers to modify (exclusive) |
Remove the pointer at the specified index.
| Parameters | |
i:int | index of pointer to remove |
| Raises | |
IndexError | on invalid index |
Set the pointer at the specified index.
If i == len(self), append the pointer. IF i > len(self), this will raise a IndexError, unless you also set add_placeholders = True.
If you are working with a pyzim.pointerlist.OrderedPointerList, you will not want to use this method. Instead, use pyzim.pointerlist.OrderedPointerList.add, which correctly inserts the pointer.
| Parameters | |
| i:l{int} | position of pointer to set |
pointer:int | new value for pointer |
addbool | if nonzero, allow setting i>len(self), adding placeholders |
| Raises | |
IndexError | on invalid index |
pyzim.exceptions.NonMutable | if pointer list is not mutable |
Dump this pointer list into a bytestring and return it.
| Returns | |
bytes | a bytestring describing this pointer list |