|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: P T
Length: 3199 (0xc7f)
Types: TextFile
Names: »PORTAGE«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
└─⟦124ff5788⟧ »DATA«
└─⟦this⟧
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
└─⟦6f12a12be⟧ »DATA«
└─⟦this⟧
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
PBK 26-feb-89
How to build a portable Parameter_Parser:
Step 1. Gather the R1K sources
!!Voyager!Environment.Directory.Rev10_2_5.Units.Utilities.
Parameter_parser'spec [no need to copy]
Parameter_parser'body
Parameter_parser.Get_Float
Parameter_parser.Parse
!!Voyager!Environment.Miscellaneous.Rev10_Working.Units.Utilities.
Enumeration_Ops'spec
Enumeration_Ops'body
String_Sort_Generic'spec
String_Sort_Generic'body
Name_Sort
Pure_Element_Table_sort'spec
Pure_Element_Table_sort'body
Not copied :
Universal -- too big; replace by Text_IO.Float_IO.Get
Minmax -- trivial
Bounded -- looks like a twin brother to Bounded_String
String_Utilities -- available everywhere
Directory & Polymorphic_IO -- vain; need to be replaced anyhow
----
Step 2. Clean up the source and make sure everything compiles
2.1 Eliminates all special Rational pragmas
2.2 Substitutes Bounded_String to Bounded
2.3 Substitutes instanciation of Text_Io.Float_IO for P@.Get_Float
2.4 Fix some minor errors on out parameters (!!)
2.5 Build tests
=> [ R1k_Initial ]
----
Step 3. Get rid of dependencies to Directory and Polymorphic_IO
3.1 Eliminate the Rational-directory-name form of lexical element
3.2 Eliminate the "indirect file" form of option
3.3 Adjust comments to reflect changes
3.4 Regresssion test
=> [ R1k_Raw_port ]
----
Step 4. Spawn a target development path
4.1 Model contains Text_IO, String_Utilities, Bounded_String
target_key is Mc68020_Os2000, all units are joined.
4.2 Add pragma Main to main tests programs
=> [ M68k_Raw_port ]
----
Step 5. Eliminate all unused code, reduce generic part
5.1 Exit: 3/4 of Enumeration_Ops, Minmax, Name_Sort, String_Sort_Generic
Pure_Element_Table_Sort, Unbounded_String
5.2 Inline Get_Float and include remaining part of Enumeration_ops
5.3 Create a non generic package Parameter_Parser_Defs and move
to it all declarations and subprogram that do not depend on
generic formals. With this package only on Parameter_Parser'body
for greater flexibility (and better R1000 compatibility).
5.4 Accept changes in target path.
5.5 Regression test
5.6 Check code sizes: with CDF 4.0.6, Debugging_Level=Full
N instantiations => 6K + [16K .. 22K] * N bytes codes
=> [ R1K_Port_1, M68k_Port_1 ]
----
Possible improvements:
A. More code can migrate to the non-generic part: some little
code "massaging" needs to be done (not only pure region-copy as
in above steps) -> risks of regression
- procedure Diagnosis (which contain error messages)
- some procedures in the main Parse algorithm (with additional
parameters)
B. Re-introduce directory-names and Indirect-files, but with a target
system dependent file-name parser and Read function (?)
----
Nota bene: the view name is given between [ and ]. All units are joined
accross R1K path and M68K path.