To better integrate with client programs, HarfBuzz's objects offer a "user data" mechanism that can be used to attach arbitrary data to the object. User-data attachment can be useful for tying the lifecycles of various pieces of data together, or for creating language bindings.
Each object type has a set_user_data()
method and a get_user_data()
method. The
set_user_data()
methods take a client-provided
key
and a pointer,
user_data
, pointing to the data itself. Once
the key-data pair has been attached to the object, the
get_user_data()
method can be called with
the key, returning the user_data
pointer.
The set_user_data()
methods also support an
optional destroy
callback. Client programs
can set the destroy
callback and receive
notification from HarfBuzz whenever the object is destructed.
Finally, each set_user_data()
method allows
the client program to set a replace
Boolean
indicating whether or not the function call should replace any
existing user_data
associated with the specified key.