MiniObject

class MiniObject(*args, **kwargs)
Constructors:

MiniObject()

Methods

class MiniObject
add_parent(parent: MiniObject) None

This adds parent as a parent for object. Having one ore more parents affects the writability of object: if a parent is not writable, object is also not writable, regardless of its refcount. object is only writable if all the parents are writable and its own refcount is exactly 1.

Note: This function does not take ownership of parent and also does not take an additional reference. It is the responsibility of the caller to remove the parent again at a later time.

Added in version 1.16.

Parameters:

parent – a parent MiniObject

get_qdata(quark: int) None

This function gets back user data pointers stored via set_qdata().

Parameters:

quark – A Quark, naming the user data pointer

is_writable() bool

If mini_object has the LOCKABLE flag set, check if the current EXCLUSIVE lock on object is the only one, this means that changes to the object will not be visible to any other object.

If the LOCKABLE flag is not set, check if the refcount of mini_object is exactly 1, meaning that no other reference exists to the object and that the object is therefore writable.

Modification of a mini-object should only be done after verifying that it is writable.

lock(flags: LockFlags) bool

Lock the mini-object with the specified access mode in flags.

Parameters:

flagsLockFlags

remove_parent(parent: MiniObject) None

This removes parent as a parent for object. See add_parent().

Added in version 1.16.

Parameters:

parent – a parent MiniObject

replace(newdata: MiniObject | None = None) tuple[bool, MiniObject]

Atomically modifies a pointer to point to a new mini-object. The reference count of olddata is decreased and the reference count of newdata is increased.

Either newdata and the value pointed to by olddata may be None.

Parameters:

newdata – pointer to new mini-object

set_qdata(quark: int, data: None, destroy: Callable[[None], None]) None

This sets an opaque, named pointer on a miniobject. The name is specified through a Quark (retrieved e.g. via quark_from_static_string()), and the pointer can be gotten back from the object with get_qdata() until the object is disposed. Setting a previously set user data pointer, overrides (frees) the old pointer set, using None as pointer essentially removes the data stored.

destroy may be specified which is called with data as argument when the object is disposed, or the data is being overwritten by a call to set_qdata() with the same quark.

Parameters:
  • quark – A Quark, naming the user data pointer

  • data – An opaque user data pointer

  • destroy – Function to invoke with data as argument, when data needs to be freed

take(newdata: MiniObject) tuple[bool, MiniObject]

Modifies a pointer to point to a new mini-object. The modification is done atomically. This version is similar to replace() except that it does not increase the refcount of newdata and thus takes ownership of newdata.

Either newdata and the value pointed to by olddata may be None.

Parameters:

newdata – pointer to new mini-object

unlock(flags: LockFlags) None

Unlock the mini-object with the specified access mode in flags.

Parameters:

flagsLockFlags

Fields

class MiniObject
copy

A copy function

dispose

A dispose function

flags

Extra flags.

free

The free function

lockstate

Atomic state of the locks

priv_pointer
priv_uint
refcount

Atomic refcount

type

The GType of the object