PokerUnicorn
Loading...
Searching...
No Matches
ref.h File Reference
#include <stdio.h>
#include <pthread.h>
#include "../include/util.h"

Go to the source code of this file.

Data Structures

struct  pkrsrv_ref_counted_t
 Reference-counted object structure. More...
 
struct  pkrsrv_ref_t
 

Macros

#define _GNU_SOURCE
 
#define PKRSRV_REF_COUNTEDIFY()    pkrsrv_ref_counted_t ref_counted;
 Makes a structure reference-counted.
 
#define PKRSRV_REF_BY(name)   name##_ref
 
#define PKRSRV_REF(type, name)
 
#define PKRSRV_REF_NEW(path, expr)
 
#define PKRSRV_REF_ASSIGN(var, val)
 
#define PKRSRV_REF_SET(ref, obj)
 
#define PKRSRV_REF_USE(name)   pkrsrv_ref_use(PKRSRV_REF_BY(name));
 
#define PKRSRV_REF_LEAVE(name)   pkrsrv_ref_leave(&(PKRSRV_REF_BY(name)));
 
#define PKRSRV_REF_ARG(type, name)   type name, pkrsrv_ref_t* name##_ref
 
#define PKRSRV_REF_PASS(name)   pkrsrv_ref_new((void *) name, &(name->ref_counted));
 

Typedefs

typedef void(* pkrsrv_ref_free_f_t) (void *)
 

Functions

pkrsrv_ref_t * pkrsrv_ref_new (void *obj, pkrsrv_ref_counted_t *ref_counted)
 
void pkrsrv_ref_free (pkrsrv_ref_t *ref)
 
void pkrsrv_ref_use (pkrsrv_ref_t *ref)
 
void pkrsrv_ref_leave (pkrsrv_ref_t **ref)
 
void pkrsrv_ref_assign (pkrsrv_ref_t **dst, pkrsrv_ref_t **src)
 
void pkrsrv_ref_set (pkrsrv_ref_t *ref, void *obj)
 

Data Structure Documentation

◆ pkrsrv_ref

struct pkrsrv_ref
Data Fields
int count
void * obj
pkrsrv_ref_counted_t * ref_counted

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

◆ PKRSRV_REF_BY

#define PKRSRV_REF_BY ( name)    name##_ref

◆ PKRSRV_REF

#define PKRSRV_REF ( type,
name )
Value:
type name; \
pkrsrv_ref_t* PKRSRV_REF_BY(name);
#define PKRSRV_REF_BY(name)
Definition ref.h:72

◆ PKRSRV_REF_NEW

#define PKRSRV_REF_NEW ( path,
expr )
Value:
path = expr; \
PKRSRV_REF_BY(path) = pkrsrv_ref_new((void *) path, &(path->ref_counted));
pkrsrv_ref_t * pkrsrv_ref_new(void *obj, pkrsrv_ref_counted_t *ref_counted)

◆ PKRSRV_REF_ASSIGN

#define PKRSRV_REF_ASSIGN ( var,
val )
Value:
var = val;
void pkrsrv_ref_assign(pkrsrv_ref_t **dst, pkrsrv_ref_t **src)

◆ PKRSRV_REF_SET

#define PKRSRV_REF_SET ( ref,
obj )
Value:
ref = obj; \
pkrsrv_ref_set(PKRSRV_REF_BY(ref), (void *) (ref));

◆ PKRSRV_REF_USE

#define PKRSRV_REF_USE ( name)    pkrsrv_ref_use(PKRSRV_REF_BY(name));

◆ PKRSRV_REF_LEAVE

#define PKRSRV_REF_LEAVE ( name)    pkrsrv_ref_leave(&(PKRSRV_REF_BY(name)));

◆ PKRSRV_REF_ARG

#define PKRSRV_REF_ARG ( type,
name )   type name, pkrsrv_ref_t* name##_ref

◆ PKRSRV_REF_PASS

#define PKRSRV_REF_PASS ( name)    pkrsrv_ref_new((void *) name, &(name->ref_counted));

Typedef Documentation

◆ pkrsrv_ref_free_f_t

typedef void(* pkrsrv_ref_free_f_t) (void *)

Function Documentation

◆ pkrsrv_ref_new()

pkrsrv_ref_t * pkrsrv_ref_new ( void * obj,
pkrsrv_ref_counted_t * ref_counted )

◆ pkrsrv_ref_free()

void pkrsrv_ref_free ( pkrsrv_ref_t * ref)

◆ pkrsrv_ref_use()

void pkrsrv_ref_use ( pkrsrv_ref_t * ref)

◆ pkrsrv_ref_leave()

void pkrsrv_ref_leave ( pkrsrv_ref_t ** ref)

◆ pkrsrv_ref_assign()

void pkrsrv_ref_assign ( pkrsrv_ref_t ** dst,
pkrsrv_ref_t ** src )

◆ pkrsrv_ref_set()

void pkrsrv_ref_set ( pkrsrv_ref_t * ref,
void * obj )