| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- /*
- Boost Software License - Version 1.0 - August 17th, 2003
- Permission is hereby granted, free of charge, to any person or organization
- obtaining a copy of the software and accompanying documentation covered by
- this license (the "Software") to use, reproduce, display, distribute,
- execute, and transmit the Software, and to prepare derivative works of the
- Software, and to permit third-parties to whom the Software is furnished to
- do so, all subject to the following:
- The copyright notices in the Software and this entire statement, including
- the above license grant, this restriction and the following disclaimer,
- must be included in all copies of the Software, in whole or in part, and
- all derivative works of the Software, unless such copies or derivative
- works are solely in the form of machine-executable object code generated by
- a source language processor.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
- SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
- FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
- */
- module derelict.nanomsg.functions;
- private {
- import core.stdc.stdio;
- import core.stdc.stdarg;
- import derelict.util.system;
- import derelict.nanomsg.types;
- }
- extern( C ) @nogc nothrow {
- alias int function() da_nanomsg_nn_errno;
- alias const char* function(int) da_nanomsg_nn_strerror;
- alias const char* function(int, int*) da_nanomsg_nn_symbol;
- alias int function(int, nn_symbol_properties*, int) da_nanomsg_nn_symbol_info;
- alias void* function(size_t size, int type) da_nanomsg_nn_term;
- alias void* function(void* msg, size_t size) da_nanomsg_nn_allocmsg;
- alias int function(void*) da_nanomsg_nn_freemsg;
-
- version(none) {
- alias nn_cmsghdr* function(const nn_msghdr*, const nn_cmsghdr*) da_nanomsg_nn_cmsg_nxthdr_;
-
- auto NN_CMSG_ALIGN(T)(T len) {
- return (len + size_t.sizeof - 1) & (size_t) ~ (size_t.sizeof - 1);
- }
- /* POSIX-defined msghdr manipulation. */
- auto NN_CMSG_FIRSTHDR(T)(T mhdr) {
- return nn_cmsg_nxthdr_(cast(nn_msghdr*)mhdr, null);
- }
- auto NN_CMSG_NXTHDR(T, K)(T mhdr, K cmsg) {
- return nn_cmsg_nxthdr_(cast(nn_msghdr*)mhdr, cast(nn_cmsghdr*)cmsg);
- }
- auto NN_CMSG_DATA(T)(T cmsg) {
- return cast(ubyte*)((cast(nn_cmsghdr*)cmsg) + 1);
- }
- /* Extensions to POSIX defined by RFC 3542. */
- auto NN_CMSG_SPACE(T)(T len) {
- return NN_CMSG_ALIGN_(len) + NN_CMSG_ALIGN_(nn_cmsghdr.sizeof);
- }
-
- auto NN_CMSG_LEN(T)(T len) {
- return NN_CMSG_ALIGN_(nn_cmsghdr.sizeof) + len;
- }
-
- }
-
- alias int function(int, int) da_nanomsg_nn_socket;
- alias int function(int) da_nanomsg_nn_close;
- alias int function(int, int, int, const void*, size_t) da_nanomsg_nn_setsockopt;
- alias int function(int, int, int, void*, size_t*) da_nanomsg_nn_getsockopt;
- alias int function(int, const char*) da_nanomsg_nn_bind;
- alias int function(int, const char*) da_nanomsg_nn_connect;
- alias int function(int, int) da_nanomsg_nn_shutdown;
- alias int function(int, const void*, size_t, int) da_nanomsg_nn_send;
- alias int function(int, void*, size_t, int) da_nanomsg_nn_recv;
- alias int function(int, const nn_msghdr*, int) da_nanomsg_nn_sendmsg;
- alias int function(int, nn_msghdr*, int) da_nanomsg_nn_recvmsg;
- alias int function(nn_pollfd*, int, int) da_nanomsg_nn_poll;
- alias int function(int, int) da_nanomsg_nn_device;
- }
- __gshared {
- da_nanomsg_nn_errno nn_errno;
- da_nanomsg_nn_strerror nn_strerror;
- da_nanomsg_nn_symbol nn_symbol;
- da_nanomsg_nn_symbol_info nn_symbol_info;
- da_nanomsg_nn_term nn_term;
- da_nanomsg_nn_allocmsg nn_allocmsg;
- da_nanomsg_nn_freemsg nn_freemsg;
-
- version(none) {
- //...
- }
-
- da_nanomsg_nn_socket nn_socket;
- da_nanomsg_nn_close nn_close;
- da_nanomsg_nn_setsockopt nn_setsockopt;
- da_nanomsg_nn_getsockopt nn_getsockopt;
- da_nanomsg_nn_bind nn_bind;
- da_nanomsg_nn_connect nn_connect;
- da_nanomsg_nn_shutdown nn_shutdown;
- da_nanomsg_nn_send nn_send;
- da_nanomsg_nn_recv nn_recv;
- da_nanomsg_nn_sendmsg nn_sendmsg;
- da_nanomsg_nn_recvmsg nn_recvmsg;
- da_nanomsg_nn_poll nn_poll;
- da_nanomsg_nn_device nn_device;
- }
|