Overview of Logical Record types

There are two main types of logical records: Explicitly Formatted Logical Records (EFLRs) and Indirectly Formatted Logical Records (IFLRs).

The Storage Unit Label, the first record in the file, could also be viewed as a logical record. However, due to functional discrepancies, in the library, it does not inherit from the base LogicalRecord class; on the other hand, it is implemented such that it can mock one and can be used alongside with actual LogicalRecord objects.

An overview of the types of logical records is shown below.

Logical Record types diagram

--- --- classDiagram LogicalRecord <|-- EFLRSet LogicalRecord <|-- IFLR IFLR <|-- FrameData IFLR <|-- NoFormatFrameData EFLRSet o-- "1..*" EFLRItem EFLRItem --> EFLRSet class LogicalRecord{ +Enum logical_record_type +bytes lr_type_struct +bool is_eflr +represent_as_bytes() } class EFLRSet{ +type item_type +str eflr_name +re.Pattern eflr_name_pattern +str set_type +str set_name +int origin_reference +int n_items +clear_eflr_item_list() +clear_set_instance_dict() +register_item() +get_all_eflr_items() +get_or_make_set() +get_all_sets() } class EFLRItem{ +type parent_eflr_class +str name +EFLRSet parent +int origin_reference +int copy_number +dict attributes +bytes obname +make_item_body_bytes() +set_attributes() } class StorageUnitLabel{ +str storage_unit_structure +str dlis_version +int max_record_length_limit +int max_record_length +int sequence_number +str set_identifier +represent_as_bytes() }