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