1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! `hao` is a library for reading and writing .net modules and assemblies in rust.
//!
//! Currently, `hao` is quite struct with the binaries it recieved, erroring with malfomed
//! binaries rather than attempting to ignore the issues. Though the plan is to impliment
//! a feature flag that can optionally continue parsing the file and expose the raw, non-sanitary
//! parts that it encounters.
//!
//! The current state of this library is read-only with .net framework/core files and largely untested with mono, however
//! mono support is definetly going to be supported in the future.
//!
//! The entrypoint for this library is the [`Module`] struct. You can get started with loading a module like so:
//!
//! ```no_run
//! use hao::{dotnet::md::streams::tables_stream::FieldFlags, Module};
//!
//! fn main() {
//! let module = Module::from_path(r#"C:\re\dnspy\bin\dnlib.dll"#).unwrap();
//! println!("loaded");
//!
//! for ty in module.types().values() {
//! println!("{} {{", ty);
//! if ty.is_enum() {
//! for field in ty
//! .fields()
//! .values()
//! .filter(|x| !x.flags().contains(FieldFlags::SpecialName))
//! {
//! println!("\t{},", field.name());
//! }
//! } else {
//! for field in ty.fields().values() {
//! println!("\t{};", field);
//! }
//! }
//!
//! println!("}}");
//! }
//! }
//! ```
//!
//! this will print out all the types close-to c# syntax.
pub use ;