cpptooling.analyzer.clang.type

Public Imports

cpptooling.data.kind_type
public import cpptooling.data.kind_type;

Members

Functions

makeEnsuredUSR
USRType makeEnsuredUSR(Cursor c, uint this_indent)

Make a USR, never failing.

makeLocation
LocationTag makeLocation(Cursor c)
Undocumented in source.
makeTypeAttr
TypeAttr makeTypeAttr(Type type, Cursor c)
Undocumented in source. Be warned that the author may not have intended to support it.
makeTypeKindAttr
TypeKindAttr makeTypeKindAttr(Type type, Cursor c)
Undocumented in source. Be warned that the author may not have intended to support it.
makeTypeKindAttr
TypeKindAttr makeTypeKindAttr(Type type, TypeKind tk, Cursor c)
Undocumented in source. Be warned that the author may not have intended to support it.
retrieveType
Nullable!TypeResults retrieveType(Cursor c, Container container, uint indent)

Deduct the type the node represents.

Structs

BacktrackLocation
struct BacktrackLocation
Undocumented in source.

Meta

Date

Date: 2015-2016, Joakim Brännström

License

MPL-2, Mozilla Public License 2.0

Version

Initial created: Jan 30, 2012 Copyright (c) 2012 Jacob Carlborg. All rights reserved.

# Interaction flow Pass1, implicit anonymous struct and unions. Pass2, struct or union decl who has no name. Pass3, anonymous instantiated types. Pass4, generic, last decision point for deriving data from the cursor. PassType, derive type from the cursors type.

# Location information The "source" location is only, always the definition. Declarations are "using" locations.

## CS101 refresher. A definition is the information needed to create an instance of the type.

A declaration is a subset of the information that makes it possible to use in most scenarios. The most telling example of an useful declaration is a function declaration, "void foo();". Useful most everywhere. But during linking it must be defined _somewhere_ or a linker error will ensue.

# Future optimization - Skip the primitive types by having them prepoulated in the Container. - Minimize the amoung of data that is propagated by changing TypeResults to ensure only unique USR's exist in it. - Skip pass4+ if the USR already exist in the container.

Authors

Joakim Brännström (joakim.brannstrom@gmx.com)