Print field types

This commit is contained in:
a2x
2023-10-01 14:43:48 +10:00
parent 18e90bcf8c
commit 6d04af2758
73 changed files with 40045 additions and 39911 deletions

View File

@@ -1,4 +1,5 @@
use crate::builder::FileBuilderEnum;
use crate::dumpers::Entry;
use crate::error::Result;
use crate::remote::Process;
use crate::sdk::SchemaSystem;
@@ -9,29 +10,42 @@ pub fn dump_schemas(builders: &mut Vec<FileBuilderEnum>, process: &Process) -> R
let schema_system = SchemaSystem::new(&process)?;
for type_scope in schema_system.type_scopes()? {
log::info!("Generating files for {}...", type_scope.module_name()?);
let module_name = type_scope.module_name()?;
log::info!("Generating files for {}...", module_name);
let mut entries = Entries::new();
for class in type_scope.classes()? {
log::info!(" [{}]", class.name());
log::debug!(" {}", class.name());
for field in class.fields()? {
log::info!(" [{}] = {:#X}", field.name()?, field.offset()?);
let field_name = field.name()?;
let field_offset = field.offset()?;
let type_name = field.r#type()?.name()?;
log::debug!(
" └─ {} = {:#X} // {}",
field_name,
field_offset,
type_name
);
entries
.entry(class.name().replace("::", "_"))
.or_default()
.push((field.name()?, field.offset()? as usize));
.push(Entry {
name: field_name,
value: field_offset as usize,
comment: Some(type_name),
});
}
}
if entries.is_empty() {
continue;
}
for builder in builders.iter_mut() {
generate_file(builder, &type_scope.module_name()?, &entries)?;
if !entries.is_empty() {
for builder in builders.iter_mut() {
generate_file(builder, &module_name, &entries)?;
}
}
}