1 /*
2  * Copyright (c) 2013 Derelict Developers
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the names 'Derelict', 'DerelictILUT', nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 module derelict.enet.funcs;
33 
34 
35 private
36 {
37     import derelict.util.system;
38     import derelict.enet.types;
39 }
40 
41 extern(C) @nogc nothrow
42 {
43     // enet.h
44     alias int function() da_enet_initialize;
45     alias int function(ENetVersion version_, const ENetCallbacks * inits) da_enet_initialize_with_callbacks;
46     alias void function() da_enet_deinitialize;
47     alias ENetVersion function() da_enet_linked_version;
48     alias enet_uint32 function() da_enet_time_get;
49     alias void function(enet_uint32) da_enet_time_set;
50     alias ENetSocket function(ENetSocketType) da_enet_socket_create;
51     alias int        function(ENetSocket, const ENetAddress *) da_enet_socket_bind;
52     alias int        function(ENetSocket, ENetAddress *) da_enet_socket_get_address;
53     alias int        function(ENetSocket, int) da_enet_socket_listen;
54     alias ENetSocket function(ENetSocket, ENetAddress *) da_enet_socket_accept;
55     alias int        function(ENetSocket, const ENetAddress *) da_enet_socket_connect;
56     alias int        function(ENetSocket, const ENetAddress *, const ENetBuffer *, size_t) da_enet_socket_send;
57     alias int        function(ENetSocket, ENetAddress *, ENetBuffer *, size_t) da_enet_socket_receive;
58     alias int        function(ENetSocket, enet_uint32 *, enet_uint32) da_enet_socket_wait;
59     alias int        function(ENetSocket, ENetSocketOption, int) da_enet_socket_set_option;
60     alias int        function(ENetSocket, ENetSocketOption, int *) da_enet_socket_get_option;
61     alias int        function(ENetSocket, ENetSocketShutdown) da_enet_socket_shutdown;
62     alias void       function(ENetSocket) da_enet_socket_destroy;
63     alias int        function(ENetSocket, ENetSocketSet *, ENetSocketSet *, enet_uint32) da_enet_socketset_select;
64     alias int function(ENetAddress * address, const char * hostName) da_enet_address_set_host;
65     alias int function(const ENetAddress * address, char * hostName, size_t nameLength) da_enet_address_get_host_ip;
66     alias int function(const ENetAddress * address, char * hostName, size_t nameLength) da_enet_address_get_host;
67     alias ENetPacket * function(const void *, size_t, enet_uint32) da_enet_packet_create;
68     alias void         function(ENetPacket *) da_enet_packet_destroy;
69     alias int          function (ENetPacket *, size_t) da_enet_packet_resize;
70     alias enet_uint32  function(const ENetBuffer *, size_t) da_enet_crc32;
71     alias ENetHost * function(const ENetAddress *, size_t, size_t, enet_uint32, enet_uint32) da_enet_host_create;
72     alias void       function(ENetHost *) da_enet_host_destroy;
73     alias ENetPeer * function(ENetHost *, const ENetAddress *, size_t, enet_uint32) da_enet_host_connect;
74     alias int        function(ENetHost *, ENetEvent *) da_enet_host_check_events;
75     alias int        function(ENetHost *, ENetEvent *, enet_uint32) da_enet_host_service;
76     alias void       function(ENetHost *) da_enet_host_flush;
77     alias void       function(ENetHost *, enet_uint8, ENetPacket *) da_enet_host_broadcast;
78     alias void       function(ENetHost *, const ENetCompressor *) da_enet_host_compress;
79     alias int        function(ENetHost * host) da_enet_host_compress_with_range_coder;
80     alias void       function(ENetHost *, size_t) da_enet_host_channel_limit;
81     alias void       function(ENetHost *, enet_uint32, enet_uint32) da_enet_host_bandwidth_limit;
82     alias int                 function(ENetPeer *, enet_uint8, ENetPacket *) da_enet_peer_send;
83     alias ENetPacket *        function(ENetPeer *, enet_uint8 * channelID) da_enet_peer_receive;
84     alias void                function(ENetPeer *) da_enet_peer_ping;
85     alias void                function(ENetPeer *, enet_uint32) da_enet_peer_ping_interval;
86     alias void                function(ENetPeer *, enet_uint32, enet_uint32, enet_uint32) da_enet_peer_timeout;
87     alias void                function(ENetPeer *) da_enet_peer_reset;
88     alias void                function(ENetPeer *, enet_uint32) da_enet_peer_disconnect;
89     alias void                function(ENetPeer *, enet_uint32) da_enet_peer_disconnect_now;
90     alias void                function(ENetPeer *, enet_uint32) da_enet_peer_disconnect_later;
91     alias void                function(ENetPeer *, enet_uint32, enet_uint32, enet_uint32) da_enet_peer_throttle_configure;
92     alias void * function() da_enet_range_coder_create;
93     alias void   function(void *) da_enet_range_coder_destroy;
94     alias size_t function(void *, const ENetBuffer *, size_t, size_t, enet_uint8 *, size_t) da_enet_range_coder_compress;
95     alias size_t function(void *, const enet_uint8 *, size_t, enet_uint8 *, size_t) da_enet_range_coder_decompress;
96     alias int       function(ENetAddress * address, const char * hostName) da_enet_address_set_host_ip;
97 }
98 
99 __gshared
100 {
101     da_enet_initialize enet_initialize;
102     da_enet_initialize_with_callbacks enet_initialize_with_callbacks;
103     da_enet_deinitialize enet_deinitialize;
104     da_enet_linked_version enet_linked_version;
105     da_enet_time_get enet_time_get;
106     da_enet_socket_create enet_socket_create;
107     da_enet_socket_bind enet_socket_bind;
108     da_enet_socket_get_address enet_socket_get_address;
109     da_enet_socket_listen enet_socket_listen;
110     da_enet_socket_accept enet_socket_accept;
111     da_enet_socket_connect enet_socket_connect;
112     da_enet_socket_send enet_socket_send;
113     da_enet_socket_receive enet_socket_receive;
114     da_enet_socket_wait enet_socket_wait;
115     da_enet_socket_set_option enet_socket_set_option;
116     da_enet_socket_get_option enet_socket_get_option;
117     da_enet_socket_shutdown enet_socket_shutdown;
118     da_enet_socket_destroy enet_socket_destroy;
119     da_enet_socketset_select enet_socketset_select;
120     da_enet_address_set_host enet_address_set_host;
121     da_enet_address_get_host_ip enet_address_get_host_ip;
122     da_enet_address_get_host enet_address_get_host;
123     da_enet_packet_create enet_packet_create;
124     da_enet_packet_destroy enet_packet_destroy;
125     da_enet_packet_resize enet_packet_resize;
126     da_enet_crc32 enet_crc32;
127     da_enet_host_create enet_host_create;
128     da_enet_host_destroy enet_host_destroy;
129     da_enet_host_connect enet_host_connect;
130     da_enet_host_check_events enet_host_check_events;
131     da_enet_host_service enet_host_service;
132     da_enet_host_flush enet_host_flush;
133     da_enet_host_broadcast enet_host_broadcast;
134     da_enet_host_compress enet_host_compress;
135     da_enet_host_compress_with_range_coder enet_host_compress_with_range_coder;
136     da_enet_host_channel_limit enet_host_channel_limit;
137     da_enet_host_bandwidth_limit enet_host_bandwidth_limit;
138     da_enet_peer_send enet_peer_send;
139     da_enet_peer_receive enet_peer_receive;
140     da_enet_peer_ping enet_peer_ping;
141     da_enet_peer_ping_interval enet_peer_ping_interval;
142     da_enet_peer_timeout enet_peer_timeout;
143     da_enet_peer_reset enet_peer_reset;
144     da_enet_peer_disconnect enet_peer_disconnect;
145     da_enet_peer_disconnect_now enet_peer_disconnect_now;
146     da_enet_peer_disconnect_later enet_peer_disconnect_later;
147     da_enet_peer_throttle_configure enet_peer_throttle_configure;
148     da_enet_range_coder_create enet_range_coder_create;
149     da_enet_range_coder_destroy enet_range_coder_destroy;
150     da_enet_range_coder_compress enet_range_coder_compress;
151     da_enet_range_coder_decompress enet_range_coder_decompress;
152     da_enet_address_set_host_ip enet_address_set_host_ip;
153 }
154 
155 
156   
157