1#![doc = include_str!("../README.md")]
2#![doc(html_root_url = "https://docs.rs/source2-demo/0.3.2")]
3#![warn(missing_docs)]
4#![allow(clippy::too_many_arguments)]
5
6
7mod display;
8mod entity;
9pub mod error;
10mod event;
11mod macros;
12mod parser;
13mod reader;
14mod string_table;
15
16pub mod proto {
31 pub use source2_demo_protobufs::prost::Message;
32 pub use source2_demo_protobufs::*;
33}
34
35pub mod prelude {
48 pub use crate::entity::{Entity, EntityEvents};
49 pub use crate::event::{EventValue, GameEvent, GameEventList};
50 pub use crate::parser::*;
51 pub use crate::string_table::*;
52 pub use crate::{property, try_property};
53
54 pub use source2_demo_macros::*;
55
56 pub use source2_demo_protobufs::prost::Message;
57 pub use source2_demo_protobufs::EBaseGameEvents;
58 pub use source2_demo_protobufs::EBaseUserMessages;
59 pub use source2_demo_protobufs::EDemoCommands;
60 pub use source2_demo_protobufs::NetMessages;
61 pub use source2_demo_protobufs::SvcMessages;
62
63 #[cfg(feature = "dota")]
64 pub use crate::event::CombatLogEntry;
65 #[cfg(feature = "dota")]
66 pub use crate::proto::EDotaUserMessages;
67
68 #[cfg(feature = "deadlock")]
69 pub use crate::proto::CitadelUserMessageIds;
70 #[cfg(feature = "deadlock")]
71 pub use crate::proto::ECitadelGameEvents;
72
73 #[cfg(feature = "cs2")]
74 pub use crate::proto::ECstrike15UserMessages;
75 #[cfg(feature = "cs2")]
76 pub use crate::proto::ECsgoGameEvents;
77}
78
79pub use crate::entity::field::FieldValue;
81pub use crate::entity::*;
82pub use crate::event::*;
83pub use crate::parser::*;
84pub use crate::string_table::*;
85pub use source2_demo_macros::*;
86
87pub type HashMap<K, V> =
92hashbrown::HashMap<K, V, rustc_hash::FxBuildHasher>;
93
94pub type HashSet<T> =
99hashbrown::HashSet<T, rustc_hash::FxBuildHasher>;
100
101
102#[cfg(feature = "dota")]
103pub use crate::event::CombatLogEntry;
104
105#[cfg(feature = "mimalloc")]
106use mimalloc::MiMalloc;
107#[cfg(feature = "mimalloc")]
108#[global_allocator]
109static GLOBAL: MiMalloc = MiMalloc;