1use crate::blocks::BlockKey;
2use crate::operations::OpKey;
3use serde::{Deserialize, Serialize};
4use slotmap::new_key_type;
5
6new_key_type! {
7 pub struct RegionKey;
8}
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct RegionData {
12 pub blocks: Vec<BlockKey>,
13 pub entry_block: Option<BlockKey>,
14 pub parent_op: Option<OpKey>,
15}
16
17impl RegionData {
18 pub fn new() -> Self {
19 Self {
20 blocks: Vec::new(),
21 entry_block: None,
22 parent_op: None,
23 }
24 }
25
26 pub fn num_blocks(&self) -> usize {
27 self.blocks.len()
28 }
29}
30
31impl Default for RegionData {
32 fn default() -> Self {
33 Self::new()
34 }
35}