Stardew Engine
Loading...
Searching...
No Matches
SharedPtr.h
Go to the documentation of this file.
1#ifndef SHAREDPTR_H
2#define SHAREDPTR_H
3
4
5//called just before the memory is freed
6#include <stddef.h>
7#include "IntTypes.h"
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13typedef void(*SharedPtrDestuctorFn)(void* data);
14
15void* Sptr_New(size_t size, SharedPtrDestuctorFn dtor);
16
17void Sptr_AddRef(void* pointer);
18
19void Sptr_RemoveRef(void* pointer);
20
21i64 Sptr_GetRefCount(void* pointer);
22
23#define SHARED_PTR(p) p*
24
25#define SHARED_PTR_NEW(a, dtor) Sptr_New(sizeof(a), dtor)
26
27
28#ifdef __cplusplus
29}
30#endif
31
32#endif // ! SHAREDPTR_H
int64_t i64
Definition IntTypes.h:16
void * Sptr_New(size_t size, SharedPtrDestuctorFn dtor)
Definition SharedPtr.c:19
i64 Sptr_GetRefCount(void *pointer)
Definition SharedPtr.c:33
void Sptr_RemoveRef(void *pointer)
Definition SharedPtr.c:39
void Sptr_AddRef(void *pointer)
Definition SharedPtr.c:27
void(* SharedPtrDestuctorFn)(void *data)
Definition SharedPtr.h:13