Packages
vix
0.4.0
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.0
0.33.1
0.33.0
0.32.0
0.31.1
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.1
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.1
0.6.0
0.5.0
0.4.0
0.3.0
0.2.1
0.2.0
retired
0.1.0
NIF based bindings for libvips
Current section
Files
Jump to
Current section
Files
c_src/utils.h
#ifndef VIX_UTILS_H
#define VIX_UTILS_H
#include "erl_nif.h"
#include <stdbool.h>
/* #define DEBUG */
#ifdef DEBUG
#define debug(...) \
do { \
enif_fprintf(stderr, "%s:%d\t(fn \"%s\") - ", __FILE__, __LINE__, \
__func__); \
enif_fprintf(stderr, __VA_ARGS__); \
enif_fprintf(stderr, "\n"); \
} while (0)
#define start_timing() ErlNifTime __start = enif_monotonic_time(ERL_NIF_USEC)
#define elapsed_microseconds() (enif_monotonic_time(ERL_NIF_USEC) - __start)
#else
#define debug(...)
#define start_timing()
#define elapsed_microseconds() 0
#endif
#define error(...) \
do { \
enif_fprintf(stderr, "%s:%d\t(fn: \"%s\") - ", __FILE__, __LINE__, \
__func__); \
enif_fprintf(stderr, __VA_ARGS__); \
enif_fprintf(stderr, "\n"); \
} while (0)
#define assert_argc(argc, count) \
if (argc != count) { \
error("number of arguments must be %d", count); \
return enif_make_badarg(env); \
}
typedef struct _VixResult {
bool is_success;
ERL_NIF_TERM result;
} VixResult;
extern ERL_NIF_TERM ATOM_OK;
extern ERL_NIF_TERM ATOM_ERROR;
extern ERL_NIF_TERM ATOM_NIL;
extern ERL_NIF_TERM ATOM_TRUE;
extern ERL_NIF_TERM ATOM_FALSE;
ERL_NIF_TERM raise_exception(ErlNifEnv *env, const char *msg);
ERL_NIF_TERM raise_badarg(ErlNifEnv *env, const char *reason);
ERL_NIF_TERM make_ok(ErlNifEnv *env, ERL_NIF_TERM term);
ERL_NIF_TERM make_error(ErlNifEnv *env, const char *reason);
ERL_NIF_TERM make_atom(ErlNifEnv *env, const char *name);
VixResult vix_error(ErlNifEnv *env, const char *reason);
VixResult vix_result(ERL_NIF_TERM term);
int utils_init(ErlNifEnv *env);
void notify_consumed_timeslice(ErlNifEnv *env, ErlNifTime start,
ErlNifTime stop);
#endif