Overview
Comment: | smaz_generic: brind the predicate back as a separate function
Since Smaz dictionaries are meant to be global hard-coded constant objects, it makes sense to check the precondition only once, e.g. in a test suite, and not for each and every subprogram call. |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ec19d3153c5a00753d16e48b082c5291 |
User & Date: | nat on 2016-12-14 20:01:08 |
Other Links: | manifest | tags |
Context
2016-12-15
| ||
20:12 | tools/smaz: use the new validation function instead of ad-hoc code check-in: 3a95d52c86 user: nat tags: trunk | |
2016-12-14
| ||
20:01 |
smaz_generic: brind the predicate back as a separate function
Since Smaz dictionaries are meant to be global hard-coded constant objects, it makes sense to check the precondition only once, e.g. in a test suite, and not for each and every subprogram call. check-in: ec19d3153c user: nat tags: trunk | |
2016-12-13
| ||
22:09 | smaz_generic: remove the too-costly dynamic predicate check-in: 7ae85f4e93 user: nat tags: trunk | |
Changes
Modified src/natools-smaz_generic.ads from [8876c91a07] to [90fa9f96a9].
︙ | |||
111 112 113 114 115 116 117 118 119 120 121 122 123 124 | 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | + + + + + + + + + + + + + | (Dict : in Dictionary; Code : in Dictionary_Code) return Positive is (1 + Code_Last (Dict.Offsets, Code, Dict.Values'Last) - Code_First (Dict.Offsets, Code, Dict.Values'First)) with Pre => Is_Valid_Code (Dict, Code); -- Return the length of the string for at the given Index in Dict function Is_Valid (Dictionary : in Smaz_Generic.Dictionary) return Boolean is ((for all Code in Dictionary.Offsets'Range => Dictionary.Offsets (Code) in Dictionary.Values'Range) and then (for all Code in Dictionary_Code'First .. Dictionary.Last_Code => Code_Last (Dictionary.Offsets, Code, Dictionary.Values'Last) + 1 - Code_First (Dictionary.Offsets, Code, Dictionary.Values'First) in 1 .. Dictionary.Max_Word_Length) and then (for all Code in Dictionary_Code'First .. Dictionary.Last_Code => Dictionary_Code'Val (Dictionary.Hash (Dict_Entry (Dictionary, Code))) = Code)); -- Check all the assumptions made on Dictionary objects. function Compressed_Upper_Bound (Dict : in Dictionary; Input : in String) return Ada.Streams.Stream_Element_Count; -- Return the maximum number of bytes needed to encode Input |
︙ |