Skip to content

Type Library API & Declarations #5574

Open
@bclothier

Description

@bclothier

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 Declarations.

Currently, the Declarations 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.

  1. Don't we want the ability to bypass the resolver and generate Declarations 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 from ComProject 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.

  2. 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 entire Declaration, 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 Declarations, and one day, we may need it to generate the data to be then used in a replacement object browser (see #1093).

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussiontypeinfo-processingIssue is easier to resolve with knowledge of the COM collector/ITypeLib internal API.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions