VLC 4.0.0-dev
Loading...
Searching...
No Matches
objres.c File Reference
Include dependency graph for objres.c:

Data Structures

struct  vlc_res

Functions

static struct vlc_res ** vlc_obj_res (vlc_object_t *obj)
void * vlc_objres_new (size_t size, void(*release)(void *))
 Allocates an object resource.
void vlc_objres_push (vlc_object_t *obj, void *data)
 Pushes an object resource on the object resources stack.
static void * vlc_objres_pop (vlc_object_t *obj)
void vlc_objres_clear (vlc_object_t *obj)
 Releases all resources of an object.
void vlc_objres_remove (vlc_object_t *obj, void *data, bool(*match)(void *, void *))
 Releases one object resource explicitly.
static void dummy_release (void *data)
static bool ptrcmp (void *a, void *b)
void * vlc_obj_malloc (vlc_object_t *obj, size_t size)
 Allocates memory for a module.
void * vlc_obj_calloc (vlc_object_t *obj, size_t nmemb, size_t size)
 Allocates a zero-initialized table for a module.
static void * vlc_obj_memdup (vlc_object_t *obj, const void *base, size_t len)
char * vlc_obj_strdup (vlc_object_t *obj, const char *str)
 Duplicates a string for a module.
void vlc_obj_free (vlc_object_t *obj, void *ptr)
 Manually frees module memory.

Function Documentation

◆ dummy_release()

void dummy_release ( void * data)
static

Referenced by vlc_obj_malloc().

◆ ptrcmp()

bool ptrcmp ( void * a,
void * b )
static

Referenced by vlc_obj_free().

◆ vlc_obj_memdup()

void * vlc_obj_memdup ( vlc_object_t * obj,
const void * base,
size_t len )
static

References likely, and vlc_obj_malloc.

Referenced by vlc_obj_strdup().

◆ vlc_obj_res()

struct vlc_res ** vlc_obj_res ( vlc_object_t * obj)
static

◆ vlc_objres_clear()

◆ vlc_objres_new()

void * vlc_objres_new ( size_t size,
void(* release )(void *) )

Allocates an object resource.

Parameters
sizestorage size in bytes of the resource data
releasecallback to release the resource
Returns
a pointer to the (uninitialized) storage space, or NULL on error

References vlc_res::payload, vlc_res::release, and unlikely.

Referenced by vlc_obj_malloc().

◆ vlc_objres_pop()

void * vlc_objres_pop ( vlc_object_t * obj)
static

◆ vlc_objres_push()

void vlc_objres_push ( vlc_object_t * obj,
void * data )

Pushes an object resource on the object resources stack.

Parameters
objobject to allocate the resource for
dataresource base address (as returned by vlc_objres_new())

References container_of, vlc_res::payload, vlc_res::prev, and vlc_obj_res().

Referenced by vlc_obj_malloc().

◆ vlc_objres_remove()

void vlc_objres_remove ( vlc_object_t * obj,
void * data,
bool(* match )(void *, void *) )

Releases one object resource explicitly.

If a resource associated with an object needs to be released explicitly earlier than normal, call this function. This is relatively slow and should be avoided.

Parameters
objobject whose resource to release
dataprivate data for the comparison function
matchcomparison function to match the targeted resource

References vlc_res::payload, vlc_res::prev, vlc_res::release, and vlc_obj_res().

Referenced by vlc_obj_free().