MarkOates / blast

0 stars 0 forks source link

Atomize Dependencies #18

Closed MarkOates closed 2 years ago

MarkOates commented 2 years ago

This important change to the quintessence extrapolation system will decompose composite dependencies into their individual dependencies (atoms) and require listings to be present.

So, a line that was like this:

dependencies:

   - symbol: std::map<std::string, Hexagon::Component::Base*>
     headers: [ map, string, Hexagon/Component/Base.hpp ]

Will now need to be split into individual dependencies, like this:

dependencies:

   - symbol: std::map
     headers: [ map ]
   - symbol: std::string
     headers: [ string ]
   - symbol: Hexagon::Component::Base
     headers: [ Hexagon/Component/Base.hpp ]

Note the removal of the *pointer from the dependency symbol, which is no longer needed because all extraneous symbols ({ '*', '<', '>', '&', '(', ')', }) are stripped out during "atomization".

Also, the list of known dependencies used to contain some common composites like std::vector<std::string>, however, these will now be removed and the individual dependencies will be present.

This is the initial part of a few steps forward, which will make it easier to have these "composite dependencies" in your code without having to make a new listing for every variant, pointer, etc...

⚠️ Important

All dependent projects will need to be updated under this new build system. This includes (not exhaustive):