clangbackendipc_global.h 3.62 KB
Newer Older
1 2
/****************************************************************************
**
3 4
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
5 6 7 8 9 10 11
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
12 13 14
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
15
**
16 17 18 19 20 21 22
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
23 24 25
**
****************************************************************************/

hjk's avatar
hjk committed
26
#pragma once
27

28 29
#include <utils/sizedarray.h>

30 31
#include <QtCore/qglobal.h>

Tim Jenssen's avatar
Tim Jenssen committed
32 33 34 35
#ifdef UNIT_TESTS
#include <gtest/gtest.h>
#endif

36
#if defined(CLANGBACKENDIPC_BUILD_LIB)
37
#  define CMBIPC_EXPORT Q_DECL_EXPORT
38 39
#elif defined(CLANGBACKENDIPC_BUILD_STATIC_LIB)
#  define CMBIPC_EXPORT
40 41 42 43
#else
#  define CMBIPC_EXPORT Q_DECL_IMPORT
#endif

44 45
#ifndef CLANGBACKENDPROCESSPATH
# define CLANGBACKENDPROCESSPATH ""
46 47
#endif

Tim Jenssen's avatar
Tim Jenssen committed
48
namespace Utils {
Tim Jenssen's avatar
Tim Jenssen committed
49
template <uint Size>
Tim Jenssen's avatar
Tim Jenssen committed
50 51 52 53
class BasicSmallString;
using SmallString = BasicSmallString<31>;
}

54
namespace ClangBackEnd {
55

Marco Bubke's avatar
Marco Bubke committed
56
enum class DiagnosticSeverity : quint32 // one to one mapping of the clang enum numbers
Marco Bubke's avatar
Marco Bubke committed
57 58 59 60 61 62 63
{
    Ignored = 0,
    Note = 1,
    Warning = 2,
    Error = 3,
    Fatal = 4
};
64

65
enum class HighlightingType : quint8
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
{
    Invalid,
    Keyword,
    StringLiteral,
    NumberLiteral,
    Comment,
    Function,
    VirtualFunction,
    Type,
    LocalVariable,
    Field,
    GlobalVariable,
    Enumeration,
    Operator,
    Preprocessor,
    PreprocessorDefinition,
    PreprocessorExpansion,
    Label,
84 85
    OutputArgument,
    Declaration
86 87
};

Marco Bubke's avatar
Marco Bubke committed
88
enum class CompletionCorrection : quint32
89 90 91 92 93
{
    NoCorrection,
    DotToArrowCorrection
};

94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
enum class MessageType : quint8 {
    InvalidMessage,
    AliveMessage,
    EchoMessage,
    EndMessage,

    RegisterTranslationUnitForEditorMessage,
    UpdateTranslationUnitsForEditorMessage,
    UnregisterTranslationUnitsForEditorMessage,

    RegisterUnsavedFilesForEditorMessage,
    UnregisterUnsavedFilesForEditorMessage,

    RegisterProjectPartsForEditorMessage,
    UnregisterProjectPartsForEditorMessage,

110 111
    RequestDocumentAnnotationsMessage,
    DocumentAnnotationsChangedMessage,
112 113 114 115 116 117 118

    UpdateVisibleTranslationUnitsMessage,

    CompleteCodeMessage,
    CodeCompletedMessage,

    TranslationUnitDoesNotExistMessage,
Marco Bubke's avatar
Marco Bubke committed
119 120 121
    ProjectPartsDoNotExistMessage,

    SourceLocationsForRenamingMessage,
Tim Jenssen's avatar
Tim Jenssen committed
122 123 124
    RequestSourceLocationsForRenamingMessage,

    RequestSourceRangesAndDiagnosticsForQueryMessage,
Tim Jenssen's avatar
Tim Jenssen committed
125 126 127
    SourceRangesAndDiagnosticsForQueryMessage,

    CancelMessage
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
};

template<MessageType messageEnumeration>
struct MessageTypeTrait;

template<class Message>
struct MessageTrait;

#define DECLARE_MESSAGE(Message) \
template<> \
struct MessageTrait<Message> \
{ \
    static const MessageType enumeration = MessageType::Message; \
};

143 144 145 146 147 148 149
using MixinHighlightingTypes = Utils::SizedArray<HighlightingType, 6>;

struct HighlightingTypes {
    HighlightingType mainHighlightingType;
    MixinHighlightingTypes mixinHighlightingTypes;
};

Marco Bubke's avatar
Marco Bubke committed
150
}