Description
Reviewing the open issues for typelib API project, it appears to me that a necessary prerequisite step needs to be fulfilled; feeding the new information into Declaration
s.
Currently, the Declaration
s are basically immutable, and comes from the resolver exclusively. We need to integrate the new stream of data. While the resolver could be updated to consume the data from ComProject
, there are other considerations.
-
Don't we want the ability to bypass the resolver and generate
Declaration
s as-is from the type information alone? That would be useful in the scenarios of parsing the locked projects where we can't access the source code, and because parsing fromComProject
is much faster, that information can be used to load up the Code Explorer without requiring a full parse of the source code. When a full parse is performed, the Code Explorer can be then updated with information and enable other features that are dependent on the full parse. -
Do we want to make
Declaration
mutable in this case or keep it immutable, requiring a replace operation when we collect new metadata? Considering that there usually will be a large amount of overlap in the data between the type information API and from source code parsing, mutating only select set of members may be less work than replacing a entireDeclaration
, which usually has several pieces of information associated with it.
Tangentially, we need to consider the need to make ComReflection
capable of generating multiple outputs. Currently, it generates what basically amounts to a DTO or POCO objects that is representative of the types found within the COM library. However, we may need it to generate Declaration
s, and one day, we may need it to generate the data to be then used in a replacement object browser (see #1093).