Skip to content

Commit 3876644

Browse files
Rename FieldInfo the OepenedField
1 parent 151f20d commit 3876644

File tree

5 files changed

+95
-77
lines changed

5 files changed

+95
-77
lines changed

cminesweeper/src/lib.rs

Lines changed: 42 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ macro_rules! initialize_to_ok {
7878

7979
// Based on this https://s3.amazonaws.com/temp.michaelfbryan.com/objects/index.html
8080
#[repr(C)]
81-
pub struct CFieldInfo {
81+
pub struct COpenedField {
8282
row: GameSizeType,
8383
column: GameSizeType,
8484
field_type: FieldType,
@@ -87,9 +87,9 @@ pub struct CFieldInfo {
8787
#[repr(C)]
8888
pub struct COpenInfo {
8989
result: OpenResult,
90-
field_infos_length: ArraySizeType,
91-
field_infos_max_length: ArraySizeType,
92-
field_infos_ptr: *mut CFieldInfo,
90+
newly_opened_fields_length: ArraySizeType,
91+
newly_opened_fields_max_length: ArraySizeType,
92+
newly_opened_fields_ptr: *mut COpenedField,
9393
}
9494

9595
#[repr(C)]
@@ -132,37 +132,39 @@ pub extern "C" fn minesweeper_game_open(
132132
}
133133

134134
let mut c_open_info = unsafe { &mut *c_open_info_ptr };
135-
if c_open_info.field_infos_length != 0 {
135+
if c_open_info.newly_opened_fields_length != 0 {
136136
return_error!(c_ei_ptr, CError::InvalidInput);
137137
}
138-
if c_open_info.field_infos_max_length == 0 {
138+
if c_open_info.newly_opened_fields_max_length == 0 {
139139
return_error!(c_ei_ptr, CError::InsufficientBuffer);
140140
}
141-
if c_open_info.field_infos_ptr.is_null() {
141+
if c_open_info.newly_opened_fields_ptr.is_null() {
142142
return_error!(c_ei_ptr, CError::NullPointerAsInput);
143143
}
144144

145145
let game = unsafe { &mut *game_ptr };
146146
let open_info = return_or_assign!(game.open(row, column), c_ei_ptr);
147147

148-
if open_info.field_infos.len() as ArraySizeType > c_open_info.field_infos_max_length {
148+
if open_info.newly_opened_fields.len() as ArraySizeType
149+
> c_open_info.newly_opened_fields_max_length
150+
{
149151
return;
150152
}
151153
c_open_info.result = open_info.result;
152-
let c_field_infos: &mut [CFieldInfo] = unsafe {
154+
let c_newly_opened_fields: &mut [COpenedField] = unsafe {
153155
slice::from_raw_parts_mut(
154-
c_open_info.field_infos_ptr,
155-
c_open_info.field_infos_max_length as usize,
156+
c_open_info.newly_opened_fields_ptr,
157+
c_open_info.newly_opened_fields_max_length as usize,
156158
)
157159
};
158160
let mut index: usize = 0;
159-
for (coords, field_type) in open_info.field_infos {
160-
c_field_infos[index].row = coords.0;
161-
c_field_infos[index].column = coords.1;
162-
c_field_infos[index].field_type = field_type.clone();
161+
for (coords, field_type) in open_info.newly_opened_fields {
162+
c_newly_opened_fields[index].row = coords.0;
163+
c_newly_opened_fields[index].column = coords.1;
164+
c_newly_opened_fields[index].field_type = field_type.clone();
163165
index = index + 1;
164166
}
165-
c_open_info.field_infos_length = index as ArraySizeType;
167+
c_open_info.newly_opened_fields_length = index as ArraySizeType;
166168
}
167169

168170
#[no_mangle]
@@ -279,21 +281,22 @@ mod test {
279281
data: S,
280282
}
281283

282-
fn create_open_info_with_size(size: usize) -> BufferedData<COpenInfo, CFieldInfo> {
284+
fn create_open_info_with_size(size: usize) -> BufferedData<COpenInfo, COpenedField> {
283285
let mut buffer = Vec::with_capacity(size);
284-
let field_infos_ptr = buffer.as_mut_ptr();
285-
let field_infos_max_length = ArraySizeType::try_from(size).expect("Size conversion failed");
286+
let newly_opened_fields_ptr = buffer.as_mut_ptr();
287+
let newly_opened_fields_max_length =
288+
ArraySizeType::try_from(size).expect("Size conversion failed");
286289
let data = COpenInfo {
287290
result: OpenResult::Boom,
288-
field_infos_length: 0,
289-
field_infos_max_length,
290-
field_infos_ptr,
291+
newly_opened_fields_length: 0,
292+
newly_opened_fields_max_length,
293+
newly_opened_fields_ptr,
291294
};
292295

293296
BufferedData { buffer, data }
294297
}
295298

296-
fn create_open_info_for(game_ptr: *mut Game) -> BufferedData<COpenInfo, CFieldInfo> {
299+
fn create_open_info_for(game_ptr: *mut Game) -> BufferedData<COpenInfo, COpenedField> {
297300
let width = get_width(game_ptr);
298301
let height = get_height(game_ptr);
299302
create_open_info_with_size(usize::try_from(width * height).unwrap())
@@ -454,17 +457,21 @@ mod test {
454457
&mut buffered_error_info.data,
455458
);
456459
assert_ok!(buffered_error_info.data);
457-
assert!(buffered_open_info.data.field_infos_length > 0);
460+
assert!(buffered_open_info.data.newly_opened_fields_length > 0);
458461
assert_eq!(CError::Ok, buffered_error_info.data.error_code);
459462

460-
let field_infos_size = usize::try_from(buffered_open_info.data.field_infos_length).unwrap();
463+
let newly_opened_fields_size =
464+
usize::try_from(buffered_open_info.data.newly_opened_fields_length).unwrap();
461465
let slice = unsafe {
462-
std::slice::from_raw_parts(buffered_open_info.data.field_infos_ptr, field_infos_size)
466+
std::slice::from_raw_parts(
467+
buffered_open_info.data.newly_opened_fields_ptr,
468+
newly_opened_fields_size,
469+
)
463470
};
464-
for field_info in slice.iter() {
465-
assert_ne!(FieldType::Mine, field_info.field_type);
466-
assert!(height >= field_info.row);
467-
assert!(width >= field_info.column);
471+
for newly_opened_field in slice.iter() {
472+
assert_ne!(FieldType::Mine, newly_opened_field.field_type);
473+
assert!(height >= newly_opened_field.row);
474+
assert!(width >= newly_opened_field.column);
468475
}
469476
destroy_game(&mut game_ptr);
470477
}
@@ -493,10 +500,10 @@ mod test {
493500
}
494501

495502
#[test]
496-
fn open_with_not_empty_field_infos() {
503+
fn open_with_not_empty_newly_opened_fields() {
497504
let mut game_ptr = create_game(GameLevel::Beginner);
498505
let mut buffered_open_info = create_open_info_with_size(5);
499-
buffered_open_info.data.field_infos_length = 1;
506+
buffered_open_info.data.newly_opened_fields_length = 1;
500507
let mut error_info = create_empty_error_info();
501508
minesweeper_game_open(
502509
game_ptr,
@@ -510,10 +517,10 @@ mod test {
510517
}
511518

512519
#[test]
513-
fn open_with_nullptr_as_field_infos() {
520+
fn open_with_nullptr_as_newly_opened_fields() {
514521
let mut game_ptr = create_game(GameLevel::Beginner);
515522
let mut buffered_open_info = create_open_info_with_size(5);
516-
buffered_open_info.data.field_infos_ptr = std::ptr::null_mut();
523+
buffered_open_info.data.newly_opened_fields_ptr = std::ptr::null_mut();
517524
let mut error_info = create_empty_error_info();
518525
minesweeper_game_open(
519526
game_ptr,
@@ -530,7 +537,7 @@ mod test {
530537
fn open_with_insufficient_buffer() {
531538
let mut game_ptr = create_game(GameLevel::Beginner);
532539
let mut buffered_open_info = create_open_info_with_size(5);
533-
buffered_open_info.data.field_infos_max_length = 0;
540+
buffered_open_info.data.newly_opened_fields_max_length = 0;
534541
let mut error_info = create_empty_error_info();
535542
minesweeper_game_open(
536543
game_ptr,

minesweeper/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ fn main() {
9393
match read_result {
9494
Ok((Action::Open, r, c)) => {
9595
let open_result = g.open(r, c).expect("Unable to open field");
96-
for (coords, field_type) in &open_result.field_infos {
96+
for (coords, field_type) in &open_result.newly_opened_fields {
9797
fields[coords.0 as usize][coords.1 as usize] = field_type.get_char_repr();
9898
}
9999
last_result = open_result.result;

minesweeper/src/minesweeper_logic/game.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,11 @@ mod test {
175175
}
176176

177177
fn create_default_open_result(row: SizeType, col: SizeType) -> Result<OpenInfo, &'static str> {
178-
let mut field_infos = HashMap::new();
179-
field_infos.insert((row, col), crate::FieldType::Numbered(1));
178+
let mut newly_opened_fields = HashMap::new();
179+
newly_opened_fields.insert((row, col), crate::FieldType::Numbered(1));
180180
Ok(OpenInfo {
181181
result: OpenResult::Ok,
182-
field_infos,
182+
newly_opened_fields,
183183
})
184184
}
185185

minesweeper/src/minesweeper_logic/results.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ pub enum OpenResult {
2323
#[derive(Eq, PartialEq, Debug)]
2424
pub struct OpenInfo {
2525
pub result: OpenResult,
26-
pub field_infos: HashMap<(SizeType, SizeType), FieldType>,
26+
pub newly_opened_fields: HashMap<(SizeType, SizeType), FieldType>,
2727
}

0 commit comments

Comments
 (0)