Precompute UIntSet from individual capabilities inside generator (removes intermediate form of capabilities).
generator changes:
OutputUIntSetGenerator
Added to serialize a generator function which generates a UIntSet
SerializedConjunction
Added to store serialization information of a single conjunction with the data of "generator function name" and a UIntSet cache. Storing a UIntSet cache of the 'generator function' makes finding duplicate conjunctions easier and faster.
Generator output has 3 objects
kCapabilityArray --> has conjunction data
kCapabilityConjunctions --> has list of pointers to kCapabilityArray which makeup a list of conjunctions for an atom. There is no separator between lists.
kCapabilityNameInfos --> actual conjunction info is fetched by pointing to kCapabilityConjunctions with an offset and array size
CapabilitySet::CapabilitySet
changed constructor to support UIntSet initialization instead of a intermediate form.
We still expand capabilities which are missing target and stage atoms.
A few other functions were changed to support a UIntSet for when fetching atom info.
fixes: #4163
Precompute UIntSet from individual capabilities inside generator (removes intermediate form of capabilities).
generator changes:
kCapabilityArray
--> has conjunction datakCapabilityConjunctions
--> has list of pointers tokCapabilityArray
which makeup a list of conjunctions for an atom. There is no separator between lists.kCapabilityNameInfos
--> actual conjunction info is fetched by pointing tokCapabilityConjunctions
with an offset and array sizetarget
andstage
atoms.