849 строки
39 KiB
C++
849 строки
39 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// dxcisense.h //
|
|
// Copyright (C) Microsoft Corporation. All rights reserved. //
|
|
// This file is distributed under the University of Illinois Open Source //
|
|
// License. See LICENSE.TXT for details. //
|
|
// //
|
|
// Provides declarations for the DirectX Compiler IntelliSense component. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __DXC_ISENSE__
|
|
#define __DXC_ISENSE__
|
|
|
|
#include "dxc/dxcapi.h"
|
|
#include "dxc/Support/WinAdapter.h"
|
|
|
|
typedef enum DxcGlobalOptions
|
|
{
|
|
DxcGlobalOpt_None = 0x0,
|
|
DxcGlobalOpt_ThreadBackgroundPriorityForIndexing = 0x1,
|
|
DxcGlobalOpt_ThreadBackgroundPriorityForEditing = 0x2,
|
|
DxcGlobalOpt_ThreadBackgroundPriorityForAll =
|
|
DxcGlobalOpt_ThreadBackgroundPriorityForIndexing | DxcGlobalOpt_ThreadBackgroundPriorityForEditing
|
|
} DxcGlobalOptions;
|
|
|
|
typedef enum DxcTokenKind
|
|
{
|
|
DxcTokenKind_Punctuation = 0, // A token that contains some kind of punctuation.
|
|
DxcTokenKind_Keyword = 1, // A language keyword.
|
|
DxcTokenKind_Identifier = 2, // An identifier (that is not a keyword).
|
|
DxcTokenKind_Literal = 3, // A numeric, string, or character literal.
|
|
DxcTokenKind_Comment = 4, // A comment.
|
|
DxcTokenKind_Unknown = 5, // An unknown token (possibly known to a future version).
|
|
DxcTokenKind_BuiltInType = 6, // A built-in type like int, void or float3.
|
|
} DxcTokenKind;
|
|
|
|
typedef enum DxcTypeKind
|
|
{
|
|
DxcTypeKind_Invalid = 0, // Reprents an invalid type (e.g., where no type is available).
|
|
DxcTypeKind_Unexposed = 1, // A type whose specific kind is not exposed via this interface.
|
|
// Builtin types
|
|
DxcTypeKind_Void = 2,
|
|
DxcTypeKind_Bool = 3,
|
|
DxcTypeKind_Char_U = 4,
|
|
DxcTypeKind_UChar = 5,
|
|
DxcTypeKind_Char16 = 6,
|
|
DxcTypeKind_Char32 = 7,
|
|
DxcTypeKind_UShort = 8,
|
|
DxcTypeKind_UInt = 9,
|
|
DxcTypeKind_ULong = 10,
|
|
DxcTypeKind_ULongLong = 11,
|
|
DxcTypeKind_UInt128 = 12,
|
|
DxcTypeKind_Char_S = 13,
|
|
DxcTypeKind_SChar = 14,
|
|
DxcTypeKind_WChar = 15,
|
|
DxcTypeKind_Short = 16,
|
|
DxcTypeKind_Int = 17,
|
|
DxcTypeKind_Long = 18,
|
|
DxcTypeKind_LongLong = 19,
|
|
DxcTypeKind_Int128 = 20,
|
|
DxcTypeKind_Float = 21,
|
|
DxcTypeKind_Double = 22,
|
|
DxcTypeKind_LongDouble = 23,
|
|
DxcTypeKind_NullPtr = 24,
|
|
DxcTypeKind_Overload = 25,
|
|
DxcTypeKind_Dependent = 26,
|
|
DxcTypeKind_ObjCId = 27,
|
|
DxcTypeKind_ObjCClass = 28,
|
|
DxcTypeKind_ObjCSel = 29,
|
|
DxcTypeKind_FirstBuiltin = DxcTypeKind_Void,
|
|
DxcTypeKind_LastBuiltin = DxcTypeKind_ObjCSel,
|
|
|
|
DxcTypeKind_Complex = 100,
|
|
DxcTypeKind_Pointer = 101,
|
|
DxcTypeKind_BlockPointer = 102,
|
|
DxcTypeKind_LValueReference = 103,
|
|
DxcTypeKind_RValueReference = 104,
|
|
DxcTypeKind_Record = 105,
|
|
DxcTypeKind_Enum = 106,
|
|
DxcTypeKind_Typedef = 107,
|
|
DxcTypeKind_ObjCInterface = 108,
|
|
DxcTypeKind_ObjCObjectPointer = 109,
|
|
DxcTypeKind_FunctionNoProto = 110,
|
|
DxcTypeKind_FunctionProto = 111,
|
|
DxcTypeKind_ConstantArray = 112,
|
|
DxcTypeKind_Vector = 113,
|
|
DxcTypeKind_IncompleteArray = 114,
|
|
DxcTypeKind_VariableArray = 115,
|
|
DxcTypeKind_DependentSizedArray = 116,
|
|
DxcTypeKind_MemberPointer = 117
|
|
} DxcTypeKind;
|
|
|
|
// Describes the severity of a particular diagnostic.
|
|
typedef enum DxcDiagnosticSeverity
|
|
{
|
|
// A diagnostic that has been suppressed, e.g., by a command-line option.
|
|
DxcDiagnostic_Ignored = 0,
|
|
|
|
// This diagnostic is a note that should be attached to the previous (non-note) diagnostic.
|
|
DxcDiagnostic_Note = 1,
|
|
|
|
// This diagnostic indicates suspicious code that may not be wrong.
|
|
DxcDiagnostic_Warning = 2,
|
|
|
|
// This diagnostic indicates that the code is ill-formed.
|
|
DxcDiagnostic_Error = 3,
|
|
|
|
// This diagnostic indicates that the code is ill-formed such that future
|
|
// parser rec unlikely to produce useful results.
|
|
DxcDiagnostic_Fatal = 4
|
|
|
|
} DxcDiagnosticSeverity;
|
|
|
|
// Options to control the display of diagnostics.
|
|
typedef enum DxcDiagnosticDisplayOptions
|
|
{
|
|
// Display the source-location information where the diagnostic was located.
|
|
DxcDiagnostic_DisplaySourceLocation = 0x01,
|
|
|
|
// If displaying the source-location information of the diagnostic,
|
|
// also include the column number.
|
|
DxcDiagnostic_DisplayColumn = 0x02,
|
|
|
|
// If displaying the source-location information of the diagnostic,
|
|
// also include information about source ranges in a machine-parsable format.
|
|
DxcDiagnostic_DisplaySourceRanges = 0x04,
|
|
|
|
// Display the option name associated with this diagnostic, if any.
|
|
DxcDiagnostic_DisplayOption = 0x08,
|
|
|
|
// Display the category number associated with this diagnostic, if any.
|
|
DxcDiagnostic_DisplayCategoryId = 0x10,
|
|
|
|
// Display the category name associated with this diagnostic, if any.
|
|
DxcDiagnostic_DisplayCategoryName = 0x20,
|
|
|
|
// Display the severity of the diagnostic message.
|
|
DxcDiagnostic_DisplaySeverity = 0x200
|
|
} DxcDiagnosticDisplayOptions;
|
|
|
|
typedef enum DxcTranslationUnitFlags
|
|
{
|
|
// Used to indicate that no special translation-unit options are needed.
|
|
DxcTranslationUnitFlags_None = 0x0,
|
|
|
|
// Used to indicate that the parser should construct a "detailed"
|
|
// preprocessing record, including all macro definitions and instantiations.
|
|
DxcTranslationUnitFlags_DetailedPreprocessingRecord = 0x01,
|
|
|
|
// Used to indicate that the translation unit is incomplete.
|
|
DxcTranslationUnitFlags_Incomplete = 0x02,
|
|
|
|
// Used to indicate that the translation unit should be built with an
|
|
// implicit precompiled header for the preamble.
|
|
DxcTranslationUnitFlags_PrecompiledPreamble = 0x04,
|
|
|
|
// Used to indicate that the translation unit should cache some
|
|
// code-completion results with each reparse of the source file.
|
|
DxcTranslationUnitFlags_CacheCompletionResults = 0x08,
|
|
|
|
// Used to indicate that the translation unit will be serialized with
|
|
// SaveTranslationUnit.
|
|
DxcTranslationUnitFlags_ForSerialization = 0x10,
|
|
|
|
// DEPRECATED
|
|
DxcTranslationUnitFlags_CXXChainedPCH = 0x20,
|
|
|
|
// Used to indicate that function/method bodies should be skipped while parsing.
|
|
DxcTranslationUnitFlags_SkipFunctionBodies = 0x40,
|
|
|
|
// Used to indicate that brief documentation comments should be
|
|
// included into the set of code completions returned from this translation
|
|
// unit.
|
|
DxcTranslationUnitFlags_IncludeBriefCommentsInCodeCompletion = 0x80,
|
|
|
|
// Used to indicate that compilation should occur on the caller's thread.
|
|
DxcTranslationUnitFlags_UseCallerThread = 0x800
|
|
} DxcTranslationUnitFlags;
|
|
|
|
typedef enum DxcCursorFormatting
|
|
{
|
|
DxcCursorFormatting_Default = 0x0, // Default rules, language-insensitive formatting.
|
|
DxcCursorFormatting_UseLanguageOptions = 0x1, // Language-sensitive formatting.
|
|
DxcCursorFormatting_SuppressSpecifiers = 0x2, // Supresses type specifiers.
|
|
DxcCursorFormatting_SuppressTagKeyword = 0x4, // Suppressed tag keyword (eg, 'class').
|
|
DxcCursorFormatting_IncludeNamespaceKeyword = 0x8, // Include namespace keyword.
|
|
} DxcCursorFormatting;
|
|
|
|
enum DxcCursorKind {
|
|
/* Declarations */
|
|
DxcCursor_UnexposedDecl = 1, // A declaration whose specific kind is not exposed via this interface.
|
|
DxcCursor_StructDecl = 2, // A C or C++ struct.
|
|
DxcCursor_UnionDecl = 3, // A C or C++ union.
|
|
DxcCursor_ClassDecl = 4, // A C++ class.
|
|
DxcCursor_EnumDecl = 5, // An enumeration.
|
|
DxcCursor_FieldDecl = 6, // A field (in C) or non-static data member (in C++) in a struct, union, or C++ class.
|
|
DxcCursor_EnumConstantDecl = 7, // An enumerator constant.
|
|
DxcCursor_FunctionDecl = 8, // A function.
|
|
DxcCursor_VarDecl = 9, // A variable.
|
|
DxcCursor_ParmDecl = 10, // A function or method parameter.
|
|
DxcCursor_ObjCInterfaceDecl = 11, // An Objective-C interface.
|
|
DxcCursor_ObjCCategoryDecl = 12, // An Objective-C interface for a category.
|
|
DxcCursor_ObjCProtocolDecl = 13, // An Objective-C protocol declaration.
|
|
DxcCursor_ObjCPropertyDecl = 14, // An Objective-C property declaration.
|
|
DxcCursor_ObjCIvarDecl = 15, // An Objective-C instance variable.
|
|
DxcCursor_ObjCInstanceMethodDecl = 16, // An Objective-C instance method.
|
|
DxcCursor_ObjCClassMethodDecl = 17, // An Objective-C class method.
|
|
DxcCursor_ObjCImplementationDecl = 18, // An Objective-C \@implementation.
|
|
DxcCursor_ObjCCategoryImplDecl = 19, // An Objective-C \@implementation for a category.
|
|
DxcCursor_TypedefDecl = 20, // A typedef
|
|
DxcCursor_CXXMethod = 21, // A C++ class method.
|
|
DxcCursor_Namespace = 22, // A C++ namespace.
|
|
DxcCursor_LinkageSpec = 23, // A linkage specification, e.g. 'extern "C"'.
|
|
DxcCursor_Constructor = 24, // A C++ constructor.
|
|
DxcCursor_Destructor = 25, // A C++ destructor.
|
|
DxcCursor_ConversionFunction = 26, // A C++ conversion function.
|
|
DxcCursor_TemplateTypeParameter = 27, // A C++ template type parameter.
|
|
DxcCursor_NonTypeTemplateParameter = 28, // A C++ non-type template parameter.
|
|
DxcCursor_TemplateTemplateParameter = 29, // A C++ template template parameter.
|
|
DxcCursor_FunctionTemplate = 30, // A C++ function template.
|
|
DxcCursor_ClassTemplate = 31, // A C++ class template.
|
|
DxcCursor_ClassTemplatePartialSpecialization = 32, // A C++ class template partial specialization.
|
|
DxcCursor_NamespaceAlias = 33, // A C++ namespace alias declaration.
|
|
DxcCursor_UsingDirective = 34, // A C++ using directive.
|
|
DxcCursor_UsingDeclaration = 35, // A C++ using declaration.
|
|
DxcCursor_TypeAliasDecl = 36, // A C++ alias declaration
|
|
DxcCursor_ObjCSynthesizeDecl = 37, // An Objective-C \@synthesize definition.
|
|
DxcCursor_ObjCDynamicDecl = 38, // An Objective-C \@dynamic definition.
|
|
DxcCursor_CXXAccessSpecifier = 39, // An access specifier.
|
|
|
|
DxcCursor_FirstDecl = DxcCursor_UnexposedDecl,
|
|
DxcCursor_LastDecl = DxcCursor_CXXAccessSpecifier,
|
|
|
|
/* References */
|
|
DxcCursor_FirstRef = 40, /* Decl references */
|
|
DxcCursor_ObjCSuperClassRef = 40,
|
|
DxcCursor_ObjCProtocolRef = 41,
|
|
DxcCursor_ObjCClassRef = 42,
|
|
/**
|
|
* \brief A reference to a type declaration.
|
|
*
|
|
* A type reference occurs anywhere where a type is named but not
|
|
* declared. For example, given:
|
|
*
|
|
* \code
|
|
* typedef unsigned size_type;
|
|
* size_type size;
|
|
* \endcode
|
|
*
|
|
* The typedef is a declaration of size_type (DxcCursor_TypedefDecl),
|
|
* while the type of the variable "size" is referenced. The cursor
|
|
* referenced by the type of size is the typedef for size_type.
|
|
*/
|
|
DxcCursor_TypeRef = 43, // A reference to a type declaration.
|
|
DxcCursor_CXXBaseSpecifier = 44,
|
|
DxcCursor_TemplateRef = 45, // A reference to a class template, function template, template template parameter, or class template partial specialization.
|
|
DxcCursor_NamespaceRef = 46, // A reference to a namespace or namespace alias.
|
|
DxcCursor_MemberRef = 47, // A reference to a member of a struct, union, or class that occurs in some non-expression context, e.g., a designated initializer.
|
|
/**
|
|
* \brief A reference to a labeled statement.
|
|
*
|
|
* This cursor kind is used to describe the jump to "start_over" in the
|
|
* goto statement in the following example:
|
|
*
|
|
* \code
|
|
* start_over:
|
|
* ++counter;
|
|
*
|
|
* goto start_over;
|
|
* \endcode
|
|
*
|
|
* A label reference cursor refers to a label statement.
|
|
*/
|
|
DxcCursor_LabelRef = 48, // A reference to a labeled statement.
|
|
|
|
// A reference to a set of overloaded functions or function templates
|
|
// that has not yet been resolved to a specific function or function template.
|
|
//
|
|
// An overloaded declaration reference cursor occurs in C++ templates where
|
|
// a dependent name refers to a function.
|
|
DxcCursor_OverloadedDeclRef = 49,
|
|
DxcCursor_VariableRef = 50, // A reference to a variable that occurs in some non-expression context, e.g., a C++ lambda capture list.
|
|
|
|
DxcCursor_LastRef = DxcCursor_VariableRef,
|
|
|
|
/* Error conditions */
|
|
DxcCursor_FirstInvalid = 70,
|
|
DxcCursor_InvalidFile = 70,
|
|
DxcCursor_NoDeclFound = 71,
|
|
DxcCursor_NotImplemented = 72,
|
|
DxcCursor_InvalidCode = 73,
|
|
DxcCursor_LastInvalid = DxcCursor_InvalidCode,
|
|
|
|
/* Expressions */
|
|
DxcCursor_FirstExpr = 100,
|
|
|
|
/**
|
|
* \brief An expression whose specific kind is not exposed via this
|
|
* interface.
|
|
*
|
|
* Unexposed expressions have the same operations as any other kind
|
|
* of expression; one can extract their location information,
|
|
* spelling, children, etc. However, the specific kind of the
|
|
* expression is not reported.
|
|
*/
|
|
DxcCursor_UnexposedExpr = 100, // An expression whose specific kind is not exposed via this interface.
|
|
DxcCursor_DeclRefExpr = 101, // An expression that refers to some value declaration, such as a function, varible, or enumerator.
|
|
DxcCursor_MemberRefExpr = 102, // An expression that refers to a member of a struct, union, class, Objective-C class, etc.
|
|
DxcCursor_CallExpr = 103, // An expression that calls a function.
|
|
DxcCursor_ObjCMessageExpr = 104, // An expression that sends a message to an Objective-C object or class.
|
|
DxcCursor_BlockExpr = 105, // An expression that represents a block literal.
|
|
DxcCursor_IntegerLiteral = 106, // An integer literal.
|
|
DxcCursor_FloatingLiteral = 107, // A floating point number literal.
|
|
DxcCursor_ImaginaryLiteral = 108, // An imaginary number literal.
|
|
DxcCursor_StringLiteral = 109, // A string literal.
|
|
DxcCursor_CharacterLiteral = 110, // A character literal.
|
|
DxcCursor_ParenExpr = 111, // A parenthesized expression, e.g. "(1)". This AST node is only formed if full location information is requested.
|
|
DxcCursor_UnaryOperator = 112, // This represents the unary-expression's (except sizeof and alignof).
|
|
DxcCursor_ArraySubscriptExpr = 113, // [C99 6.5.2.1] Array Subscripting.
|
|
DxcCursor_BinaryOperator = 114, // A builtin binary operation expression such as "x + y" or "x <= y".
|
|
DxcCursor_CompoundAssignOperator = 115, // Compound assignment such as "+=".
|
|
DxcCursor_ConditionalOperator = 116, // The ?: ternary operator.
|
|
DxcCursor_CStyleCastExpr = 117, // An explicit cast in C (C99 6.5.4) or a C-style cast in C++ (C++ [expr.cast]), which uses the syntax (Type)expr, eg: (int)f.
|
|
DxcCursor_CompoundLiteralExpr = 118, // [C99 6.5.2.5]
|
|
DxcCursor_InitListExpr = 119, // Describes an C or C++ initializer list.
|
|
DxcCursor_AddrLabelExpr = 120, // The GNU address of label extension, representing &&label.
|
|
DxcCursor_StmtExpr = 121, // This is the GNU Statement Expression extension: ({int X=4; X;})
|
|
DxcCursor_GenericSelectionExpr = 122, // Represents a C11 generic selection.
|
|
|
|
/** \brief Implements the GNU __null extension, which is a name for a null
|
|
* pointer constant that has integral type (e.g., int or long) and is the same
|
|
* size and alignment as a pointer.
|
|
*
|
|
* The __null extension is typically only used by system headers, which define
|
|
* NULL as __null in C++ rather than using 0 (which is an integer that may not
|
|
* match the size of a pointer).
|
|
*/
|
|
DxcCursor_GNUNullExpr = 123,
|
|
DxcCursor_CXXStaticCastExpr = 124, // C++'s static_cast<> expression.
|
|
DxcCursor_CXXDynamicCastExpr = 125, // C++'s dynamic_cast<> expression.
|
|
DxcCursor_CXXReinterpretCastExpr = 126, // C++'s reinterpret_cast<> expression.
|
|
DxcCursor_CXXConstCastExpr = 127, // C++'s const_cast<> expression.
|
|
|
|
/** \brief Represents an explicit C++ type conversion that uses "functional"
|
|
* notion (C++ [expr.type.conv]).
|
|
*
|
|
* Example:
|
|
* \code
|
|
* x = int(0.5);
|
|
* \endcode
|
|
*/
|
|
DxcCursor_CXXFunctionalCastExpr = 128,
|
|
DxcCursor_CXXTypeidExpr = 129, // A C++ typeid expression (C++ [expr.typeid]).
|
|
DxcCursor_CXXBoolLiteralExpr = 130, // [C++ 2.13.5] C++ Boolean Literal.
|
|
DxcCursor_CXXNullPtrLiteralExpr = 131, // [C++0x 2.14.7] C++ Pointer Literal.
|
|
DxcCursor_CXXThisExpr = 132, // Represents the "this" expression in C++
|
|
DxcCursor_CXXThrowExpr = 133, // [C++ 15] C++ Throw Expression, both 'throw' and 'throw' assignment-expression.
|
|
DxcCursor_CXXNewExpr = 134, // A new expression for memory allocation and constructor calls, e.g: "new CXXNewExpr(foo)".
|
|
DxcCursor_CXXDeleteExpr = 135, // A delete expression for memory deallocation and destructor calls, e.g. "delete[] pArray".
|
|
DxcCursor_UnaryExpr = 136, // A unary expression.
|
|
DxcCursor_ObjCStringLiteral = 137, // An Objective-C string literal i.e. @"foo".
|
|
DxcCursor_ObjCEncodeExpr = 138, // An Objective-C \@encode expression.
|
|
DxcCursor_ObjCSelectorExpr = 139, // An Objective-C \@selector expression.
|
|
DxcCursor_ObjCProtocolExpr = 140, // An Objective-C \@protocol expression.
|
|
|
|
/** \brief An Objective-C "bridged" cast expression, which casts between
|
|
* Objective-C pointers and C pointers, transferring ownership in the process.
|
|
*
|
|
* \code
|
|
* NSString *str = (__bridge_transfer NSString *)CFCreateString();
|
|
* \endcode
|
|
*/
|
|
DxcCursor_ObjCBridgedCastExpr = 141,
|
|
|
|
/** \brief Represents a C++0x pack expansion that produces a sequence of
|
|
* expressions.
|
|
*
|
|
* A pack expansion expression contains a pattern (which itself is an
|
|
* expression) followed by an ellipsis. For example:
|
|
*
|
|
* \code
|
|
* template<typename F, typename ...Types>
|
|
* void forward(F f, Types &&...args) {
|
|
* f(static_cast<Types&&>(args)...);
|
|
* }
|
|
* \endcode
|
|
*/
|
|
DxcCursor_PackExpansionExpr = 142,
|
|
|
|
/** \brief Represents an expression that computes the length of a parameter
|
|
* pack.
|
|
*
|
|
* \code
|
|
* template<typename ...Types>
|
|
* struct count {
|
|
* static const unsigned value = sizeof...(Types);
|
|
* };
|
|
* \endcode
|
|
*/
|
|
DxcCursor_SizeOfPackExpr = 143,
|
|
|
|
/* \brief Represents a C++ lambda expression that produces a local function
|
|
* object.
|
|
*
|
|
* \code
|
|
* void abssort(float *x, unsigned N) {
|
|
* std::sort(x, x + N,
|
|
* [](float a, float b) {
|
|
* return std::abs(a) < std::abs(b);
|
|
* });
|
|
* }
|
|
* \endcode
|
|
*/
|
|
DxcCursor_LambdaExpr = 144,
|
|
DxcCursor_ObjCBoolLiteralExpr = 145, // Objective-c Boolean Literal.
|
|
DxcCursor_ObjCSelfExpr = 146, // Represents the "self" expression in a ObjC method.
|
|
DxcCursor_LastExpr = DxcCursor_ObjCSelfExpr,
|
|
|
|
/* Statements */
|
|
DxcCursor_FirstStmt = 200,
|
|
/**
|
|
* \brief A statement whose specific kind is not exposed via this
|
|
* interface.
|
|
*
|
|
* Unexposed statements have the same operations as any other kind of
|
|
* statement; one can extract their location information, spelling,
|
|
* children, etc. However, the specific kind of the statement is not
|
|
* reported.
|
|
*/
|
|
DxcCursor_UnexposedStmt = 200,
|
|
|
|
/** \brief A labelled statement in a function.
|
|
*
|
|
* This cursor kind is used to describe the "start_over:" label statement in
|
|
* the following example:
|
|
*
|
|
* \code
|
|
* start_over:
|
|
* ++counter;
|
|
* \endcode
|
|
*
|
|
*/
|
|
DxcCursor_LabelStmt = 201,
|
|
DxcCursor_CompoundStmt = 202, // A group of statements like { stmt stmt }. This cursor kind is used to describe compound statements, e.g. function bodies.
|
|
DxcCursor_CaseStmt = 203, // A case statement.
|
|
DxcCursor_DefaultStmt = 204, // A default statement.
|
|
DxcCursor_IfStmt = 205, // An if statement
|
|
DxcCursor_SwitchStmt = 206, // A switch statement.
|
|
DxcCursor_WhileStmt = 207, // A while statement.
|
|
DxcCursor_DoStmt = 208, // A do statement.
|
|
DxcCursor_ForStmt = 209, // A for statement.
|
|
DxcCursor_GotoStmt = 210, // A goto statement.
|
|
DxcCursor_IndirectGotoStmt = 211, // An indirect goto statement.
|
|
DxcCursor_ContinueStmt = 212, // A continue statement.
|
|
DxcCursor_BreakStmt = 213, // A break statement.
|
|
DxcCursor_ReturnStmt = 214, // A return statement.
|
|
DxcCursor_GCCAsmStmt = 215, // A GCC inline assembly statement extension.
|
|
DxcCursor_AsmStmt = DxcCursor_GCCAsmStmt,
|
|
|
|
DxcCursor_ObjCAtTryStmt = 216, // Objective-C's overall \@try-\@catch-\@finally statement.
|
|
DxcCursor_ObjCAtCatchStmt = 217, // Objective-C's \@catch statement.
|
|
DxcCursor_ObjCAtFinallyStmt = 218, // Objective-C's \@finally statement.
|
|
DxcCursor_ObjCAtThrowStmt = 219, // Objective-C's \@throw statement.
|
|
DxcCursor_ObjCAtSynchronizedStmt = 220, // Objective-C's \@synchronized statement.
|
|
DxcCursor_ObjCAutoreleasePoolStmt = 221, // Objective-C's autorelease pool statement.
|
|
DxcCursor_ObjCForCollectionStmt = 222, // Objective-C's collection statement.
|
|
|
|
DxcCursor_CXXCatchStmt = 223, // C++'s catch statement.
|
|
DxcCursor_CXXTryStmt = 224, // C++'s try statement.
|
|
DxcCursor_CXXForRangeStmt = 225, // C++'s for (* : *) statement.
|
|
|
|
DxcCursor_SEHTryStmt = 226, // Windows Structured Exception Handling's try statement.
|
|
DxcCursor_SEHExceptStmt = 227, // Windows Structured Exception Handling's except statement.
|
|
DxcCursor_SEHFinallyStmt = 228, // Windows Structured Exception Handling's finally statement.
|
|
|
|
DxcCursor_MSAsmStmt = 229, // A MS inline assembly statement extension.
|
|
DxcCursor_NullStmt = 230, // The null satement ";": C99 6.8.3p3.
|
|
DxcCursor_DeclStmt = 231, // Adaptor class for mixing declarations with statements and expressions.
|
|
DxcCursor_OMPParallelDirective = 232, // OpenMP parallel directive.
|
|
DxcCursor_OMPSimdDirective = 233, // OpenMP SIMD directive.
|
|
DxcCursor_OMPForDirective = 234, // OpenMP for directive.
|
|
DxcCursor_OMPSectionsDirective = 235, // OpenMP sections directive.
|
|
DxcCursor_OMPSectionDirective = 236, // OpenMP section directive.
|
|
DxcCursor_OMPSingleDirective = 237, // OpenMP single directive.
|
|
DxcCursor_OMPParallelForDirective = 238, // OpenMP parallel for directive.
|
|
DxcCursor_OMPParallelSectionsDirective = 239, // OpenMP parallel sections directive.
|
|
DxcCursor_OMPTaskDirective = 240, // OpenMP task directive.
|
|
DxcCursor_OMPMasterDirective = 241, // OpenMP master directive.
|
|
DxcCursor_OMPCriticalDirective = 242, // OpenMP critical directive.
|
|
DxcCursor_OMPTaskyieldDirective = 243, // OpenMP taskyield directive.
|
|
DxcCursor_OMPBarrierDirective = 244, // OpenMP barrier directive.
|
|
DxcCursor_OMPTaskwaitDirective = 245, // OpenMP taskwait directive.
|
|
DxcCursor_OMPFlushDirective = 246, // OpenMP flush directive.
|
|
DxcCursor_SEHLeaveStmt = 247, // Windows Structured Exception Handling's leave statement.
|
|
DxcCursor_OMPOrderedDirective = 248, // OpenMP ordered directive.
|
|
DxcCursor_OMPAtomicDirective = 249, // OpenMP atomic directive.
|
|
DxcCursor_OMPForSimdDirective = 250, // OpenMP for SIMD directive.
|
|
DxcCursor_OMPParallelForSimdDirective = 251, // OpenMP parallel for SIMD directive.
|
|
DxcCursor_OMPTargetDirective = 252, // OpenMP target directive.
|
|
DxcCursor_OMPTeamsDirective = 253, // OpenMP teams directive.
|
|
DxcCursor_OMPTaskgroupDirective = 254, // OpenMP taskgroup directive.
|
|
DxcCursor_OMPCancellationPointDirective = 255, // OpenMP cancellation point directive.
|
|
DxcCursor_OMPCancelDirective = 256, // OpenMP cancel directive.
|
|
DxcCursor_LastStmt = DxcCursor_OMPCancelDirective,
|
|
|
|
DxcCursor_TranslationUnit = 300, // Cursor that represents the translation unit itself.
|
|
|
|
/* Attributes */
|
|
DxcCursor_FirstAttr = 400,
|
|
/**
|
|
* \brief An attribute whose specific kind is not exposed via this
|
|
* interface.
|
|
*/
|
|
DxcCursor_UnexposedAttr = 400,
|
|
|
|
DxcCursor_IBActionAttr = 401,
|
|
DxcCursor_IBOutletAttr = 402,
|
|
DxcCursor_IBOutletCollectionAttr = 403,
|
|
DxcCursor_CXXFinalAttr = 404,
|
|
DxcCursor_CXXOverrideAttr = 405,
|
|
DxcCursor_AnnotateAttr = 406,
|
|
DxcCursor_AsmLabelAttr = 407,
|
|
DxcCursor_PackedAttr = 408,
|
|
DxcCursor_PureAttr = 409,
|
|
DxcCursor_ConstAttr = 410,
|
|
DxcCursor_NoDuplicateAttr = 411,
|
|
DxcCursor_CUDAConstantAttr = 412,
|
|
DxcCursor_CUDADeviceAttr = 413,
|
|
DxcCursor_CUDAGlobalAttr = 414,
|
|
DxcCursor_CUDAHostAttr = 415,
|
|
DxcCursor_CUDASharedAttr = 416,
|
|
DxcCursor_LastAttr = DxcCursor_CUDASharedAttr,
|
|
|
|
/* Preprocessing */
|
|
DxcCursor_PreprocessingDirective = 500,
|
|
DxcCursor_MacroDefinition = 501,
|
|
DxcCursor_MacroExpansion = 502,
|
|
DxcCursor_MacroInstantiation = DxcCursor_MacroExpansion,
|
|
DxcCursor_InclusionDirective = 503,
|
|
DxcCursor_FirstPreprocessing = DxcCursor_PreprocessingDirective,
|
|
DxcCursor_LastPreprocessing = DxcCursor_InclusionDirective,
|
|
|
|
/* Extra Declarations */
|
|
/**
|
|
* \brief A module import declaration.
|
|
*/
|
|
DxcCursor_ModuleImportDecl = 600,
|
|
DxcCursor_FirstExtraDecl = DxcCursor_ModuleImportDecl,
|
|
DxcCursor_LastExtraDecl = DxcCursor_ModuleImportDecl
|
|
};
|
|
|
|
enum DxcCursorKindFlags
|
|
{
|
|
DxcCursorKind_None = 0,
|
|
DxcCursorKind_Declaration = 0x1,
|
|
DxcCursorKind_Reference = 0x2,
|
|
DxcCursorKind_Expression = 0x4,
|
|
DxcCursorKind_Statement = 0x8,
|
|
DxcCursorKind_Attribute = 0x10,
|
|
DxcCursorKind_Invalid = 0x20,
|
|
DxcCursorKind_TranslationUnit = 0x40,
|
|
DxcCursorKind_Preprocessing = 0x80,
|
|
DxcCursorKind_Unexposed = 0x100,
|
|
};
|
|
|
|
enum DxcCodeCompleteFlags
|
|
{
|
|
DxcCodeCompleteFlags_None = 0,
|
|
DxcCodeCompleteFlags_IncludeMacros = 0x1,
|
|
DxcCodeCompleteFlags_IncludeCodePatterns = 0x2,
|
|
DxcCodeCompleteFlags_IncludeBriefComments = 0x4,
|
|
};
|
|
|
|
enum DxcCompletionChunkKind
|
|
{
|
|
DxcCompletionChunk_Optional = 0,
|
|
DxcCompletionChunk_TypedText = 1,
|
|
DxcCompletionChunk_Text = 2,
|
|
DxcCompletionChunk_Placeholder = 3,
|
|
DxcCompletionChunk_Informative = 4,
|
|
DxcCompletionChunk_CurrentParameter = 5,
|
|
DxcCompletionChunk_LeftParen = 6,
|
|
DxcCompletionChunk_RightParen = 7,
|
|
DxcCompletionChunk_LeftBracket = 8,
|
|
DxcCompletionChunk_RightBracket = 9,
|
|
DxcCompletionChunk_LeftBrace = 10,
|
|
DxcCompletionChunk_RightBrace = 11,
|
|
DxcCompletionChunk_LeftAngle = 12,
|
|
DxcCompletionChunk_RightAngle = 13,
|
|
DxcCompletionChunk_Comma = 14,
|
|
DxcCompletionChunk_ResultType = 15,
|
|
DxcCompletionChunk_Colon = 16,
|
|
DxcCompletionChunk_SemiColon = 17,
|
|
DxcCompletionChunk_Equal = 18,
|
|
DxcCompletionChunk_HorizontalSpace = 19,
|
|
DxcCompletionChunk_VerticalSpace = 20,
|
|
};
|
|
|
|
struct IDxcCursor;
|
|
struct IDxcDiagnostic;
|
|
struct IDxcFile;
|
|
struct IDxcInclusion;
|
|
struct IDxcIntelliSense;
|
|
struct IDxcIndex;
|
|
struct IDxcSourceLocation;
|
|
struct IDxcSourceRange;
|
|
struct IDxcToken;
|
|
struct IDxcTranslationUnit;
|
|
struct IDxcType;
|
|
struct IDxcUnsavedFile;
|
|
struct IDxcCodeCompleteResults;
|
|
struct IDxcCompletionResult;
|
|
struct IDxcCompletionString;
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcCursor, "1467b985-288d-4d2a-80c1-ef89c42c40bc")
|
|
struct IDxcCursor : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetExtent(_Outptr_result_nullonfailure_ IDxcSourceRange** pRange) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetLocation(_Outptr_result_nullonfailure_ IDxcSourceLocation** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetKind(_Out_ DxcCursorKind* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetKindFlags(_Out_ DxcCursorKindFlags* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetSemanticParent(_Outptr_result_nullonfailure_ IDxcCursor** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetLexicalParent(_Outptr_result_nullonfailure_ IDxcCursor** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetCursorType(_Outptr_result_nullonfailure_ IDxcType** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetNumArguments(_Out_ int* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetArgumentAt(int index, _Outptr_result_nullonfailure_ IDxcCursor** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetReferencedCursor(_Outptr_result_nullonfailure_ IDxcCursor** pResult) = 0;
|
|
/// <summary>For a cursor that is either a reference to or a declaration of some entity, retrieve a cursor that describes the definition of that entity.</summary>
|
|
/// <remarks>Some entities can be declared multiple times within a translation unit, but only one of those declarations can also be a definition.</remarks>
|
|
/// <returns>A cursor to the definition of this entity; nullptr if there is no definition in this translation unit.</returns>
|
|
virtual HRESULT STDMETHODCALLTYPE GetDefinitionCursor(_Outptr_result_nullonfailure_ IDxcCursor** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE FindReferencesInFile(
|
|
_In_ IDxcFile* file, unsigned skip, unsigned top,
|
|
_Out_ unsigned* pResultLength, _Outptr_result_buffer_maybenull_(*pResultLength) IDxcCursor*** pResult) = 0;
|
|
/// <summary>Gets the name for the entity references by the cursor, e.g. foo for an 'int foo' variable.</summary>
|
|
virtual HRESULT STDMETHODCALLTYPE GetSpelling(_Outptr_result_maybenull_ LPSTR* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE IsEqualTo(_In_ IDxcCursor* other, _Out_ BOOL* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE IsNull(_Out_ BOOL* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE IsDefinition(_Out_ BOOL* pResult) = 0;
|
|
/// <summary>Gets the display name for the cursor, including e.g. parameter types for a function.</summary>
|
|
virtual HRESULT STDMETHODCALLTYPE GetDisplayName(_Out_ BSTR* pResult) = 0;
|
|
/// <summary>Gets the qualified name for the symbol the cursor refers to.</summary>
|
|
virtual HRESULT STDMETHODCALLTYPE GetQualifiedName(BOOL includeTemplateArgs, _Outptr_result_maybenull_ BSTR* pResult) = 0;
|
|
/// <summary>Gets a name for the cursor, applying the specified formatting flags.</summary>
|
|
virtual HRESULT STDMETHODCALLTYPE GetFormattedName(DxcCursorFormatting formatting , _Outptr_result_maybenull_ BSTR* pResult) = 0;
|
|
/// <summary>Gets children in pResult up to top elements.</summary>
|
|
virtual HRESULT STDMETHODCALLTYPE GetChildren(
|
|
unsigned skip, unsigned top,
|
|
_Out_ unsigned* pResultLength, _Outptr_result_buffer_maybenull_(*pResultLength) IDxcCursor*** pResult) = 0;
|
|
/// <summary>Gets the cursor following a location within a compound cursor.</summary>
|
|
virtual HRESULT STDMETHODCALLTYPE GetSnappedChild(_In_ IDxcSourceLocation* location, _Outptr_result_maybenull_ IDxcCursor** pResult) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcDiagnostic, "4f76b234-3659-4d33-99b0-3b0db994b564")
|
|
struct IDxcDiagnostic : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE FormatDiagnostic(
|
|
DxcDiagnosticDisplayOptions options,
|
|
_Outptr_result_maybenull_ LPSTR* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetSeverity(_Out_ DxcDiagnosticSeverity* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetLocation(_Outptr_result_nullonfailure_ IDxcSourceLocation** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetSpelling(_Outptr_result_maybenull_ LPSTR* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetCategoryText(_Outptr_result_maybenull_ LPSTR* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetNumRanges(_Out_ unsigned* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetRangeAt(unsigned index, _Outptr_result_nullonfailure_ IDxcSourceRange** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetNumFixIts(_Out_ unsigned* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetFixItAt(unsigned index,
|
|
_Outptr_result_nullonfailure_ IDxcSourceRange** pReplacementRange, _Outptr_result_maybenull_ LPSTR* pText) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcFile, "bb2fca9e-1478-47ba-b08c-2c502ada4895")
|
|
struct IDxcFile : public IUnknown
|
|
{
|
|
/// <summary>Gets the file name for this file.</summary>
|
|
virtual HRESULT STDMETHODCALLTYPE GetName(_Outptr_result_maybenull_ LPSTR* pResult) = 0;
|
|
/// <summary>Checks whether this file is equal to the other specified file.</summary>
|
|
virtual HRESULT STDMETHODCALLTYPE IsEqualTo(_In_ IDxcFile* other, _Out_ BOOL* pResult) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcInclusion, "0c364d65-df44-4412-888e-4e552fc5e3d6")
|
|
struct IDxcInclusion : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetIncludedFile(_Outptr_result_nullonfailure_ IDxcFile** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetStackLength(_Out_ unsigned *pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetStackItem(unsigned index, _Outptr_result_nullonfailure_ IDxcSourceLocation **pResult) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcIntelliSense, "b1f99513-46d6-4112-8169-dd0d6053f17d")
|
|
struct IDxcIntelliSense : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE CreateIndex(_Outptr_result_nullonfailure_ IDxcIndex** index) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetNullLocation(_Outptr_result_nullonfailure_ IDxcSourceLocation** location) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetNullRange(_Outptr_result_nullonfailure_ IDxcSourceRange** location) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetRange(
|
|
_In_ IDxcSourceLocation* start,
|
|
_In_ IDxcSourceLocation* end,
|
|
_Outptr_result_nullonfailure_ IDxcSourceRange** location) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetDefaultDiagnosticDisplayOptions(
|
|
_Out_ DxcDiagnosticDisplayOptions* pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetDefaultEditingTUOptions(_Out_ DxcTranslationUnitFlags* pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE CreateUnsavedFile(_In_ LPCSTR fileName, _In_ LPCSTR contents, unsigned contentLength, _Outptr_result_nullonfailure_ IDxcUnsavedFile** pResult) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcIndex, "937824a0-7f5a-4815-9ba7-7fc0424f4173")
|
|
struct IDxcIndex : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE SetGlobalOptions(DxcGlobalOptions options) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetGlobalOptions(_Out_ DxcGlobalOptions* options) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE ParseTranslationUnit(
|
|
_In_z_ const char *source_filename,
|
|
_In_count_(num_command_line_args) const char * const *command_line_args,
|
|
int num_command_line_args,
|
|
_In_count_(num_unsaved_files) IDxcUnsavedFile** unsaved_files,
|
|
unsigned num_unsaved_files,
|
|
DxcTranslationUnitFlags options,
|
|
_Out_ IDxcTranslationUnit** pTranslationUnit) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcSourceLocation, "8e7ddf1c-d7d3-4d69-b286-85fccba1e0cf")
|
|
struct IDxcSourceLocation : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE IsEqualTo(_In_ IDxcSourceLocation* other, _Out_ BOOL* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetSpellingLocation(
|
|
_Outptr_opt_ IDxcFile** pFile,
|
|
_Out_opt_ unsigned* pLine,
|
|
_Out_opt_ unsigned* pCol,
|
|
_Out_opt_ unsigned* pOffset) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE IsNull(_Out_ BOOL* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetPresumedLocation(
|
|
_Outptr_opt_ LPSTR* pFilename,
|
|
_Out_opt_ unsigned* pLine,
|
|
_Out_opt_ unsigned* pCol) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcSourceRange, "f1359b36-a53f-4e81-b514-b6b84122a13f")
|
|
struct IDxcSourceRange : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE IsNull(_Out_ BOOL* pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetStart(_Out_ IDxcSourceLocation** pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetEnd(_Out_ IDxcSourceLocation** pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetOffsets(_Out_ unsigned* startOffset, _Out_ unsigned* endOffset) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcToken, "7f90b9ff-a275-4932-97d8-3cfd234482a2")
|
|
struct IDxcToken : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetKind(_Out_ DxcTokenKind* pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetLocation(_Out_ IDxcSourceLocation** pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetExtent(_Out_ IDxcSourceRange** pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetSpelling(_Out_ LPSTR* pValue) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcTranslationUnit, "9677dee0-c0e5-46a1-8b40-3db3168be63d")
|
|
struct IDxcTranslationUnit : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetCursor(_Out_ IDxcCursor** pCursor) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE Tokenize(
|
|
_In_ IDxcSourceRange* range,
|
|
_Outptr_result_buffer_maybenull_(*pTokenCount) IDxcToken*** pTokens,
|
|
_Out_ unsigned* pTokenCount) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetLocation(
|
|
_In_ IDxcFile* file,
|
|
unsigned line, unsigned column,
|
|
_Outptr_result_nullonfailure_ IDxcSourceLocation** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetNumDiagnostics(_Out_ unsigned* pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetDiagnostic(unsigned index, _Outptr_result_nullonfailure_ IDxcDiagnostic** pValue) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetFile(_In_ const char* name, _Outptr_result_nullonfailure_ IDxcFile** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetFileName(_Outptr_result_maybenull_ LPSTR* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE Reparse(
|
|
_In_count_(num_unsaved_files) IDxcUnsavedFile** unsaved_files,
|
|
unsigned num_unsaved_files) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetCursorForLocation(_In_ IDxcSourceLocation* location, _Outptr_result_nullonfailure_ IDxcCursor** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetLocationForOffset(_In_ IDxcFile* file, unsigned offset, _Outptr_result_nullonfailure_ IDxcSourceLocation** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetSkippedRanges(_In_ IDxcFile* file, _Out_ unsigned* pResultCount, _Outptr_result_buffer_(*pResultCount) IDxcSourceRange*** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetDiagnosticDetails(unsigned index, DxcDiagnosticDisplayOptions options,
|
|
_Out_ unsigned* errorCode,
|
|
_Out_ unsigned* errorLine,
|
|
_Out_ unsigned* errorColumn,
|
|
_Out_ BSTR* errorFile,
|
|
_Out_ unsigned* errorOffset,
|
|
_Out_ unsigned* errorLength,
|
|
_Out_ BSTR* errorMessage) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetInclusionList(_Out_ unsigned* pResultCount, _Outptr_result_buffer_(*pResultCount) IDxcInclusion*** pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE CodeCompleteAt(
|
|
_In_ const char *fileName, unsigned line, unsigned column,
|
|
_In_ IDxcUnsavedFile** pUnsavedFiles, unsigned numUnsavedFiles,
|
|
_In_ DxcCodeCompleteFlags options,
|
|
_Outptr_result_nullonfailure_ IDxcCodeCompleteResults **pResult) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcType, "2ec912fd-b144-4a15-ad0d-1c5439c81e46")
|
|
struct IDxcType : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetSpelling(_Outptr_result_z_ LPSTR* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE IsEqualTo(_In_ IDxcType* other, _Out_ BOOL* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetKind(_Out_ DxcTypeKind* pResult) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcUnsavedFile, "8ec00f98-07d0-4e60-9d7c-5a50b5b0017f")
|
|
struct IDxcUnsavedFile : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetFileName(_Outptr_result_z_ LPSTR* pFileName) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetContents(_Outptr_result_z_ LPSTR* pContents) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetLength(_Out_ unsigned* pLength) = 0;
|
|
};
|
|
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcCodeCompleteResults, "1E06466A-FD8B-45F3-A78F-8A3F76EBB552")
|
|
struct IDxcCodeCompleteResults : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetNumResults(_Out_ unsigned* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetResultAt(unsigned index, _Outptr_result_nullonfailure_ IDxcCompletionResult** pResult) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcCompletionResult, "943C0588-22D0-4784-86FC-701F802AC2B6")
|
|
struct IDxcCompletionResult : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetCursorKind(_Out_ DxcCursorKind* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetCompletionString(_Outptr_result_nullonfailure_ IDxcCompletionString** pResult) = 0;
|
|
};
|
|
|
|
CROSS_PLATFORM_UUIDOF(IDxcCompletionString, "06B51E0F-A605-4C69-A110-CD6E14B58EEC")
|
|
struct IDxcCompletionString : public IUnknown
|
|
{
|
|
virtual HRESULT STDMETHODCALLTYPE GetNumCompletionChunks(_Out_ unsigned* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetCompletionChunkKind(unsigned chunkNumber, _Out_ DxcCompletionChunkKind* pResult) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetCompletionChunkText(unsigned chunkNumber, _Out_ LPSTR* pResult) = 0;
|
|
};
|
|
|
|
// Fun fact: 'extern' is required because const is by default static in C++, so
|
|
// CLSID_DxcIntelliSense is not visible externally (this is OK in C, since const is
|
|
// not by default static in C)
|
|
|
|
#ifdef _MSC_VER
|
|
#define CLSID_SCOPE __declspec(selectany) extern
|
|
#else
|
|
#define CLSID_SCOPE
|
|
#endif
|
|
|
|
CLSID_SCOPE const CLSID
|
|
CLSID_DxcIntelliSense = {/* 3047833c-d1c0-4b8e-9d40-102878605985 */
|
|
0x3047833c,
|
|
0xd1c0,
|
|
0x4b8e,
|
|
{0x9d, 0x40, 0x10, 0x28, 0x78, 0x60, 0x59, 0x85}};
|
|
|
|
#endif
|