File SharedPtr.h

File List > engine > include > SharedPtr.h

Go to the documentation of this file

#ifndef  SHAREDPTR_H
#define SHAREDPTR_H


//called just before the memory is freed
#include <stddef.h>
#include "IntTypes.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef void(*SharedPtrDestuctorFn)(void* data);

void* Sptr_New(size_t size, SharedPtrDestuctorFn dtor);

void Sptr_AddRef(void* pointer);

void Sptr_RemoveRef(void* pointer);

i64 Sptr_GetRefCount(void* pointer);

#define SHARED_PTR(p) p*

#define SHARED_PTR_NEW(a, dtor) Sptr_New(sizeof(a), dtor)


#ifdef __cplusplus
}
#endif

#endif // ! SHAREDPTR_H