1pub mod symbol;
25pub mod bridge;
26pub mod cli;
27
28pub use symbol::{
30 SymbolUniverse,
31 SymbolUniverseGuard,
32 UniverseSnapshot,
33 SymbolStorage,
34 SoAStorage,
35 ChainedIndex,
36 SymbolChain,
37 DefinitionLocation,
38 SymbolLinker,
39 LinkResolver,
40 LockFreeLink,
41 MmapIndex,
42 MemoryMappedStorage,
43 Symbol,
44 Package,
45 Import,
46 SymbolKind,
47 Visibility,
48 SymbolId,
49 PackageId,
50 UniverseStats,
51 SymbolError,
52 Result,
53};
54
55pub mod prelude {
56 pub use crate::symbol::{
59 SymbolUniverse,
60 SymbolId,
61 PackageId,
62 SymbolKind,
63 Visibility,
64 DefinitionLocation,
65 };
66}
67
68pub const VERSION: &str = env!("CARGO_PKG_VERSION");
70
71pub const ARCHIVE_MAGIC: &[u8; 4] = b"WLSK";
73
74#[cfg(test)]
75mod tests {
76 use super::*;
77 use symbol::{Symbol, SymbolKind, Visibility, UniverseBuilder, DefinitionLocation};
78
79 #[test]
80 fn test_end_to_end() {
81 let mut builder = UniverseBuilder::with_capacity(10, 2);
83
84 builder.add_package(symbol::Package {
86 id: 1,
87 path_offset: 0,
88 path_len: 10,
89 name_offset: 10,
90 name_len: 4,
91 version_offset: 0,
92 version_len: 0,
93 first_symbol: 1,
94 symbol_count: 2,
95 import_count: 0,
96 });
97
98 builder.add_symbol(
100 Symbol::new(1, 1, SymbolKind::Function, 0, 4),
101 DefinitionLocation::new(1, 100)
102 );
103
104 builder.add_symbol(
105 Symbol::new(2, 1, SymbolKind::Type, 4, 3),
106 DefinitionLocation::new(1, 200)
107 );
108
109 let universe = builder.build();
111
112 let guard = universe.read();
114 let sym = guard.get_symbol(SymbolId::new(1));
115 assert!(sym.is_some());
116 assert_eq!(sym.unwrap().id, 1);
117 }
118}