Skip to main content

luaur_analysis/records/
state_dot.rs

1use crate::records::to_dot_options::ToDotOptions;
2use crate::type_aliases::type_id::TypeId;
3use crate::type_aliases::type_pack_id::TypePackId;
4use alloc::string::String;
5use luaur_common::records::dense_hash_map::DenseHashMap;
6use luaur_common::records::dense_hash_set::DenseHashSet;
7
8#[derive(Debug, Clone)]
9pub struct StateDot {
10    pub(crate) opts: ToDotOptions,
11    pub(crate) seen_ty: DenseHashSet<TypeId>,
12    pub(crate) seen_tp: DenseHashSet<TypePackId>,
13    pub(crate) ty_to_index: DenseHashMap<TypeId, i32>,
14    pub(crate) tp_to_index: DenseHashMap<TypePackId, i32>,
15    pub(crate) next_index: i32,
16    pub(crate) result: String,
17}
18
19impl StateDot {
20    pub fn new(opts: ToDotOptions) -> Self {
21        Self {
22            opts,
23            seen_ty: DenseHashSet::new(core::ptr::null_mut()),
24            seen_tp: DenseHashSet::new(core::ptr::null_mut()),
25            ty_to_index: DenseHashMap::new(core::ptr::null_mut()),
26            tp_to_index: DenseHashMap::new(core::ptr::null_mut()),
27            next_index: 1,
28            result: String::new(),
29        }
30    }
31}