|
1 /* |
|
2 * Hedgewars, a free turn based strategy game |
|
3 * Copyright (C) 2012 Simeon Maxein <smaxein@googlemail.com> |
|
4 * |
|
5 * This program is free software; you can redistribute it and/or |
|
6 * modify it under the terms of the GNU General Public License |
|
7 * as published by the Free Software Foundation; either version 2 |
|
8 * of the License, or (at your option) any later version. |
|
9 * |
|
10 * This program is distributed in the hope that it will be useful, |
|
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 * GNU General Public License for more details. |
|
14 * |
|
15 * You should have received a copy of the GNU General Public License |
|
16 * along with this program; if not, write to the Free Software |
|
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
18 */ |
|
19 |
|
20 /* |
|
21 * This file is not directly part of the frontlib and is not required to build it. |
|
22 * However, it is recommended to include it in compilation when building for Android. The purpose of this file |
|
23 * is to ensure consistency between the function signatures of the JNA Java bindings of the Android port and the |
|
24 * frontlib functions. |
|
25 * |
|
26 * This file, in essence, consists only of function declarations. They are duplicates of function declarations |
|
27 * from the frontlib headers that are referenced from JNA bindings. If the signature of one of these functions |
|
28 * changes in the frontlib, it will no longer match the signature in this file, and the compiler will show an error. |
|
29 * If that happens, you need to update the JNA bindings in Hedgeroid to match the new function signature, and then |
|
30 * update this file. |
|
31 * |
|
32 * The reason for all this is that JNA does not actually know the function signatures of the functions it binds, |
|
33 * it derives them from Java method declarations. If those do not match the actual function signatures, you will |
|
34 * only notice when you suddenly get strange (and possibly hard to track down) problems at runtime. This file is |
|
35 * an attempt to detect these problems at compile time instead. Notice that it will NOT detect changes to structs |
|
36 * or constants though, which also require updates to the JNA bindings. |
|
37 */ |
|
38 |
|
39 /* |
|
40 * Before we include the frontlib headers, we define away the const keyword. This is necessary because there is no |
|
41 * distinction between const and non-const types on the JNA side, and we don't want the compiler to complain because |
|
42 * of bad constness. |
|
43 * |
|
44 * This is so evil, but it works... |
|
45 */ |
|
46 #define const |
|
47 |
|
48 #include "../frontlib.h" |
|
49 |
|
50 /* |
|
51 * Now we map the Java types to the corresponding C types... |
|
52 */ |
|
53 typedef flib_netconn *NetconnPtr; |
|
54 typedef flib_gameconn *GameconnPtr; |
|
55 typedef flib_mapconn *MapconnPtr; |
|
56 typedef flib_metascheme *MetaschemePtr; |
|
57 typedef flib_room **RoomArrayPtr; |
|
58 typedef flib_weaponset *WeaponsetPtr; |
|
59 typedef flib_weaponsetlist *WeaponsetListPtr; |
|
60 typedef flib_map *MapRecipePtr; |
|
61 typedef flib_scheme *SchemePtr; |
|
62 typedef flib_schemelist *SchemelistPtr; |
|
63 |
|
64 typedef flib_room *RoomPtr; |
|
65 typedef flib_team *TeamPtr; |
|
66 typedef flib_gamesetup *GameSetupPtr; |
|
67 typedef bool boolean; |
|
68 typedef size_t NativeLong; |
|
69 typedef void *Pointer; |
|
70 typedef char *String; |
|
71 typedef uint8_t *Buffer; |
|
72 |
|
73 /* |
|
74 * Mapping callback types |
|
75 */ |
|
76 typedef void (*VoidCallback)(Pointer context); |
|
77 typedef void (*StrCallback)(Pointer context, String arg1); |
|
78 typedef void (*IntCallback)(Pointer context, int arg1); |
|
79 typedef void (*IntStrCallback)(Pointer context, int arg1, String arg2); |
|
80 typedef void (*StrIntCallback)(Pointer context, String arg1, int arg2); |
|
81 typedef void (*StrStrCallback)(Pointer context, String arg1, String arg2); |
|
82 typedef void (*RoomCallback)(Pointer context, RoomPtr arg1); |
|
83 typedef void (*RoomListCallback)(Pointer context, RoomArrayPtr arg1, int arg2); |
|
84 typedef void (*StrRoomCallback)(Pointer context, String arg1, RoomPtr arg2); |
|
85 typedef void (*BoolCallback)(Pointer context, boolean arg1); |
|
86 typedef void (*StrBoolCallback)(Pointer context, String arg1, boolean arg2); |
|
87 typedef void (*TeamCallback)(Pointer context, TeamPtr arg1); |
|
88 typedef void (*BytesCallback)(Pointer context, const uint8_t *buffer, NativeLong size); |
|
89 typedef void (*BytesBoolCallback)(Pointer context, const uint8_t *buffer, NativeLong size, boolean arg3); |
|
90 typedef void (*SchemeCallback)(Pointer context, SchemePtr arg1); |
|
91 typedef void (*MapIntCallback)(Pointer context, MapRecipePtr arg1, int arg2); |
|
92 typedef void (*WeaponsetCallback)(Pointer context, WeaponsetPtr arg1); |
|
93 typedef void (*MapimageCallback)(Pointer context, const uint8_t *mapimage, int hogs); |
|
94 typedef void (*LogCallback)(int arg1, String arg2); |
|
95 |
|
96 /* |
|
97 * Below here are the copypasted method declarations from the JNA bindings |
|
98 */ |
|
99 |
|
100 // frontlib.h |
|
101 int flib_init(); |
|
102 void flib_quit(); |
|
103 |
|
104 // net/netconn.h |
|
105 NetconnPtr flib_netconn_create(String playerName, MetaschemePtr meta, String dataDirPath, String host, int port); |
|
106 void flib_netconn_destroy(NetconnPtr conn); |
|
107 |
|
108 void flib_netconn_tick(NetconnPtr conn); |
|
109 boolean flib_netconn_is_chief(NetconnPtr conn); |
|
110 String flib_netconn_get_playername(NetconnPtr conn); |
|
111 GameSetupPtr flib_netconn_create_gamesetup(NetconnPtr conn); |
|
112 int flib_netconn_send_quit(NetconnPtr conn, String quitmsg); |
|
113 int flib_netconn_send_chat(NetconnPtr conn, String chat); |
|
114 int flib_netconn_send_teamchat(NetconnPtr conn, String msg); |
|
115 int flib_netconn_send_password(NetconnPtr conn, String passwd); |
|
116 int flib_netconn_send_nick(NetconnPtr conn, String nick); |
|
117 int flib_netconn_send_request_roomlist(NetconnPtr conn); |
|
118 int flib_netconn_send_joinRoom(NetconnPtr conn, String room); |
|
119 int flib_netconn_send_createRoom(NetconnPtr conn, String room); |
|
120 int flib_netconn_send_renameRoom(NetconnPtr conn, String roomName); |
|
121 int flib_netconn_send_leaveRoom(NetconnPtr conn, String msg); |
|
122 int flib_netconn_send_toggleReady(NetconnPtr conn); |
|
123 int flib_netconn_send_addTeam(NetconnPtr conn, TeamPtr team); |
|
124 int flib_netconn_send_removeTeam(NetconnPtr conn, String teamname); |
|
125 int flib_netconn_send_engineMessage(NetconnPtr conn, Buffer message, NativeLong size); |
|
126 int flib_netconn_send_teamHogCount(NetconnPtr conn, String teamname, int hogcount); |
|
127 int flib_netconn_send_teamColor(NetconnPtr conn, String teamname, int colorIndex); |
|
128 int flib_netconn_send_weaponset(NetconnPtr conn, WeaponsetPtr weaponset); |
|
129 int flib_netconn_send_map(NetconnPtr conn, MapRecipePtr map); |
|
130 int flib_netconn_send_mapName(NetconnPtr conn, String mapName); |
|
131 int flib_netconn_send_mapGen(NetconnPtr conn, int mapGen); |
|
132 int flib_netconn_send_mapTemplate(NetconnPtr conn, int templateFilter); |
|
133 int flib_netconn_send_mapMazeSize(NetconnPtr conn, int mazeSize); |
|
134 int flib_netconn_send_mapSeed(NetconnPtr conn, String seed); |
|
135 int flib_netconn_send_mapTheme(NetconnPtr conn, String theme); |
|
136 int flib_netconn_send_mapDrawdata(NetconnPtr conn, Buffer drawData, NativeLong size); |
|
137 int flib_netconn_send_script(NetconnPtr conn, String scriptName); |
|
138 int flib_netconn_send_scheme(NetconnPtr conn, SchemePtr scheme); |
|
139 int flib_netconn_send_roundfinished(NetconnPtr conn, boolean withoutError); |
|
140 int flib_netconn_send_ban(NetconnPtr conn, String playerName); |
|
141 int flib_netconn_send_kick(NetconnPtr conn, String playerName); |
|
142 int flib_netconn_send_playerInfo(NetconnPtr conn, String playerName); |
|
143 int flib_netconn_send_playerFollow(NetconnPtr conn, String playerName); |
|
144 int flib_netconn_send_startGame(NetconnPtr conn); |
|
145 int flib_netconn_send_toggleRestrictJoins(NetconnPtr conn); |
|
146 int flib_netconn_send_toggleRestrictTeams(NetconnPtr conn); |
|
147 int flib_netconn_send_clearAccountsCache(NetconnPtr conn); |
|
148 int flib_netconn_send_setServerVar(NetconnPtr conn, String name, String value); |
|
149 int flib_netconn_send_getServerVars(NetconnPtr conn); |
|
150 |
|
151 void flib_netconn_onMessage(NetconnPtr conn, IntStrCallback callback, Pointer context); |
|
152 void flib_netconn_onChat(NetconnPtr conn, StrStrCallback callback, Pointer context); |
|
153 void flib_netconn_onConnected(NetconnPtr conn, VoidCallback callback, Pointer context); |
|
154 void flib_netconn_onDisconnected(NetconnPtr conn, IntStrCallback callback, Pointer context); |
|
155 void flib_netconn_onRoomlist(NetconnPtr conn, RoomListCallback callback, Pointer context); |
|
156 void flib_netconn_onRoomAdd(NetconnPtr conn, RoomCallback callback, Pointer context); |
|
157 void flib_netconn_onRoomDelete(NetconnPtr conn, StrCallback callback, Pointer context); |
|
158 void flib_netconn_onRoomUpdate(NetconnPtr conn, StrRoomCallback callback, Pointer context); |
|
159 void flib_netconn_onLobbyJoin(NetconnPtr conn, StrCallback callback, Pointer context); |
|
160 void flib_netconn_onLobbyLeave(NetconnPtr conn, StrStrCallback callback, Pointer context); |
|
161 void flib_netconn_onNickTaken(NetconnPtr conn, StrCallback callback, Pointer context); |
|
162 void flib_netconn_onPasswordRequest(NetconnPtr conn, StrCallback callback, Pointer context); |
|
163 void flib_netconn_onEnterRoom(NetconnPtr conn, BoolCallback callback, Pointer context); |
|
164 void flib_netconn_onRoomChiefStatus(NetconnPtr conn, BoolCallback callback, Pointer context); |
|
165 void flib_netconn_onReadyState(NetconnPtr conn, StrBoolCallback callback, Pointer context); |
|
166 void flib_netconn_onLeaveRoom(NetconnPtr conn, IntStrCallback callback, Pointer context); |
|
167 void flib_netconn_onTeamAdd(NetconnPtr conn, TeamCallback callback, Pointer context); |
|
168 void flib_netconn_onTeamDelete(NetconnPtr conn, StrCallback callback, Pointer context); |
|
169 void flib_netconn_onRoomJoin(NetconnPtr conn, StrCallback callback, Pointer context); |
|
170 void flib_netconn_onRoomLeave(NetconnPtr conn, StrStrCallback callback, Pointer context); |
|
171 void flib_netconn_onRunGame(NetconnPtr conn, VoidCallback callback, Pointer context); |
|
172 void flib_netconn_onTeamAccepted(NetconnPtr conn, StrCallback callback, Pointer context); |
|
173 void flib_netconn_onHogCountChanged(NetconnPtr conn, StrIntCallback callback, Pointer context); |
|
174 void flib_netconn_onTeamColorChanged(NetconnPtr conn, StrIntCallback callback, Pointer context); |
|
175 void flib_netconn_onEngineMessage(NetconnPtr conn, BytesCallback callback, Pointer context); |
|
176 void flib_netconn_onCfgScheme(NetconnPtr conn, SchemeCallback callback, Pointer context); |
|
177 void flib_netconn_onMapChanged(NetconnPtr conn, MapIntCallback callback, Pointer context); |
|
178 void flib_netconn_onScriptChanged(NetconnPtr conn, StrCallback callback, Pointer context); |
|
179 void flib_netconn_onWeaponsetChanged(NetconnPtr conn, WeaponsetCallback callback, Pointer context); |
|
180 void flib_netconn_onAdminAccess(NetconnPtr conn, VoidCallback callback, Pointer context); |
|
181 void flib_netconn_onServerVar(NetconnPtr conn, StrStrCallback callback, Pointer context); |
|
182 |
|
183 // ipc/gameconn.h |
|
184 GameconnPtr flib_gameconn_create(String playerName, GameSetupPtr setup, boolean netgame); |
|
185 GameconnPtr flib_gameconn_create_playdemo(Buffer demo, NativeLong size); |
|
186 GameconnPtr flib_gameconn_create_loadgame(String playerName, Buffer save, NativeLong size); |
|
187 GameconnPtr flib_gameconn_create_campaign(String playerName, String seed, String script); |
|
188 |
|
189 void flib_gameconn_destroy(GameconnPtr conn); |
|
190 int flib_gameconn_getport(GameconnPtr conn); |
|
191 void flib_gameconn_tick(GameconnPtr conn); |
|
192 |
|
193 int flib_gameconn_send_enginemsg(GameconnPtr conn, Buffer data, NativeLong len); |
|
194 int flib_gameconn_send_textmsg(GameconnPtr conn, int msgtype, String msg); |
|
195 int flib_gameconn_send_chatmsg(GameconnPtr conn, String playername, String msg); |
|
196 int flib_gameconn_send_quit(GameconnPtr conn); |
|
197 |
|
198 void flib_gameconn_onConnect(GameconnPtr conn, VoidCallback callback, Pointer context); |
|
199 void flib_gameconn_onDisconnect(GameconnPtr conn, IntCallback callback, Pointer context); |
|
200 void flib_gameconn_onErrorMessage(GameconnPtr conn, StrCallback callback, Pointer context); |
|
201 void flib_gameconn_onChat(GameconnPtr conn, StrBoolCallback callback, Pointer context); |
|
202 void flib_gameconn_onGameRecorded(GameconnPtr conn, BytesBoolCallback callback, Pointer context); |
|
203 void flib_gameconn_onEngineMessage(GameconnPtr conn, BytesCallback callback, Pointer context); |
|
204 |
|
205 // ipc/mapconn.h |
|
206 MapconnPtr flib_mapconn_create(MapRecipePtr mapdesc); |
|
207 void flib_mapconn_destroy(MapconnPtr conn); |
|
208 int flib_mapconn_getport(MapconnPtr conn); |
|
209 void flib_mapconn_onSuccess(MapconnPtr conn, MapimageCallback callback, Pointer context); |
|
210 void flib_mapconn_onFailure(MapconnPtr conn, StrCallback callback, Pointer context); |
|
211 void flib_mapconn_tick(MapconnPtr conn); |
|
212 |
|
213 // model/scheme.h |
|
214 MetaschemePtr flib_metascheme_from_ini(String filename); |
|
215 MetaschemePtr flib_metascheme_retain(MetaschemePtr metainfo); |
|
216 void flib_metascheme_release(MetaschemePtr metainfo); |
|
217 |
|
218 // model/schemelist.h |
|
219 SchemelistPtr flib_schemelist_from_ini(MetaschemePtr meta, String filename); |
|
220 int flib_schemelist_to_ini(String filename, SchemelistPtr list); |
|
221 void flib_schemelist_destroy(SchemelistPtr list); |
|
222 |
|
223 // model/team.h |
|
224 TeamPtr flib_team_from_ini(String filename); |
|
225 int flib_team_to_ini(String filename, TeamPtr team); |
|
226 void flib_team_destroy(TeamPtr team); |
|
227 |
|
228 // model/weapon.h |
|
229 WeaponsetListPtr flib_weaponsetlist_from_ini(String filename); |
|
230 int flib_weaponsetlist_to_ini(String filename, WeaponsetListPtr weaponsets); |
|
231 void flib_weaponsetlist_destroy(WeaponsetListPtr list); |
|
232 |
|
233 // util/logging.h |
|
234 void flib_log_setLevel(int level); |
|
235 void flib_log_setCallback(LogCallback callback); |