luaur_analysis/records/
state_dot.rs1use 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}