czmq-ffi-gen 0.9.2-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +7 -0
  2. data/AUTHORS +1 -0
  3. data/CHANGES.md +92 -0
  4. data/Gemfile +2 -0
  5. data/LICENSE +14 -0
  6. data/README.md +112 -0
  7. data/lib/czmq-ffi-gen.rb +7 -0
  8. data/lib/czmq-ffi-gen/czmq/ffi.rb +1210 -0
  9. data/lib/czmq-ffi-gen/czmq/ffi/version.rb +15 -0
  10. data/lib/czmq-ffi-gen/czmq/ffi/zactor.rb +186 -0
  11. data/lib/czmq-ffi-gen/czmq/ffi/zarmour.rb +286 -0
  12. data/lib/czmq-ffi-gen/czmq/ffi/zcert.rb +307 -0
  13. data/lib/czmq-ffi-gen/czmq/ffi/zcertstore.rb +222 -0
  14. data/lib/czmq-ffi-gen/czmq/ffi/zchunk.rb +388 -0
  15. data/lib/czmq-ffi-gen/czmq/ffi/zclock.rb +140 -0
  16. data/lib/czmq-ffi-gen/czmq/ffi/zconfig.rb +442 -0
  17. data/lib/czmq-ffi-gen/czmq/ffi/zdigest.rb +156 -0
  18. data/lib/czmq-ffi-gen/czmq/ffi/zdir.rb +283 -0
  19. data/lib/czmq-ffi-gen/czmq/ffi/zdir_patch.rb +194 -0
  20. data/lib/czmq-ffi-gen/czmq/ffi/zfile.rb +353 -0
  21. data/lib/czmq-ffi-gen/czmq/ffi/zframe.rb +359 -0
  22. data/lib/czmq-ffi-gen/czmq/ffi/zhash.rb +416 -0
  23. data/lib/czmq-ffi-gen/czmq/ffi/zhashx.rb +659 -0
  24. data/lib/czmq-ffi-gen/czmq/ffi/ziflist.rb +189 -0
  25. data/lib/czmq-ffi-gen/czmq/ffi/zlist.rb +365 -0
  26. data/lib/czmq-ffi-gen/czmq/ffi/zlistx.rb +478 -0
  27. data/lib/czmq-ffi-gen/czmq/ffi/zloop.rb +396 -0
  28. data/lib/czmq-ffi-gen/czmq/ffi/zmsg.rb +515 -0
  29. data/lib/czmq-ffi-gen/czmq/ffi/zpoller.rb +194 -0
  30. data/lib/czmq-ffi-gen/czmq/ffi/zproc.rb +294 -0
  31. data/lib/czmq-ffi-gen/czmq/ffi/zsock.rb +3479 -0
  32. data/lib/czmq-ffi-gen/czmq/ffi/zstr.rb +203 -0
  33. data/lib/czmq-ffi-gen/czmq/ffi/ztimerset.rb +203 -0
  34. data/lib/czmq-ffi-gen/czmq/ffi/ztrie.rb +221 -0
  35. data/lib/czmq-ffi-gen/czmq/ffi/zuuid.rb +227 -0
  36. data/lib/czmq-ffi-gen/errors.rb +12 -0
  37. data/lib/czmq-ffi-gen/gem_version.rb +5 -0
  38. data/lib/czmq-ffi-gen/legacy.rb +16 -0
  39. data/lib/czmq-ffi-gen/libzmq.rb +18 -0
  40. data/lib/czmq-ffi-gen/signals.rb +27 -0
  41. data/lib/czmq-ffi-gen/vendor.rb +5 -0
  42. data/lib/czmq-ffi-gen/versions.rb +19 -0
  43. data/vendor/local/bin/inproc_lat.exe +0 -0
  44. data/vendor/local/bin/inproc_thr.exe +0 -0
  45. data/vendor/local/bin/libczmq.dll +0 -0
  46. data/vendor/local/bin/libgcc_s_seh-1.dll +0 -0
  47. data/vendor/local/bin/libstdc++-6.dll +0 -0
  48. data/vendor/local/bin/libzmq.dll +0 -0
  49. data/vendor/local/bin/local_lat.exe +0 -0
  50. data/vendor/local/bin/local_thr.exe +0 -0
  51. data/vendor/local/bin/remote_lat.exe +0 -0
  52. data/vendor/local/bin/remote_thr.exe +0 -0
  53. data/vendor/local/include/czmq.h +31 -0
  54. data/vendor/local/include/czmq_library.h +199 -0
  55. data/vendor/local/include/czmq_prelude.h +641 -0
  56. data/vendor/local/include/readme.txt +83 -0
  57. data/vendor/local/include/sha1.h +76 -0
  58. data/vendor/local/include/sha1.inc_c +335 -0
  59. data/vendor/local/include/slre.h +92 -0
  60. data/vendor/local/include/slre.inc_c +660 -0
  61. data/vendor/local/include/zactor.h +76 -0
  62. data/vendor/local/include/zarmour.h +114 -0
  63. data/vendor/local/include/zauth.h +100 -0
  64. data/vendor/local/include/zauth_v2.h +88 -0
  65. data/vendor/local/include/zbeacon.h +86 -0
  66. data/vendor/local/include/zbeacon_v2.h +75 -0
  67. data/vendor/local/include/zcert.h +136 -0
  68. data/vendor/local/include/zcertstore.h +100 -0
  69. data/vendor/local/include/zchunk.h +163 -0
  70. data/vendor/local/include/zclock.h +73 -0
  71. data/vendor/local/include/zconfig.h +185 -0
  72. data/vendor/local/include/zctx.h +107 -0
  73. data/vendor/local/include/zdigest.h +65 -0
  74. data/vendor/local/include/zdir.h +149 -0
  75. data/vendor/local/include/zdir_patch.h +82 -0
  76. data/vendor/local/include/zfile.h +177 -0
  77. data/vendor/local/include/zframe.h +176 -0
  78. data/vendor/local/include/zgossip.h +95 -0
  79. data/vendor/local/include/zgossip_engine.inc +927 -0
  80. data/vendor/local/include/zgossip_msg.h +129 -0
  81. data/vendor/local/include/zhash.h +195 -0
  82. data/vendor/local/include/zhash_primes.inc +329 -0
  83. data/vendor/local/include/zhashx.h +298 -0
  84. data/vendor/local/include/ziflist.h +77 -0
  85. data/vendor/local/include/zlist.h +158 -0
  86. data/vendor/local/include/zlistx.h +205 -0
  87. data/vendor/local/include/zloop.h +168 -0
  88. data/vendor/local/include/zmonitor.h +73 -0
  89. data/vendor/local/include/zmonitor_v2.h +56 -0
  90. data/vendor/local/include/zmq.h +617 -0
  91. data/vendor/local/include/zmq_utils.h +48 -0
  92. data/vendor/local/include/zmsg.h +280 -0
  93. data/vendor/local/include/zmutex.h +55 -0
  94. data/vendor/local/include/zpoller.h +92 -0
  95. data/vendor/local/include/zproc.h +168 -0
  96. data/vendor/local/include/zproxy.h +111 -0
  97. data/vendor/local/include/zproxy_v2.h +62 -0
  98. data/vendor/local/include/zrex.h +82 -0
  99. data/vendor/local/include/zsock.h +912 -0
  100. data/vendor/local/include/zsock_option.inc +4126 -0
  101. data/vendor/local/include/zsocket.h +110 -0
  102. data/vendor/local/include/zsockopt.h +256 -0
  103. data/vendor/local/include/zstr.h +110 -0
  104. data/vendor/local/include/zsys.h +386 -0
  105. data/vendor/local/include/zthread.h +50 -0
  106. data/vendor/local/include/ztimerset.h +90 -0
  107. data/vendor/local/include/ztrie.h +106 -0
  108. data/vendor/local/include/zuuid.h +96 -0
  109. data/vendor/local/lib/libczmq.dll.a +0 -0
  110. data/vendor/local/lib/liblibzmq.dll.a +0 -0
  111. data/vendor/local/lib/libzmq-static.a +0 -0
  112. data/vendor/local/lib/pkgconfig/libczmq.pc +23 -0
  113. data/vendor/local/lib/pkgconfig/libzmq.pc +11 -0
  114. data/vendor/local/share/zmq/AUTHORS.txt +147 -0
  115. data/vendor/local/share/zmq/COPYING.LESSER.txt +181 -0
  116. data/vendor/local/share/zmq/COPYING.txt +674 -0
  117. data/vendor/local/share/zmq/NEWS.txt +978 -0
  118. metadata +230 -0
@@ -0,0 +1,641 @@
1
+ /* =========================================================================
2
+ czmq_prelude.h - CZMQ environment
3
+
4
+ Copyright (c) the Contributors as noted in the AUTHORS file.
5
+ This file is part of CZMQ, the high-level C binding for 0MQ:
6
+ http://czmq.zeromq.org.
7
+
8
+ This Source Code Form is subject to the terms of the Mozilla Public
9
+ License, v. 2.0. If a copy of the MPL was not distributed with this
10
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
11
+ =========================================================================
12
+ */
13
+
14
+ #ifndef __CZMQ_PRELUDE_H_INCLUDED__
15
+ #define __CZMQ_PRELUDE_H_INCLUDED__
16
+
17
+ //- Establish the compiler and computer system ------------------------------
18
+ /*
19
+ * Defines zero or more of these symbols, for use in any non-portable
20
+ * code:
21
+ *
22
+ * __WINDOWS__ Microsoft C/C++ with Windows calls
23
+ * __MSDOS__ System is MS-DOS (set if __WINDOWS__ set)
24
+ * __VMS__ System is VAX/VMS or Alpha/OpenVMS
25
+ * __UNIX__ System is UNIX
26
+ * __OS2__ System is OS/2
27
+ *
28
+ * __IS_32BIT__ OS/compiler is 32 bits
29
+ * __IS_64BIT__ OS/compiler is 64 bits
30
+ *
31
+ * When __UNIX__ is defined, we also define exactly one of these:
32
+ *
33
+ * __UTYPE_AUX Apple AUX
34
+ * __UTYPE_BEOS BeOS
35
+ * __UTYPE_BSDOS BSD/OS
36
+ * __UTYPE_DECALPHA Digital UNIX (Alpha)
37
+ * __UTYPE_IBMAIX IBM RS/6000 AIX
38
+ * __UTYPE_FREEBSD FreeBSD
39
+ * __UTYPE_HPUX HP/UX
40
+ * __UTYPE_ANDROID Android
41
+ * __UTYPE_LINUX Linux
42
+ * __UTYPE_GNU GNU/Hurd
43
+ * __UTYPE_MIPS MIPS (BSD 4.3/System V mixture)
44
+ * __UTYPE_NETBSD NetBSD
45
+ * __UTYPE_NEXT NeXT
46
+ * __UTYPE_OPENBSD OpenBSD
47
+ * __UTYPE_OSX Apple Macintosh OS X
48
+ * __UTYPE_IOS Apple iOS
49
+ * __UTYPE_QNX QNX
50
+ * __UTYPE_IRIX Silicon Graphics IRIX
51
+ * __UTYPE_SINIX SINIX-N (Siemens-Nixdorf Unix)
52
+ * __UTYPE_SUNOS SunOS
53
+ * __UTYPE_SUNSOLARIS Sun Solaris
54
+ * __UTYPE_UNIXWARE SCO UnixWare
55
+ * ... these are the ones I know about so far.
56
+ * __UTYPE_GENERIC Any other UNIX
57
+ *
58
+ * When __VMS__ is defined, we may define one or more of these:
59
+ *
60
+ * __VMS_XOPEN Supports XOPEN functions
61
+ */
62
+
63
+ #if (defined (__64BIT__) || defined (__x86_64__))
64
+ # define __IS_64BIT__ // May have 64-bit OS/compiler
65
+ #else
66
+ # define __IS_32BIT__ // Else assume 32-bit OS/compiler
67
+ #endif
68
+
69
+ #if (defined WIN32 || defined _WIN32)
70
+ # undef __WINDOWS__
71
+ # define __WINDOWS__
72
+ # undef __MSDOS__
73
+ # define __MSDOS__
74
+ #endif
75
+
76
+ #if (defined WINDOWS || defined _WINDOWS || defined __WINDOWS__)
77
+ # undef __WINDOWS__
78
+ # define __WINDOWS__
79
+ # undef __MSDOS__
80
+ # define __MSDOS__
81
+ // Stop cheeky warnings about "deprecated" functions like fopen
82
+ # if _MSC_VER >= 1500
83
+ # undef _CRT_SECURE_NO_DEPRECATE
84
+ # define _CRT_SECURE_NO_DEPRECATE
85
+ # pragma warning(disable: 4996)
86
+ # endif
87
+ #endif
88
+
89
+ // MSDOS Microsoft C
90
+ // _MSC_VER Microsoft C
91
+ #if (defined (MSDOS) || defined (_MSC_VER))
92
+ # undef __MSDOS__
93
+ # define __MSDOS__
94
+ # if (defined (_DEBUG) && !defined (DEBUG))
95
+ # define DEBUG
96
+ # endif
97
+ #endif
98
+
99
+ #if (defined (__EMX__) && defined (__i386__))
100
+ # undef __OS2__
101
+ # define __OS2__
102
+ #endif
103
+
104
+ // VMS VAX C (VAX/VMS)
105
+ // __VMS Dec C (Alpha/OpenVMS)
106
+ // __vax__ gcc
107
+ #if (defined (VMS) || defined (__VMS) || defined (__vax__))
108
+ # undef __VMS__
109
+ # define __VMS__
110
+ # if (__VMS_VER >= 70000000)
111
+ # define __VMS_XOPEN
112
+ # endif
113
+ #endif
114
+
115
+ // Try to define a __UTYPE_xxx symbol...
116
+ // unix SunOS at least
117
+ // __unix__ gcc
118
+ // _POSIX_SOURCE is various UNIX systems, maybe also VAX/VMS
119
+ #if (defined (unix) || defined (__unix__) || defined (_POSIX_SOURCE))
120
+ # if (!defined (__VMS__))
121
+ # undef __UNIX__
122
+ # define __UNIX__
123
+ # if (defined (__alpha)) // Digital UNIX is 64-bit
124
+ # undef __IS_32BIT__
125
+ # define __IS_64BIT__
126
+ # define __UTYPE_DECALPHA
127
+ # endif
128
+ # endif
129
+ #endif
130
+
131
+ #if (defined (_AUX))
132
+ # define __UTYPE_AUX
133
+ # define __UNIX__
134
+ #elif (defined (__BEOS__))
135
+ # define __UTYPE_BEOS
136
+ # define __UNIX__
137
+ #elif (defined (__hpux))
138
+ # define __UTYPE_HPUX
139
+ # define __UNIX__
140
+ # define _INCLUDE_HPUX_SOURCE
141
+ # define _INCLUDE_XOPEN_SOURCE
142
+ # define _INCLUDE_POSIX_SOURCE
143
+ #elif (defined (_AIX) || defined (AIX))
144
+ # define __UTYPE_IBMAIX
145
+ # define __UNIX__
146
+ #elif (defined (BSD) || defined (bsd))
147
+ # define __UTYPE_BSDOS
148
+ # define __UNIX__
149
+ #elif (defined (__ANDROID__))
150
+ # define __UTYPE_ANDROID
151
+ # define __UNIX__
152
+ #elif (defined (LINUX) || defined (linux) || defined (__linux__))
153
+ # define __UTYPE_LINUX
154
+ # define __UNIX__
155
+ # ifndef __NO_CTYPE
156
+ # define __NO_CTYPE // Suppress warnings on tolower()
157
+ # endif
158
+ # ifndef _DEFAULT_SOURCE
159
+ # define _DEFAULT_SOURCE // Include stuff from 4.3 BSD Unix
160
+ # endif
161
+ #elif (defined (__GNU__))
162
+ # define __UTYPE_GNU
163
+ # define __UNIX__
164
+ #elif (defined (Mips))
165
+ # define __UTYPE_MIPS
166
+ # define __UNIX__
167
+ #elif (defined (FreeBSD) || defined (__FreeBSD__))
168
+ # define __UTYPE_FREEBSD
169
+ # define __UNIX__
170
+ #elif (defined (NetBSD) || defined (__NetBSD__))
171
+ # define __UTYPE_NETBSD
172
+ # define __UNIX__
173
+ #elif (defined (OpenBSD) || defined (__OpenBSD__))
174
+ # define __UTYPE_OPENBSD
175
+ # define __UNIX__
176
+ #elif (defined (APPLE) || defined (__APPLE__))
177
+ # include <TargetConditionals.h>
178
+ # define __UNIX__
179
+ # if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
180
+ # define __UTYPE_IOS
181
+ # else
182
+ # define __UTYPE_OSX
183
+ # endif
184
+ #elif (defined (NeXT))
185
+ # define __UTYPE_NEXT
186
+ # define __UNIX__
187
+ #elif (defined (__QNX__))
188
+ # define __UTYPE_QNX
189
+ # define __UNIX__
190
+ #elif (defined (sgi))
191
+ # define __UTYPE_IRIX
192
+ # define __UNIX__
193
+ #elif (defined (sinix))
194
+ # define __UTYPE_SINIX
195
+ # define __UNIX__
196
+ #elif (defined (SOLARIS) || defined (__SRV4))
197
+ # define __UTYPE_SUNSOLARIS
198
+ # define __UNIX__
199
+ #elif (defined (SUNOS) || defined (SUN) || defined (sun))
200
+ # define __UTYPE_SUNOS
201
+ # define __UNIX__
202
+ #elif (defined (__USLC__) || defined (UnixWare))
203
+ # define __UTYPE_UNIXWARE
204
+ # define __UNIX__
205
+ #elif (defined (__CYGWIN__))
206
+ # define __UTYPE_CYGWIN
207
+ # define __UNIX__
208
+ #elif (defined (__UNIX__))
209
+ # define __UTYPE_GENERIC
210
+ #endif
211
+
212
+ //- Always include ZeroMQ headers -------------------------------------------
213
+
214
+ #include "zmq.h"
215
+ #if (ZMQ_VERSION < ZMQ_MAKE_VERSION (4, 2, 0))
216
+ # include "zmq_utils.h"
217
+ #endif
218
+
219
+ //- Standard ANSI include files ---------------------------------------------
220
+
221
+ #include <ctype.h>
222
+ #include <limits.h>
223
+ #include <stdarg.h>
224
+ #include <stdio.h>
225
+ #include <stdlib.h>
226
+ #include <stddef.h>
227
+ #include <string.h>
228
+ #include <time.h>
229
+ #include <errno.h>
230
+ #include <float.h>
231
+ #include <math.h>
232
+ #include <signal.h>
233
+ #include <setjmp.h>
234
+ #include <assert.h>
235
+
236
+ //- System-specific include files -------------------------------------------
237
+
238
+ #if (defined (__MSDOS__))
239
+ # if (defined (__WINDOWS__))
240
+ # if (_WIN32_WINNT < 0x0600)
241
+ # undef _WIN32_WINNT
242
+ # define _WIN32_WINNT 0x0600
243
+ # endif
244
+ # if (!defined (FD_SETSIZE))
245
+ # define FD_SETSIZE 1024 // Max. filehandles/sockets
246
+ # endif
247
+ # include <direct.h>
248
+ # include <winsock2.h>
249
+ # include <windows.h>
250
+ # include <process.h>
251
+ # include <ws2tcpip.h> // For getnameinfo ()
252
+ # include <iphlpapi.h> // For GetAdaptersAddresses ()
253
+ # endif
254
+ # include <malloc.h>
255
+ # include <dos.h>
256
+ # include <io.h>
257
+ # include <fcntl.h>
258
+ # include <sys/types.h>
259
+ # include <sys/stat.h>
260
+ # include <sys/utime.h>
261
+ # include <share.h>
262
+ #endif
263
+
264
+ #if (defined (__UNIX__))
265
+ # include <fcntl.h>
266
+ # include <netdb.h>
267
+ # include <unistd.h>
268
+ # include <pthread.h>
269
+ # include <dirent.h>
270
+ # include <pwd.h>
271
+ # include <grp.h>
272
+ # include <utime.h>
273
+ # include <inttypes.h>
274
+ # include <syslog.h>
275
+ # include <sys/types.h>
276
+ # include <sys/param.h>
277
+ # include <sys/socket.h>
278
+ # include <sys/time.h>
279
+ # include <sys/stat.h>
280
+ # include <sys/ioctl.h>
281
+ # include <sys/file.h>
282
+ # include <sys/wait.h>
283
+ # include <sys/un.h>
284
+ # include <sys/uio.h> // Let CZMQ build with libzmq/3.x
285
+ # include <netinet/in.h> // Must come before arpa/inet.h
286
+ # if (!defined (__UTYPE_ANDROID)) && (!defined (__UTYPE_IBMAIX)) \
287
+ && (!defined (__UTYPE_HPUX))
288
+ # include <ifaddrs.h>
289
+ # endif
290
+ # if defined (__UTYPE_SUNSOLARIS) || defined (__UTYPE_SUNOS)
291
+ # include <sys/sockio.h>
292
+ # endif
293
+ # if (!defined (__UTYPE_BEOS))
294
+ # include <arpa/inet.h>
295
+ # if (!defined (TCP_NODELAY))
296
+ # include <netinet/tcp.h>
297
+ # endif
298
+ # endif
299
+ # if (defined (__UTYPE_IBMAIX) || defined(__UTYPE_QNX))
300
+ # include <sys/select.h>
301
+ # endif
302
+ # if (defined (__UTYPE_BEOS))
303
+ # include <NetKit.h>
304
+ # endif
305
+ # if ((defined (_XOPEN_REALTIME) && (_XOPEN_REALTIME >= 1)) \
306
+ || (defined (_POSIX_VERSION) && (_POSIX_VERSION >= 199309L)))
307
+ # include <sched.h>
308
+ # endif
309
+ # if (defined (__UTYPE_OSX) || defined (__UTYPE_IOS))
310
+ # include <mach/clock.h>
311
+ # include <mach/mach.h> // For monotonic clocks
312
+ # endif
313
+ # if (defined (__UTYPE_OSX))
314
+ # include <crt_externs.h> // For _NSGetEnviron()
315
+ # endif
316
+ # if (defined (__UTYPE_ANDROID))
317
+ # include <android/log.h>
318
+ # endif
319
+ # if (defined (__UTYPE_LINUX) && defined (HAVE_LIBSYSTEMD))
320
+ # include <systemd/sd-daemon.h>
321
+ # endif
322
+ #endif
323
+
324
+ #if (defined (__VMS__))
325
+ # if (!defined (vaxc))
326
+ # include <fcntl.h> // Not provided by Vax C
327
+ # endif
328
+ # include <netdb.h>
329
+ # include <unistd.h>
330
+ # include <pthread.h>
331
+ # include <unixio.h>
332
+ # include <unixlib.h>
333
+ # include <types.h>
334
+ # include <file.h>
335
+ # include <socket.h>
336
+ # include <dirent.h>
337
+ # include <time.h>
338
+ # include <pwd.h>
339
+ # include <stat.h>
340
+ # include <in.h>
341
+ # include <inet.h>
342
+ #endif
343
+
344
+ #if (defined (__OS2__))
345
+ # include <sys/types.h> // Required near top
346
+ # include <fcntl.h>
347
+ # include <malloc.h>
348
+ # include <netdb.h>
349
+ # include <unistd.h>
350
+ # include <pthread.h>
351
+ # include <dirent.h>
352
+ # include <pwd.h>
353
+ # include <grp.h>
354
+ # include <io.h>
355
+ # include <process.h>
356
+ # include <sys/param.h>
357
+ # include <sys/socket.h>
358
+ # include <sys/select.h>
359
+ # include <sys/time.h>
360
+ # include <sys/stat.h>
361
+ # include <sys/ioctl.h>
362
+ # include <sys/file.h>
363
+ # include <sys/wait.h>
364
+ # include <netinet/in.h> // Must come before arpa/inet.h
365
+ # include <arpa/inet.h>
366
+ # include <utime.h>
367
+ # if (!defined (TCP_NODELAY))
368
+ # include <netinet/tcp.h>
369
+ # endif
370
+ #endif
371
+
372
+ // Add missing defines for non-POSIX systems
373
+ #ifndef S_IRUSR
374
+ # define S_IRUSR S_IREAD
375
+ #endif
376
+ #ifndef S_IWUSR
377
+ # define S_IWUSR S_IWRITE
378
+ #endif
379
+ #ifndef S_ISDIR
380
+ # define S_ISDIR(m) (((m) & S_IFDIR) != 0)
381
+ #endif
382
+ #ifndef S_ISREG
383
+ # define S_ISREG(m) (((m) & S_IFREG) != 0)
384
+ #endif
385
+
386
+
387
+ //- Check compiler data type sizes ------------------------------------------
388
+
389
+ #if (UCHAR_MAX != 0xFF)
390
+ # error "Cannot compile: must change definition of 'byte'."
391
+ #endif
392
+ #if (USHRT_MAX != 0xFFFFU)
393
+ # error "Cannot compile: must change definition of 'dbyte'."
394
+ #endif
395
+ #if (UINT_MAX != 0xFFFFFFFFU)
396
+ # error "Cannot compile: must change definition of 'qbyte'."
397
+ #endif
398
+
399
+ //- Data types --------------------------------------------------------------
400
+
401
+ typedef unsigned char byte; // Single unsigned byte = 8 bits
402
+ typedef unsigned short dbyte; // Double byte = 16 bits
403
+ typedef unsigned int qbyte; // Quad byte = 32 bits
404
+ typedef struct sockaddr_in inaddr_t; // Internet socket address structure
405
+ typedef struct sockaddr_in6 in6addr_t; // Internet 6 socket address structure
406
+
407
+ // Common structure to hold inaddr_t and in6addr_t with length
408
+ typedef struct {
409
+ union {
410
+ inaddr_t __addr; // IPv4 address
411
+ in6addr_t __addr6; // IPv6 address
412
+ } __inaddr_u;
413
+ #define ipv4addr __inaddr_u.__addr
414
+ #define ipv6addr __inaddr_u.__addr6
415
+ int inaddrlen;
416
+ } inaddr_storage_t;
417
+
418
+ //- Inevitable macros -------------------------------------------------------
419
+
420
+ #define streq(s1,s2) (!strcmp ((s1), (s2)))
421
+ #define strneq(s1,s2) (strcmp ((s1), (s2)))
422
+
423
+ // Provide random number from 0..(num-1)
424
+ #if (defined (__WINDOWS__)) || (defined (__UTYPE_IBMAIX)) \
425
+ || (defined (__UTYPE_HPUX)) || (defined (__UTYPE_SUNOS))
426
+ # define randof(num) (int) ((float) (num) * rand () / (RAND_MAX + 1.0))
427
+ #else
428
+ # define randof(num) (int) ((float) (num) * random () / (RAND_MAX + 1.0))
429
+ #endif
430
+
431
+ // Windows MSVS doesn't have stdbool
432
+ #if (defined (_MSC_VER))
433
+ # if (!defined (__cplusplus) && (!defined (true)))
434
+ # define true 1
435
+ # define false 0
436
+ typedef char bool;
437
+ # endif
438
+ #else
439
+ # include <stdbool.h>
440
+ #endif
441
+
442
+ //- A number of POSIX and C99 keywords and data types -----------------------
443
+ // CZMQ uses uint for array indices; equivalent to unsigned int, but more
444
+ // convenient in code. We define it in czmq_prelude.h on systems that do
445
+ // not define it by default.
446
+
447
+ #if (defined (__WINDOWS__))
448
+ # if (!defined (__cplusplus) && (!defined (inline)))
449
+ # define inline __inline
450
+ # endif
451
+ # define strtoull _strtoui64
452
+ # define atoll _atoi64
453
+ # define srandom srand
454
+ # define TIMEZONE _timezone
455
+ # if (!defined (__MINGW32__))
456
+ # define snprintf _snprintf
457
+ # define vsnprintf _vsnprintf
458
+ # endif
459
+ typedef unsigned long ulong;
460
+ typedef unsigned int uint;
461
+ # if (!defined (__MINGW32__))
462
+ typedef int mode_t;
463
+ # if !defined (_SSIZE_T_DEFINED)
464
+ typedef intptr_t ssize_t;
465
+ # define _SSIZE_T_DEFINED
466
+ # endif
467
+ # endif
468
+ # if ((!defined (__MINGW32__) \
469
+ || (defined (__MINGW32__) && defined (__IS_64BIT__))) \
470
+ && !defined (ZMQ_DEFINED_STDINT))
471
+ typedef __int8 int8_t;
472
+ typedef __int16 int16_t;
473
+ typedef __int32 int32_t;
474
+ typedef __int64 int64_t;
475
+ typedef unsigned __int8 uint8_t;
476
+ typedef unsigned __int16 uint16_t;
477
+ typedef unsigned __int32 uint32_t;
478
+ typedef unsigned __int64 uint64_t;
479
+ # endif
480
+ typedef uint32_t in_addr_t;
481
+ # if (!defined (PRId8))
482
+ # define PRId8 "d"
483
+ # endif
484
+ # if (!defined (PRId16))
485
+ # define PRId16 "d"
486
+ # endif
487
+ # if (!defined (PRId32))
488
+ # define PRId32 "d"
489
+ # endif
490
+ # if (!defined (PRId64))
491
+ # define PRId64 "I64d"
492
+ # endif
493
+ # if (!defined (PRIu8))
494
+ # define PRIu8 "u"
495
+ # endif
496
+ # if (!defined (PRIu16))
497
+ # define PRIu16 "u"
498
+ # endif
499
+ # if (!defined (PRIu32))
500
+ # define PRIu32 "u"
501
+ # endif
502
+ # if (!defined (PRIu64))
503
+ # define PRIu64 "I64u"
504
+ # endif
505
+ # if (!defined (va_copy))
506
+ // MSVC does not support C99's va_copy so we use a regular assignment
507
+ # define va_copy(dest,src) (dest) = (src)
508
+ # endif
509
+ #elif (defined (__UTYPE_OSX))
510
+ typedef unsigned long ulong;
511
+ typedef unsigned int uint;
512
+ // This fixes header-order dependence problem with some Linux versions
513
+ #elif (defined (__UTYPE_LINUX))
514
+ # if (__STDC_VERSION__ >= 199901L && !defined (__USE_MISC))
515
+ typedef unsigned int uint;
516
+ # endif
517
+ #endif
518
+
519
+ //- Non-portable declaration specifiers -------------------------------------
520
+
521
+ // For thread-local storage
522
+ #if defined (__WINDOWS__)
523
+ # define CZMQ_THREADLS __declspec(thread)
524
+ #else
525
+ # define CZMQ_THREADLS __thread
526
+ #endif
527
+
528
+ // Replacement for malloc() which asserts if we run out of heap, and
529
+ // which zeroes the allocated block.
530
+ static inline void *
531
+ safe_malloc (size_t size, const char *file, unsigned line)
532
+ {
533
+ // printf ("%s:%u %08d\n", file, line, (int) size);
534
+ void *mem = calloc (1, size);
535
+ if (mem == NULL) {
536
+ fprintf (stderr, "FATAL ERROR at %s:%u\n", file, line);
537
+ fprintf (stderr, "OUT OF MEMORY (malloc returned NULL)\n");
538
+ fflush (stderr);
539
+ abort ();
540
+ }
541
+ return mem;
542
+ }
543
+
544
+ // Define _ZMALLOC_DEBUG if you need to trace memory leaks using e.g. mtrace,
545
+ // otherwise all allocations will claim to come from czmq_prelude.h. For best
546
+ // results, compile all classes so you see dangling object allocations.
547
+ // _ZMALLOC_PEDANTIC does the same thing, but its intention is to propagate
548
+ // out of memory condition back up the call stack.
549
+ #if defined (_ZMALLOC_DEBUG) || defined (_ZMALLOC_PEDANTIC)
550
+ # define zmalloc(size) calloc(1,(size))
551
+ #else
552
+ # define zmalloc(size) safe_malloc((size), __FILE__, __LINE__)
553
+ #endif
554
+
555
+ // GCC supports validating format strings for functions that act like printf
556
+ #if defined (__GNUC__) && (__GNUC__ >= 2)
557
+ # define CHECK_PRINTF(a) __attribute__((format (printf, a, a + 1)))
558
+ #else
559
+ # define CHECK_PRINTF(a)
560
+ #endif
561
+
562
+ // Lets us write code that compiles both on Windows and normal platforms
563
+ #if !defined (__WINDOWS__)
564
+ typedef int SOCKET;
565
+ # define closesocket close
566
+ # define INVALID_SOCKET -1
567
+ # define SOCKET_ERROR -1
568
+ # define O_BINARY 0
569
+ #endif
570
+
571
+ //- Include non-portable header files based on platform.h -------------------
572
+
573
+ #if defined (HAVE_LINUX_WIRELESS_H)
574
+ # include <linux/wireless.h>
575
+ // This would normally come from net/if.h
576
+ unsigned int if_nametoindex (const char *ifname);
577
+ #else
578
+ # if defined (HAVE_NET_IF_H)
579
+ # include <net/if.h>
580
+ # endif
581
+ # if defined (HAVE_NET_IF_MEDIA_H)
582
+ # include <net/if_media.h>
583
+ # endif
584
+ #endif
585
+
586
+ #if defined (__WINDOWS__) && !defined (HAVE_UUID)
587
+ # define HAVE_UUID 1
588
+ #endif
589
+ #if defined (__UTYPE_OSX) && !defined (HAVE_UUID)
590
+ # define HAVE_UUID 1
591
+ #endif
592
+ #if defined (HAVE_UUID)
593
+ # if defined (__UTYPE_FREEBSD) || defined (__UTYPE_NETBSD)
594
+ # include <uuid.h>
595
+ # elif defined __UTYPE_HPUX
596
+ # include <dce/uuid.h>
597
+ # elif defined (__UNIX__)
598
+ # include <uuid/uuid.h>
599
+ # endif
600
+ #endif
601
+
602
+ // ZMQ compatibility macros
603
+
604
+ #if ZMQ_VERSION_MAJOR == 4
605
+ # define ZMQ_POLL_MSEC 1 // zmq_poll is msec
606
+
607
+ #elif ZMQ_VERSION_MAJOR == 3
608
+ # define ZMQ_POLL_MSEC 1 // zmq_poll is msec
609
+ # if ZMQ_VERSION_MINOR < 2
610
+ # define zmq_ctx_new zmq_init
611
+ # endif
612
+ # define zmq_ctx_term zmq_term
613
+
614
+ #elif ZMQ_VERSION_MAJOR == 2
615
+ # define ZMQ_POLL_MSEC 1000 // zmq_poll is usec
616
+ # define zmq_sendmsg zmq_send // Smooth out 2.x changes
617
+ # define zmq_recvmsg zmq_recv
618
+ # define zmq_ctx_new zmq_init
619
+ # define zmq_ctx_term zmq_term
620
+ # define zmq_msg_send(m,s,f) zmq_sendmsg ((s),(m),(f))
621
+ # define zmq_msg_recv(m,s,f) zmq_recvmsg ((s),(m),(f))
622
+ // Older libzmq APIs may be missing some aspects of libzmq v3.0
623
+ # ifndef ZMQ_ROUTER
624
+ # define ZMQ_ROUTER ZMQ_XREP
625
+ # endif
626
+ # ifndef ZMQ_DEALER
627
+ # define ZMQ_DEALER ZMQ_XREQ
628
+ # endif
629
+ # ifndef ZMQ_DONTWAIT
630
+ # define ZMQ_DONTWAIT ZMQ_NOBLOCK
631
+ # endif
632
+ # ifndef ZMQ_XSUB
633
+ # error "please upgrade your libzmq from http://zeromq.org"
634
+ # endif
635
+ # if ZMQ_VERSION_MINOR == 0 \
636
+ || (ZMQ_VERSION_MINOR == 1 && ZMQ_VERSION_PATCH < 7)
637
+ # error "CZMQ requires at least libzmq/2.1.7 stable"
638
+ # endif
639
+ #endif
640
+
641
+ #endif