use crate::{error::Result, io::ReadData};
use super::{tables::*, TablesStreamReader};
#[derive(Debug, Clone)]
pub struct TablesValues {
pub module: Vec<ModulesTableRow>,
pub type_ref: Vec<TypeRefTableRow>,
pub type_def: Vec<TypeDefTableRow>,
pub field_ptr: Vec<FieldPtrTableRow>,
pub field: Vec<FieldTableRow>,
pub method_ptr: Vec<MethodPtrTableRow>,
pub method: Vec<MethodTableRow>,
pub param_ptr: Vec<ParamPtrTableRow>,
pub param: Vec<ParamTableRow>,
pub interface_impl: Vec<InterfaceImplTableRow>,
pub member_ref: Vec<MemberRefTableRow>,
pub constant: Vec<ConstantTableRow>,
pub custom_attribute: Vec<CustomAttributeTableRow>,
pub field_marshal: Vec<FieldMarshalTableRow>,
pub decl_security: Vec<DeclSecurityTableRow>,
pub class_layout: Vec<ClassLayoutTableRow>,
pub field_layout: Vec<FieldLayoutTableRow>,
pub stand_alone_sig: Vec<StandAloneSigTableRow>,
pub event_map: Vec<EventMapTableRow>,
pub event_ptr: Vec<EventPtrTableRow>,
pub event: Vec<EventTableRow>,
pub property_map: Vec<PropertyMapTableRow>,
pub property_ptr: Vec<PropertyPtrTableRow>,
pub property: Vec<PropertyTableRow>,
pub method_semantics: Vec<MethodSemanticsTableRow>,
pub method_impl: Vec<MethodImplTableRow>,
pub module_ref: Vec<ModuleRefTableRow>,
pub type_spec: Vec<TypeSpecTableRow>,
pub impl_map: Vec<ImplMapTableRow>,
pub field_rva: Vec<FieldRVATableRow>,
pub enc_log: Vec<ENCLogTableRow>,
pub enc_map: Vec<ENCMapTableRow>,
pub assembly: AssemblyTableRow,
pub assembly_processor: Vec<AssemblyProcessorTableRow>,
pub assembly_os: Vec<AssemblyOSTableRow>,
pub assembly_ref: Vec<AssemblyRefTableRow>,
pub assembly_ref_processor: Vec<AssemblyRefProcessorTableRow>,
pub assembly_ref_os: Vec<AssemblyRefOSTableRow>,
pub file: Vec<FileTableRow>,
pub exported_type: Vec<ExportedTypeTableRow>,
pub manifest_resource: Vec<ManifestResourceTableRow>,
pub nested_class: Vec<NestedClassTableRow>,
pub generic_param: Vec<GenericParamTableRow>,
pub method_spec: Vec<MethodSpecTableRow>,
pub generic_param_constraint: Vec<GenericParamConstraintTableRow>,
pub method_debug_information: Vec<MethodDebugInformationTableRow>,
pub local_scope: Vec<LocalScopeTableRow>,
pub local_variable: Vec<LocalVariableTableRow>,
pub local_constant: Vec<LocalConstantTableRow>,
pub import_scope: Vec<ImportScopeTableRow>,
pub state_machine_method: Vec<StateMachineMethodTableRow>,
pub custom_debug_information: Vec<CustomDebugInformationTableRow>,
}
impl<'a> ReadData<TablesValues> for TablesStreamReader<'a> {
fn read(&mut self) -> Result<TablesValues> {
Ok(TablesValues {
module: self.read_rows(self.header.table_locations.module)?,
type_ref: self.read_rows(self.header.table_locations.type_ref)?,
type_def: self.read_rows(self.header.table_locations.type_def)?,
field_ptr: self.read_rows(self.header.table_locations.field_ptr)?,
field: self.read_rows(self.header.table_locations.field)?,
method_ptr: self.read_rows(self.header.table_locations.method_ptr)?,
method: self.read_rows(self.header.table_locations.method)?,
param_ptr: self.read_rows(self.header.table_locations.param_ptr)?,
param: self.read_rows(self.header.table_locations.param)?,
interface_impl: self.read_rows(self.header.table_locations.interface_impl)?,
member_ref: self.read_rows(self.header.table_locations.member_ref)?,
constant: self.read_rows(self.header.table_locations.constant)?,
custom_attribute: self.read_rows(self.header.table_locations.custom_attribute)?,
field_marshal: self.read_rows(self.header.table_locations.field_marshal)?,
decl_security: self.read_rows(self.header.table_locations.decl_security)?,
class_layout: self.read_rows(self.header.table_locations.class_layout)?,
field_layout: self.read_rows(self.header.table_locations.field_layout)?,
stand_alone_sig: self.read_rows(self.header.table_locations.stand_alone_sig)?,
event_map: self.read_rows(self.header.table_locations.event_map)?,
event_ptr: self.read_rows(self.header.table_locations.event_ptr)?,
event: self.read_rows(self.header.table_locations.event)?,
property_map: self.read_rows(self.header.table_locations.property_map)?,
property_ptr: self.read_rows(self.header.table_locations.property_ptr)?,
property: self.read_rows(self.header.table_locations.property)?,
method_semantics: self.read_rows(self.header.table_locations.method_semantics)?,
method_impl: self.read_rows(self.header.table_locations.method_impl)?,
module_ref: self.read_rows(self.header.table_locations.module_ref)?,
type_spec: self.read_rows(self.header.table_locations.type_spec)?,
impl_map: self.read_rows(self.header.table_locations.impl_map)?,
field_rva: self.read_rows(self.header.table_locations.field_rva)?,
enc_log: self.read_rows(self.header.table_locations.enc_log)?,
enc_map: self.read_rows(self.header.table_locations.enc_map)?,
assembly: self.read()?,
assembly_processor: self.read_rows(self.header.table_locations.assembly_processor)?,
assembly_os: self.read_rows(self.header.table_locations.assembly_os)?,
assembly_ref: self.read_rows(self.header.table_locations.assembly_ref)?,
assembly_ref_processor: self
.read_rows(self.header.table_locations.assembly_ref_processor)?,
assembly_ref_os: self.read_rows(self.header.table_locations.assembly_ref_os)?,
file: self.read_rows(self.header.table_locations.file)?,
exported_type: self.read_rows(self.header.table_locations.exported_type)?,
manifest_resource: self.read_rows(self.header.table_locations.manifest_resource)?,
nested_class: self.read_rows(self.header.table_locations.nested_class)?,
generic_param: self.read_rows(self.header.table_locations.generic_param)?,
method_spec: self.read_rows(self.header.table_locations.method_spec)?,
generic_param_constraint: self
.read_rows(self.header.table_locations.generic_param_constraint)?,
method_debug_information: self
.read_rows(self.header.table_locations.method_debug_information)?,
local_scope: self.read_rows(self.header.table_locations.local_scope)?,
local_variable: self.read_rows(self.header.table_locations.local_variable)?,
local_constant: self.read_rows(self.header.table_locations.local_constant)?,
import_scope: self.read_rows(self.header.table_locations.import_scope)?,
state_machine_method: self
.read_rows(self.header.table_locations.state_machine_method)?,
custom_debug_information: self
.read_rows(self.header.table_locations.custom_debug_information)?,
})
}
}