1 /*
2  * %CopyrightBegin%
3  *
4  * Copyright Ericsson AB 2009-2017. All Rights Reserved.
5  *
6  * The contents of this file are subject to the Erlang Public License,
7  * Version 1.1, (the "License"); you may not use this file except in
8  * compliance with the License. You should have received a copy of the
9  * Erlang Public License along with this software. If not, it can be
10  * retrieved online at http://www.erlang.org/.
11  *
12  * Software distributed under the License is distributed on an "AS IS"
13  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
14  * the License for the specific language governing rights and limitations
15  * under the License.
16  *
17  * %CopyrightEnd%
18  */
19 
20 #if !defined(ERL_NIF_API_FUNC_DECL) && !defined(ERL_NIF_API_FUNC_MACRO)
21 #  error This file should not be included directly
22 #endif
23 
24 #ifdef ERL_NIF_API_FUNC_DECL
25 ERL_NIF_API_FUNC_DECL(void*,enif_priv_data,(ErlNifEnv*));
26 ERL_NIF_API_FUNC_DECL(void*,enif_alloc,(size_t size));
27 ERL_NIF_API_FUNC_DECL(void,enif_free,(void* ptr));
28 ERL_NIF_API_FUNC_DECL(int,enif_is_atom,(ErlNifEnv*, ERL_NIF_TERM term));
29 ERL_NIF_API_FUNC_DECL(int,enif_is_binary,(ErlNifEnv*, ERL_NIF_TERM term));
30 ERL_NIF_API_FUNC_DECL(int,enif_is_ref,(ErlNifEnv*, ERL_NIF_TERM term));
31 ERL_NIF_API_FUNC_DECL(int,enif_inspect_binary,(ErlNifEnv*, ERL_NIF_TERM bin_term, ErlNifBinary* bin));
32 ERL_NIF_API_FUNC_DECL(int,enif_alloc_binary,(size_t size, ErlNifBinary* bin));
33 ERL_NIF_API_FUNC_DECL(int,enif_realloc_binary,(ErlNifBinary* bin, size_t size));
34 ERL_NIF_API_FUNC_DECL(void,enif_release_binary,(ErlNifBinary* bin));
35 ERL_NIF_API_FUNC_DECL(int,enif_get_int,(ErlNifEnv*, ERL_NIF_TERM term, int* ip));
36 ERL_NIF_API_FUNC_DECL(int,enif_get_ulong,(ErlNifEnv*, ERL_NIF_TERM term, unsigned long* ip));
37 ERL_NIF_API_FUNC_DECL(int,enif_get_double,(ErlNifEnv*, ERL_NIF_TERM term, double* dp));
38 ERL_NIF_API_FUNC_DECL(int,enif_get_list_cell,(ErlNifEnv* env, ERL_NIF_TERM term, ERL_NIF_TERM* head, ERL_NIF_TERM* tail));
39 ERL_NIF_API_FUNC_DECL(int,enif_get_tuple,(ErlNifEnv* env, ERL_NIF_TERM tpl, int* arity, const ERL_NIF_TERM** array));
40 ERL_NIF_API_FUNC_DECL(int,enif_is_identical,(ERL_NIF_TERM lhs, ERL_NIF_TERM rhs));
41 ERL_NIF_API_FUNC_DECL(int,enif_compare,(ERL_NIF_TERM lhs, ERL_NIF_TERM rhs));
42 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_binary,(ErlNifEnv* env, ErlNifBinary* bin));
43 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_badarg,(ErlNifEnv* env));
44 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_int,(ErlNifEnv* env, int i));
45 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_ulong,(ErlNifEnv* env, unsigned long i));
46 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_double,(ErlNifEnv* env, double d));
47 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_atom,(ErlNifEnv* env, const char* name));
48 ERL_NIF_API_FUNC_DECL(int,enif_make_existing_atom,(ErlNifEnv* env, const char* name, ERL_NIF_TERM* atom, ErlNifCharEncoding));
49 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_tuple,(ErlNifEnv* env, unsigned cnt, ...));
50 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list,(ErlNifEnv* env, unsigned cnt, ...));
51 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list_cell,(ErlNifEnv* env, ERL_NIF_TERM car, ERL_NIF_TERM cdr));
52 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_string,(ErlNifEnv* env, const char* string, ErlNifCharEncoding));
53 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_ref,(ErlNifEnv* env));
54 
55 ERL_NIF_API_FUNC_DECL(ErlNifMutex*,enif_mutex_create,(char *name));
56 ERL_NIF_API_FUNC_DECL(void,enif_mutex_destroy,(ErlNifMutex *mtx));
57 ERL_NIF_API_FUNC_DECL(int,enif_mutex_trylock,(ErlNifMutex *mtx));
58 ERL_NIF_API_FUNC_DECL(void,enif_mutex_lock,(ErlNifMutex *mtx));
59 ERL_NIF_API_FUNC_DECL(void,enif_mutex_unlock,(ErlNifMutex *mtx));
60 ERL_NIF_API_FUNC_DECL(ErlNifCond*,enif_cond_create,(char *name));
61 ERL_NIF_API_FUNC_DECL(void,enif_cond_destroy,(ErlNifCond *cnd));
62 ERL_NIF_API_FUNC_DECL(void,enif_cond_signal,(ErlNifCond *cnd));
63 ERL_NIF_API_FUNC_DECL(void,enif_cond_broadcast,(ErlNifCond *cnd));
64 ERL_NIF_API_FUNC_DECL(void,enif_cond_wait,(ErlNifCond *cnd, ErlNifMutex *mtx));
65 ERL_NIF_API_FUNC_DECL(ErlNifRWLock*,enif_rwlock_create,(char *name));
66 ERL_NIF_API_FUNC_DECL(void,enif_rwlock_destroy,(ErlNifRWLock *rwlck));
67 ERL_NIF_API_FUNC_DECL(int,enif_rwlock_tryrlock,(ErlNifRWLock *rwlck));
68 ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rlock,(ErlNifRWLock *rwlck));
69 ERL_NIF_API_FUNC_DECL(void,enif_rwlock_runlock,(ErlNifRWLock *rwlck));
70 ERL_NIF_API_FUNC_DECL(int,enif_rwlock_tryrwlock,(ErlNifRWLock *rwlck));
71 ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rwlock,(ErlNifRWLock *rwlck));
72 ERL_NIF_API_FUNC_DECL(void,enif_rwlock_rwunlock,(ErlNifRWLock *rwlck));
73 ERL_NIF_API_FUNC_DECL(int,enif_tsd_key_create,(char *name, ErlNifTSDKey *key));
74 ERL_NIF_API_FUNC_DECL(void,enif_tsd_key_destroy,(ErlNifTSDKey key));
75 ERL_NIF_API_FUNC_DECL(void,enif_tsd_set,(ErlNifTSDKey key, void *data));
76 ERL_NIF_API_FUNC_DECL(void*,enif_tsd_get,(ErlNifTSDKey key));
77 ERL_NIF_API_FUNC_DECL(ErlNifThreadOpts*,enif_thread_opts_create,(char *name));
78 ERL_NIF_API_FUNC_DECL(void,enif_thread_opts_destroy,(ErlNifThreadOpts *opts));
79 ERL_NIF_API_FUNC_DECL(int,enif_thread_create,(char *name,ErlNifTid *tid,void * (*func)(void *),void *args,ErlNifThreadOpts *opts));
80 ERL_NIF_API_FUNC_DECL(ErlNifTid,enif_thread_self,(void));
81 ERL_NIF_API_FUNC_DECL(int,enif_equal_tids,(ErlNifTid tid1, ErlNifTid tid2));
82 ERL_NIF_API_FUNC_DECL(void,enif_thread_exit,(void *resp));
83 ERL_NIF_API_FUNC_DECL(int,enif_thread_join,(ErlNifTid, void **respp));
84 
85 ERL_NIF_API_FUNC_DECL(void*,enif_realloc,(void* ptr, size_t size));
86 ERL_NIF_API_FUNC_DECL(void,enif_system_info,(ErlNifSysInfo *sip, size_t si_size));
87 ERL_NIF_API_FUNC_DECL(int,enif_fprintf,(void/* FILE* */ *filep, const char *format, ...));
88 ERL_NIF_API_FUNC_DECL(int,enif_inspect_iolist_as_binary,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifBinary* bin));
89 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_sub_binary,(ErlNifEnv*, ERL_NIF_TERM bin_term, size_t pos, size_t size));
90 ERL_NIF_API_FUNC_DECL(int,enif_get_string,(ErlNifEnv*, ERL_NIF_TERM list, char* buf, unsigned len, ErlNifCharEncoding));
91 ERL_NIF_API_FUNC_DECL(int,enif_get_atom,(ErlNifEnv*, ERL_NIF_TERM atom, char* buf, unsigned len, ErlNifCharEncoding));
92 ERL_NIF_API_FUNC_DECL(int,enif_is_fun,(ErlNifEnv*, ERL_NIF_TERM term));
93 ERL_NIF_API_FUNC_DECL(int,enif_is_pid,(ErlNifEnv*, ERL_NIF_TERM term));
94 ERL_NIF_API_FUNC_DECL(int,enif_is_port,(ErlNifEnv*, ERL_NIF_TERM term));
95 ERL_NIF_API_FUNC_DECL(int,enif_get_uint,(ErlNifEnv*, ERL_NIF_TERM term, unsigned* ip));
96 ERL_NIF_API_FUNC_DECL(int,enif_get_long,(ErlNifEnv*, ERL_NIF_TERM term, long* ip));
97 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_uint,(ErlNifEnv*, unsigned i));
98 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_long,(ErlNifEnv*, long i));
99 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_tuple_from_array,(ErlNifEnv*, const ERL_NIF_TERM arr[], unsigned cnt));
100 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_list_from_array,(ErlNifEnv*, const ERL_NIF_TERM arr[], unsigned cnt));
101 ERL_NIF_API_FUNC_DECL(int,enif_is_empty_list,(ErlNifEnv*, ERL_NIF_TERM term));
102 ERL_NIF_API_FUNC_DECL(ErlNifResourceType*,enif_open_resource_type,(ErlNifEnv*, const char* module_str, const char* name_str, void (*dtor)(ErlNifEnv*,void *), ErlNifResourceFlags flags, ErlNifResourceFlags* tried));
103 ERL_NIF_API_FUNC_DECL(void*,enif_alloc_resource,(ErlNifResourceType* type, size_t size));
104 ERL_NIF_API_FUNC_DECL(void,enif_release_resource,(void* obj));
105 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_resource,(ErlNifEnv*, void* obj));
106 ERL_NIF_API_FUNC_DECL(int,enif_get_resource,(ErlNifEnv*, ERL_NIF_TERM term, ErlNifResourceType* type, void** objp));
107 ERL_NIF_API_FUNC_DECL(size_t,enif_sizeof_resource,(void* obj));
108 ERL_NIF_API_FUNC_DECL(unsigned char*,enif_make_new_binary,(ErlNifEnv*,size_t size,ERL_NIF_TERM* termp));
109 ERL_NIF_API_FUNC_DECL(int,enif_is_list,(ErlNifEnv*, ERL_NIF_TERM term));
110 ERL_NIF_API_FUNC_DECL(int,enif_is_tuple,(ErlNifEnv*, ERL_NIF_TERM term));
111 ERL_NIF_API_FUNC_DECL(int,enif_get_atom_length,(ErlNifEnv*, ERL_NIF_TERM atom, unsigned* len, ErlNifCharEncoding));
112 ERL_NIF_API_FUNC_DECL(int,enif_get_list_length,(ErlNifEnv* env, ERL_NIF_TERM term, unsigned* len));
113 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM, enif_make_atom_len,(ErlNifEnv* env, const char* name, size_t len));
114 ERL_NIF_API_FUNC_DECL(int, enif_make_existing_atom_len,(ErlNifEnv* env, const char* name, size_t len, ERL_NIF_TERM* atom, ErlNifCharEncoding));
115 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_string_len,(ErlNifEnv* env, const char* string, size_t len, ErlNifCharEncoding));
116 ERL_NIF_API_FUNC_DECL(ErlNifEnv*,enif_alloc_env,(void));
117 ERL_NIF_API_FUNC_DECL(void,enif_free_env,(ErlNifEnv* env));
118 ERL_NIF_API_FUNC_DECL(void,enif_clear_env,(ErlNifEnv* env));
119 ERL_NIF_API_FUNC_DECL(int,enif_send,(ErlNifEnv* env, const ErlNifPid* to_pid, ErlNifEnv* msg_env, ERL_NIF_TERM msg));
120 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_copy,(ErlNifEnv* dst_env, ERL_NIF_TERM src_term));
121 ERL_NIF_API_FUNC_DECL(ErlNifPid*,enif_self,(ErlNifEnv* caller_env, ErlNifPid* pid));
122 ERL_NIF_API_FUNC_DECL(int,enif_get_local_pid,(ErlNifEnv* env, ERL_NIF_TERM, ErlNifPid* pid));
123 ERL_NIF_API_FUNC_DECL(void,enif_keep_resource,(void* obj));
124 ERL_NIF_API_FUNC_DECL(ERL_NIF_TERM,enif_make_resource_binary,(ErlNifEnv*,void* obj,const void* data, size_t size));
125 
126 /*
127 ** Add last to keep compatibility on Windows!!!
128 */
129 #endif
130 
131 #ifdef ERL_NIF_API_FUNC_MACRO
132 #  define enif_priv_data ERL_NIF_API_FUNC_MACRO(enif_priv_data)
133 #  define enif_alloc ERL_NIF_API_FUNC_MACRO(enif_alloc)
134 #  define enif_free ERL_NIF_API_FUNC_MACRO(enif_free)
135 #  define enif_is_atom ERL_NIF_API_FUNC_MACRO(enif_is_atom)
136 #  define enif_is_binary ERL_NIF_API_FUNC_MACRO(enif_is_binary)
137 #  define enif_is_ref ERL_NIF_API_FUNC_MACRO(enif_is_ref)
138 #  define enif_inspect_binary ERL_NIF_API_FUNC_MACRO(enif_inspect_binary)
139 #  define enif_alloc_binary ERL_NIF_API_FUNC_MACRO(enif_alloc_binary)
140 #  define enif_realloc_binary ERL_NIF_API_FUNC_MACRO(enif_realloc_binary)
141 #  define enif_release_binary ERL_NIF_API_FUNC_MACRO(enif_release_binary)
142 #  define enif_get_int ERL_NIF_API_FUNC_MACRO(enif_get_int)
143 #  define enif_get_ulong ERL_NIF_API_FUNC_MACRO(enif_get_ulong)
144 #  define enif_get_double ERL_NIF_API_FUNC_MACRO(enif_get_double)
145 #  define enif_get_tuple ERL_NIF_API_FUNC_MACRO(enif_get_tuple)
146 #  define enif_get_list_cell ERL_NIF_API_FUNC_MACRO(enif_get_list_cell)
147 #  define enif_is_identical ERL_NIF_API_FUNC_MACRO(enif_is_identical)
148 #  define enif_compare ERL_NIF_API_FUNC_MACRO(enif_compare)
149 
150 #  define enif_make_binary ERL_NIF_API_FUNC_MACRO(enif_make_binary)
151 #  define enif_make_badarg ERL_NIF_API_FUNC_MACRO(enif_make_badarg)
152 #  define enif_make_int ERL_NIF_API_FUNC_MACRO(enif_make_int)
153 #  define enif_make_ulong ERL_NIF_API_FUNC_MACRO(enif_make_ulong)
154 #  define enif_make_double ERL_NIF_API_FUNC_MACRO(enif_make_double)
155 #  define enif_make_atom ERL_NIF_API_FUNC_MACRO(enif_make_atom)
156 #  define enif_make_existing_atom ERL_NIF_API_FUNC_MACRO(enif_make_existing_atom)
157 #  define enif_make_tuple ERL_NIF_API_FUNC_MACRO(enif_make_tuple)
158 #  define enif_make_list ERL_NIF_API_FUNC_MACRO(enif_make_list)
159 #  define enif_make_list_cell ERL_NIF_API_FUNC_MACRO(enif_make_list_cell)
160 #  define enif_make_string ERL_NIF_API_FUNC_MACRO(enif_make_string)
161 #  define enif_make_ref ERL_NIF_API_FUNC_MACRO(enif_make_ref)
162 
163 #  define enif_mutex_create ERL_NIF_API_FUNC_MACRO(enif_mutex_create)
164 #  define enif_mutex_destroy ERL_NIF_API_FUNC_MACRO(enif_mutex_destroy)
165 #  define enif_mutex_trylock ERL_NIF_API_FUNC_MACRO(enif_mutex_trylock)
166 #  define enif_mutex_lock ERL_NIF_API_FUNC_MACRO(enif_mutex_lock)
167 #  define enif_mutex_unlock ERL_NIF_API_FUNC_MACRO(enif_mutex_unlock)
168 #  define enif_cond_create ERL_NIF_API_FUNC_MACRO(enif_cond_create)
169 #  define enif_cond_destroy ERL_NIF_API_FUNC_MACRO(enif_cond_destroy)
170 #  define enif_cond_signal ERL_NIF_API_FUNC_MACRO(enif_cond_signal)
171 #  define enif_cond_broadcast ERL_NIF_API_FUNC_MACRO(enif_cond_broadcast)
172 #  define enif_cond_wait ERL_NIF_API_FUNC_MACRO(enif_cond_wait)
173 #  define enif_rwlock_create ERL_NIF_API_FUNC_MACRO(enif_rwlock_create)
174 #  define enif_rwlock_destroy ERL_NIF_API_FUNC_MACRO(enif_rwlock_destroy)
175 #  define enif_rwlock_tryrlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_tryrlock)
176 #  define enif_rwlock_rlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rlock)
177 #  define enif_rwlock_runlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_runlock)
178 #  define enif_rwlock_tryrwlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_tryrwlock)
179 #  define enif_rwlock_rwlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rwlock)
180 #  define enif_rwlock_rwunlock ERL_NIF_API_FUNC_MACRO(enif_rwlock_rwunlock)
181 #  define enif_tsd_key_create ERL_NIF_API_FUNC_MACRO(enif_tsd_key_create)
182 #  define enif_tsd_key_destroy ERL_NIF_API_FUNC_MACRO(enif_tsd_key_destroy)
183 #  define enif_tsd_set ERL_NIF_API_FUNC_MACRO(enif_tsd_set)
184 #  define enif_tsd_get ERL_NIF_API_FUNC_MACRO(enif_tsd_get)
185 #  define enif_thread_opts_create ERL_NIF_API_FUNC_MACRO(enif_thread_opts_create)
186 #  define enif_thread_opts_destroy ERL_NIF_API_FUNC_MACRO(enif_thread_opts_destroy)
187 #  define enif_thread_create ERL_NIF_API_FUNC_MACRO(enif_thread_create)
188 #  define enif_thread_self ERL_NIF_API_FUNC_MACRO(enif_thread_self)
189 #  define enif_equal_tids ERL_NIF_API_FUNC_MACRO(enif_equal_tids)
190 #  define enif_thread_exit ERL_NIF_API_FUNC_MACRO(enif_thread_exit)
191 #  define enif_thread_join ERL_NIF_API_FUNC_MACRO(enif_thread_join)
192 
193 #  define enif_realloc ERL_NIF_API_FUNC_MACRO(enif_realloc)
194 #  define enif_system_info ERL_NIF_API_FUNC_MACRO(enif_system_info)
195 #  define enif_fprintf ERL_NIF_API_FUNC_MACRO(enif_fprintf)
196 #  define enif_inspect_iolist_as_binary ERL_NIF_API_FUNC_MACRO(enif_inspect_iolist_as_binary)
197 #  define enif_make_sub_binary ERL_NIF_API_FUNC_MACRO(enif_make_sub_binary)
198 #  define enif_get_string ERL_NIF_API_FUNC_MACRO(enif_get_string)
199 #  define enif_get_atom ERL_NIF_API_FUNC_MACRO(enif_get_atom)
200 #  define enif_is_fun ERL_NIF_API_FUNC_MACRO(enif_is_fun)
201 #  define enif_is_pid ERL_NIF_API_FUNC_MACRO(enif_is_pid)
202 #  define enif_is_port ERL_NIF_API_FUNC_MACRO(enif_is_port)
203 #  define enif_get_uint ERL_NIF_API_FUNC_MACRO(enif_get_uint)
204 #  define enif_get_long ERL_NIF_API_FUNC_MACRO(enif_get_long)
205 #  define enif_make_uint ERL_NIF_API_FUNC_MACRO(enif_make_uint)
206 #  define enif_make_long ERL_NIF_API_FUNC_MACRO(enif_make_long)
207 #  define enif_make_tuple_from_array ERL_NIF_API_FUNC_MACRO(enif_make_tuple_from_array)
208 #  define enif_make_list_from_array ERL_NIF_API_FUNC_MACRO(enif_make_list_from_array)
209 #  define enif_is_empty_list ERL_NIF_API_FUNC_MACRO(enif_is_empty_list)
210 #  define enif_open_resource_type ERL_NIF_API_FUNC_MACRO(enif_open_resource_type)
211 #  define enif_alloc_resource ERL_NIF_API_FUNC_MACRO(enif_alloc_resource)
212 #  define enif_release_resource ERL_NIF_API_FUNC_MACRO(enif_release_resource)
213 #  define enif_make_resource ERL_NIF_API_FUNC_MACRO(enif_make_resource)
214 #  define enif_get_resource ERL_NIF_API_FUNC_MACRO(enif_get_resource)
215 #  define enif_sizeof_resource ERL_NIF_API_FUNC_MACRO(enif_sizeof_resource)
216 #  define enif_make_new_binary ERL_NIF_API_FUNC_MACRO(enif_make_new_binary)
217 #  define enif_is_list ERL_NIF_API_FUNC_MACRO(enif_is_list)
218 #  define enif_is_tuple ERL_NIF_API_FUNC_MACRO(enif_is_tuple)
219 #  define enif_get_atom_length ERL_NIF_API_FUNC_MACRO(enif_get_atom_length)
220 #  define enif_get_list_length ERL_NIF_API_FUNC_MACRO(enif_get_list_length)
221 #  define enif_make_atom_len ERL_NIF_API_FUNC_MACRO(enif_make_atom_len)
222 #  define enif_make_existing_atom_len ERL_NIF_API_FUNC_MACRO(enif_make_existing_atom_len)
223 #  define enif_make_string_len ERL_NIF_API_FUNC_MACRO(enif_make_string_len)
224 #  define enif_alloc_env ERL_NIF_API_FUNC_MACRO(enif_alloc_env)
225 #  define enif_free_env ERL_NIF_API_FUNC_MACRO(enif_free_env)
226 #  define enif_clear_env ERL_NIF_API_FUNC_MACRO(enif_clear_env)
227 #  define enif_send ERL_NIF_API_FUNC_MACRO(enif_send)
228 #  define enif_make_copy ERL_NIF_API_FUNC_MACRO(enif_make_copy)
229 #  define enif_self ERL_NIF_API_FUNC_MACRO(enif_self)
230 #  define enif_get_local_pid ERL_NIF_API_FUNC_MACRO(enif_get_local_pid)
231 #  define enif_keep_resource ERL_NIF_API_FUNC_MACRO(enif_keep_resource)
232 #  define enif_make_resource_binary ERL_NIF_API_FUNC_MACRO(enif_make_resource_binary)
233 #endif
234 
235 #ifndef enif_make_list1
236 #  define enif_make_list1(ENV,E1) enif_make_list(ENV,1,E1)
237 #  define enif_make_list2(ENV,E1,E2) enif_make_list(ENV,2,E1,E2)
238 #  define enif_make_list3(ENV,E1,E2,E3) enif_make_list(ENV,3,E1,E2,E3)
239 #  define enif_make_list4(ENV,E1,E2,E3,E4) enif_make_list(ENV,4,E1,E2,E3,E4)
240 #  define enif_make_list5(ENV,E1,E2,E3,E4,E5) enif_make_list(ENV,5,E1,E2,E3,E4,E5)
241 #  define enif_make_list6(ENV,E1,E2,E3,E4,E5,E6) enif_make_list(ENV,6,E1,E2,E3,E4,E5,E6)
242 #  define enif_make_list7(ENV,E1,E2,E3,E4,E5,E6,E7) enif_make_list(ENV,7,E1,E2,E3,E4,E5,E6,E7)
243 #  define enif_make_list8(ENV,E1,E2,E3,E4,E5,E6,E7,E8) enif_make_list(ENV,8,E1,E2,E3,E4,E5,E6,E7,E8)
244 #  define enif_make_list9(ENV,E1,E2,E3,E4,E5,E6,E7,E8,E9) enif_make_list(ENV,9,E1,E2,E3,E4,E5,E6,E7,E8,E9)
245 #  define enif_make_tuple1(ENV,E1) enif_make_tuple(ENV,1,E1)
246 #  define enif_make_tuple2(ENV,E1,E2) enif_make_tuple(ENV,2,E1,E2)
247 #  define enif_make_tuple3(ENV,E1,E2,E3) enif_make_tuple(ENV,3,E1,E2,E3)
248 #  define enif_make_tuple4(ENV,E1,E2,E3,E4) enif_make_tuple(ENV,4,E1,E2,E3,E4)
249 #  define enif_make_tuple5(ENV,E1,E2,E3,E4,E5) enif_make_tuple(ENV,5,E1,E2,E3,E4,E5)
250 #  define enif_make_tuple6(ENV,E1,E2,E3,E4,E5,E6) enif_make_tuple(ENV,6,E1,E2,E3,E4,E5,E6)
251 #  define enif_make_tuple7(ENV,E1,E2,E3,E4,E5,E6,E7) enif_make_tuple(ENV,7,E1,E2,E3,E4,E5,E6,E7)
252 #  define enif_make_tuple8(ENV,E1,E2,E3,E4,E5,E6,E7,E8) enif_make_tuple(ENV,8,E1,E2,E3,E4,E5,E6,E7,E8)
253 #  define enif_make_tuple9(ENV,E1,E2,E3,E4,E5,E6,E7,E8,E9) enif_make_tuple(ENV,9,E1,E2,E3,E4,E5,E6,E7,E8,E9)
254 
255 #  define enif_make_pid(ENV, PID) ((const ERL_NIF_TERM)((PID)->pid))
256 #endif
257 
258