-
Notifications
You must be signed in to change notification settings - Fork 15
Description
There is incentive in incorporating the functionality of AimIO into ScancoIO to improve header reading/writing functionality for ISQs, as well as add an AIM writer to ScancoIO.
I would like to propose a new structural format to help with further development by modularizing related functionality in the code. Below is a UML diagram of the changes I would like to implement. These changes would not change the user-facing functionality of the ScancoIO class. The metadata from the headers will still be able to be accessed and populated by dictionary from the ScancoIO class.
I would like to separate the reading of headers from the main image data into a designated header reader/writer module. The UML below outlines these as two separate modules, but this could easily be condensed into one IO module superclass that ScancoIO 'wraps' to use for header reading and writing.
[EDIT: After working with this I have moved it toward the condensed Header IO module format I mentioned possible above, to avoid overlapping functionality between readers/writers. See updated UML diagram below]
In this way, the functionality to incorporate from AimIO can be ported easily in it's associated module and be ported more seamlessly. This will also declutter the ScancoIO class. This format adds maintainability by separating the functionality of each file type and allows for easy addition of different header types [e.g: .RAD, .gobj]
The below image informally follows the UML class diagram format for class relationships and member descriptions [eg: association vs inheritance vs aggregation... and public vs private members]:
