@@ -17,6 +17,9 @@ pub enum CError {
17
17
UnexpectedError ,
18
18
}
19
19
20
+ type GameSizeType = minesweeper:: SizeType ;
21
+ type ArraySizeType = u64 ;
22
+
20
23
macro_rules! return_error {
21
24
( $error_info_ptr: ident, $error_code: expr, $error_msg: expr) => { {
22
25
let error_info = unsafe { & mut * $error_info_ptr } ;
@@ -37,7 +40,7 @@ macro_rules! return_error {
37
40
* error_info
38
41
. error_message
39
42
. offset( len_without_terminator as isize ) = 0 ;
40
- error_info. error_message_length = len_without_terminator as u64 ;
43
+ error_info. error_message_length = len_without_terminator as ArraySizeType ;
41
44
}
42
45
}
43
46
error_info. error_code = $error_code;
@@ -74,27 +77,26 @@ macro_rules! initialize_to_ok {
74
77
}
75
78
76
79
// Based on this https://s3.amazonaws.com/temp.michaelfbryan.com/objects/index.html
77
-
78
80
#[ repr( C ) ]
79
81
pub struct CFieldInfo {
80
- row : minesweeper :: SizeType ,
81
- column : minesweeper :: SizeType ,
82
+ row : GameSizeType ,
83
+ column : GameSizeType ,
82
84
field_type : FieldType ,
83
85
}
84
86
85
87
#[ repr( C ) ]
86
88
pub struct COpenInfo {
87
89
result : OpenResult ,
88
- field_infos_length : u64 ,
89
- field_infos_max_length : u64 ,
90
+ field_infos_length : ArraySizeType ,
91
+ field_infos_max_length : ArraySizeType ,
90
92
field_infos_ptr : * mut CFieldInfo ,
91
93
}
92
94
93
95
#[ repr( C ) ]
94
96
pub struct CErrorInfo {
95
97
error_code : CError ,
96
- error_message_length : u64 ,
97
- error_message_max_length : u64 ,
98
+ error_message_length : ArraySizeType ,
99
+ error_message_max_length : ArraySizeType ,
98
100
error_message : * mut c_char ,
99
101
}
100
102
@@ -119,8 +121,8 @@ pub extern "C" fn minesweeper_new_game(
119
121
#[ no_mangle]
120
122
pub extern "C" fn minesweeper_game_open (
121
123
game_ptr : * mut Game ,
122
- row : minesweeper :: SizeType ,
123
- column : minesweeper :: SizeType ,
124
+ row : GameSizeType ,
125
+ column : GameSizeType ,
124
126
c_open_info_ptr : * mut COpenInfo ,
125
127
c_ei_ptr : * mut CErrorInfo ,
126
128
) {
@@ -143,7 +145,7 @@ pub extern "C" fn minesweeper_game_open(
143
145
let game = unsafe { & mut * game_ptr } ;
144
146
let open_info = return_or_assign ! ( game. open( row, column) , c_ei_ptr) ;
145
147
146
- if open_info. field_infos . len ( ) as u64 > c_open_info. field_infos_max_length {
148
+ if open_info. field_infos . len ( ) as ArraySizeType > c_open_info. field_infos_max_length {
147
149
return ;
148
150
}
149
151
c_open_info. result = open_info. result ;
@@ -160,14 +162,14 @@ pub extern "C" fn minesweeper_game_open(
160
162
c_field_infos[ index] . field_type = field_type. clone ( ) ;
161
163
index = index + 1 ;
162
164
}
163
- c_open_info. field_infos_length = index as u64 ;
165
+ c_open_info. field_infos_length = index as ArraySizeType ;
164
166
}
165
167
166
168
#[ no_mangle]
167
169
pub extern "C" fn minesweeper_game_toggle_flag (
168
170
game_ptr : * mut Game ,
169
- row : minesweeper :: SizeType ,
170
- column : minesweeper :: SizeType ,
171
+ row : GameSizeType ,
172
+ column : GameSizeType ,
171
173
field_flag_result_ptr : * mut FlagResult ,
172
174
c_ei_ptr : * mut CErrorInfo ,
173
175
) {
@@ -202,7 +204,7 @@ pub extern "C" fn minesweeper_destroy_game(
202
204
#[ no_mangle]
203
205
pub extern "C" fn minesweeper_game_get_width (
204
206
game_ptr : * const Game ,
205
- width_ptr : * mut minesweeper :: SizeType ,
207
+ width_ptr : * mut GameSizeType ,
206
208
c_ei_ptr : * mut CErrorInfo ,
207
209
) {
208
210
initialize_to_ok ! ( c_ei_ptr) ;
@@ -217,7 +219,7 @@ pub extern "C" fn minesweeper_game_get_width(
217
219
#[ no_mangle]
218
220
pub extern "C" fn minesweeper_game_get_height (
219
221
game_ptr : * const Game ,
220
- height_ptr : * mut minesweeper :: SizeType ,
222
+ height_ptr : * mut GameSizeType ,
221
223
c_ei_ptr : * mut CErrorInfo ,
222
224
) {
223
225
initialize_to_ok ! ( c_ei_ptr) ;
@@ -280,7 +282,7 @@ mod test {
280
282
fn create_open_info_with_size ( size : usize ) -> BufferedData < COpenInfo , CFieldInfo > {
281
283
let mut buffer = Vec :: with_capacity ( size) ;
282
284
let field_infos_ptr = buffer. as_mut_ptr ( ) ;
283
- let field_infos_max_length = u64 :: try_from ( size) . expect ( "Size conversion failed" ) ;
285
+ let field_infos_max_length = ArraySizeType :: try_from ( size) . expect ( "Size conversion failed" ) ;
284
286
let data = COpenInfo {
285
287
result : OpenResult :: Boom ,
286
288
field_infos_length : 0 ,
@@ -309,7 +311,7 @@ mod test {
309
311
let mut data = CErrorInfo {
310
312
error_code : CError :: UnexpectedError ,
311
313
error_message_length : 0 ,
312
- error_message_max_length : u64 :: try_from ( max_error_length)
314
+ error_message_max_length : ArraySizeType :: try_from ( max_error_length)
313
315
. expect ( "Size conversion failed" ) ,
314
316
error_message,
315
317
} ;
@@ -333,7 +335,7 @@ mod test {
333
335
result
334
336
}
335
337
336
- fn get_width ( game_ptr : * mut Game ) -> minesweeper :: SizeType {
338
+ fn get_width ( game_ptr : * mut Game ) -> GameSizeType {
337
339
let mut error_info = create_empty_error_info ( ) ;
338
340
let mut width = 0 ;
339
341
@@ -344,7 +346,7 @@ mod test {
344
346
width
345
347
}
346
348
347
- fn get_height ( game_ptr : * mut Game ) -> minesweeper :: SizeType {
349
+ fn get_height ( game_ptr : * mut Game ) -> GameSizeType {
348
350
let mut error_info = create_empty_error_info ( ) ;
349
351
let mut height = 0 ;
350
352
0 commit comments