Skip to main content

lift_core/
regions.rs

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}