2016-11-23 13:31:47 +01:00
|
|
|
/****************************************************************************
|
|
|
|
|
**
|
|
|
|
|
** Copyright (C) 2016 The Qt Company Ltd.
|
|
|
|
|
** Contact: https://www.qt.io/licensing/
|
|
|
|
|
**
|
|
|
|
|
** 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
|
|
|
|
|
** 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.
|
|
|
|
|
**
|
|
|
|
|
** 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.
|
|
|
|
|
**
|
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
2018-12-17 12:06:57 +01:00
|
|
|
#include <utils/cpplanguage_details.h>
|
2018-02-06 11:16:29 +01:00
|
|
|
#include <utils/optional.h>
|
2021-06-07 16:16:24 +02:00
|
|
|
#include <utils/smallstringio.h>
|
|
|
|
|
#include <utils/variant.h>
|
2017-08-17 12:44:52 +02:00
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
#include <clangsupport_global.h>
|
|
|
|
|
|
2016-11-23 13:31:47 +01:00
|
|
|
#include <QtGlobal>
|
|
|
|
|
|
|
|
|
|
#include <iosfwd>
|
|
|
|
|
|
2017-12-28 22:07:28 +01:00
|
|
|
#include <gtest/gtest-printers.h>
|
|
|
|
|
|
|
|
|
|
class Utf8String;
|
|
|
|
|
void PrintTo(const Utf8String &text, ::std::ostream *os);
|
|
|
|
|
|
2020-04-27 20:01:38 +02:00
|
|
|
namespace Sqlite {
|
|
|
|
|
class Value;
|
2020-10-27 15:09:25 +01:00
|
|
|
class ValueView;
|
2020-05-27 23:48:03 +02:00
|
|
|
class SessionChangeSet;
|
2020-11-05 18:12:26 +01:00
|
|
|
enum class Operation : char;
|
2021-05-12 12:21:58 +02:00
|
|
|
enum class LockingMode : char;
|
2021-12-28 11:32:47 +01:00
|
|
|
class TimeStamp;
|
2020-04-27 20:01:38 +02:00
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Value &value);
|
2020-10-27 15:09:25 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const ValueView &value);
|
2020-11-05 18:12:26 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, Operation operation);
|
2020-05-27 23:48:03 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const SessionChangeSet &changeset);
|
2021-05-12 12:21:58 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, LockingMode lockingMode);
|
2021-12-28 11:32:47 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, TimeStamp timeStamp);
|
2020-11-05 18:12:26 +01:00
|
|
|
|
2020-10-27 15:09:25 +01:00
|
|
|
namespace SessionChangeSetInternal {
|
|
|
|
|
class ConstIterator;
|
|
|
|
|
class ConstTupleIterator;
|
|
|
|
|
class SentinelIterator;
|
|
|
|
|
class Tuple;
|
|
|
|
|
class ValueViews;
|
|
|
|
|
enum class State : char;
|
|
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, SentinelIterator iterator);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ConstIterator &iterator);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ConstTupleIterator &iterator);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Tuple &tuple);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, State operation);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ValueViews &valueViews);
|
|
|
|
|
|
|
|
|
|
} // namespace SessionChangeSetInternal
|
2020-04-27 20:01:38 +02:00
|
|
|
} // namespace Sqlite
|
|
|
|
|
|
2017-09-21 11:43:59 +02:00
|
|
|
namespace Utils {
|
2018-01-22 14:21:01 +01:00
|
|
|
class LineColumn;
|
2018-08-07 19:01:01 +02:00
|
|
|
class SmallStringView;
|
2021-06-09 11:34:58 +02:00
|
|
|
class FilePath;
|
2018-01-22 14:21:01 +01:00
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const LineColumn &lineColumn);
|
2018-12-17 12:06:57 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const Utils::Language &language);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Utils::LanguageVersion &languageVersion);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Utils::LanguageExtension &languageExtension);
|
2021-06-09 11:34:58 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const FilePath &filePath);
|
2018-01-22 14:21:01 +01:00
|
|
|
|
2021-06-07 16:16:24 +02:00
|
|
|
template<typename Type>
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const optional<Type> &optional)
|
2018-02-06 11:16:29 +01:00
|
|
|
{
|
|
|
|
|
if (optional)
|
2019-03-13 15:09:30 +01:00
|
|
|
return out << "optional " << optional.value();
|
2018-02-06 11:16:29 +01:00
|
|
|
else
|
|
|
|
|
return out << "empty optional()";
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-07 16:16:24 +02:00
|
|
|
template<typename Type>
|
|
|
|
|
void PrintTo(const optional<Type> &optional, ::std::ostream *os)
|
2018-02-06 11:16:29 +01:00
|
|
|
{
|
|
|
|
|
*os << optional;
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-07 16:16:24 +02:00
|
|
|
template<typename... Type>
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const variant<Type...> &variant)
|
|
|
|
|
{
|
|
|
|
|
return Utils::visit([&](auto &&value) -> std::ostream & { return out << value; }, variant);
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-07 19:01:01 +02:00
|
|
|
void PrintTo(Utils::SmallStringView text, ::std::ostream *os);
|
2017-09-21 11:43:59 +02:00
|
|
|
void PrintTo(const Utils::SmallString &text, ::std::ostream *os);
|
2017-12-28 22:07:28 +01:00
|
|
|
void PrintTo(const Utils::PathString &text, ::std::ostream *os);
|
2018-02-06 11:16:29 +01:00
|
|
|
|
2019-08-20 14:45:01 +02:00
|
|
|
} // namespace Utils
|
2017-09-21 11:43:59 +02:00
|
|
|
|
|
|
|
|
namespace ClangBackEnd {
|
2017-11-30 16:11:40 +01:00
|
|
|
class AliveMessage;
|
2018-05-31 15:21:53 +02:00
|
|
|
class CompletionsMessage;
|
2017-11-30 16:11:40 +01:00
|
|
|
class EchoMessage;
|
2018-05-31 15:21:53 +02:00
|
|
|
class AnnotationsMessage;
|
2017-11-30 16:11:40 +01:00
|
|
|
class ReferencesMessage;
|
2018-01-12 12:29:43 +01:00
|
|
|
class ToolTipMessage;
|
2018-06-01 10:46:20 +02:00
|
|
|
class FollowSymbolResult;
|
2017-11-30 16:11:40 +01:00
|
|
|
class FollowSymbolMessage;
|
2018-05-31 15:21:53 +02:00
|
|
|
class RequestCompletionsMessage;
|
2017-11-30 16:11:40 +01:00
|
|
|
class EndMessage;
|
2018-05-31 15:21:53 +02:00
|
|
|
class DocumentsOpenedMessage;
|
|
|
|
|
class DocumentsClosedMessage;
|
2017-11-30 16:11:40 +01:00
|
|
|
class CodeCompletion;
|
|
|
|
|
class CodeCompletionChunk;
|
|
|
|
|
class DiagnosticContainer;
|
|
|
|
|
class FileContainer;
|
|
|
|
|
class FixItContainer;
|
2018-02-06 15:48:24 +01:00
|
|
|
class FullTokenInfo;
|
2017-11-30 16:11:40 +01:00
|
|
|
class HighlightingMarkContainer;
|
2018-05-31 15:21:53 +02:00
|
|
|
class UnsavedFilesUpdatedMessage;
|
|
|
|
|
class RequestAnnotationsMessage;
|
2017-11-30 16:11:40 +01:00
|
|
|
class RequestFollowSymbolMessage;
|
|
|
|
|
class RequestReferencesMessage;
|
2018-01-12 12:29:43 +01:00
|
|
|
class RequestToolTipMessage;
|
2017-11-30 16:11:40 +01:00
|
|
|
class SourceLocationContainer;
|
|
|
|
|
class SourceRangeContainer;
|
2018-02-06 15:48:24 +01:00
|
|
|
class TokenInfo;
|
|
|
|
|
template<class T>
|
|
|
|
|
class TokenProcessor;
|
2018-05-31 15:21:53 +02:00
|
|
|
class DocumentsChangedMessage;
|
|
|
|
|
class DocumentVisibilityChangedMessage;
|
2018-01-12 12:29:43 +01:00
|
|
|
class ToolTipInfo;
|
2018-08-21 11:54:51 +02:00
|
|
|
class SuspendResumeJobsEntry;
|
|
|
|
|
class ReferencesResult;
|
2021-06-09 11:34:58 +02:00
|
|
|
struct ExtraInfo;
|
|
|
|
|
class TokenInfoContainer;
|
|
|
|
|
class UnsavedFilesRemovedMessage;
|
|
|
|
|
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const AliveMessage &message);
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const CompletionsMessage &message);
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const EchoMessage &message);
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const AnnotationsMessage &message);
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const ReferencesMessage &message);
|
2018-01-12 12:29:43 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const ToolTipMessage &message);
|
2018-06-01 10:46:20 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const FollowSymbolResult &result);
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const FollowSymbolMessage &message);
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const RequestCompletionsMessage &message);
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const EndMessage &message);
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const DocumentsOpenedMessage &message);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const DocumentsClosedMessage &message);
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const CodeCompletion &message);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const CodeCompletionChunk &chunk);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const DiagnosticContainer &container);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const FileContainer &container);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const FixItContainer &container);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, HighlightingType highlightingType);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, HighlightingTypes types);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const HighlightingMarkContainer &container);
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const UnsavedFilesUpdatedMessage &message);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const RequestAnnotationsMessage &message);
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const RequestFollowSymbolMessage &message);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const RequestReferencesMessage &message);
|
2018-01-12 12:29:43 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const RequestToolTipMessage &message);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ToolTipInfo &info);
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const SourceLocationContainer &container);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const SourceRangeContainer &container);
|
2018-05-31 15:21:53 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const DocumentsChangedMessage &message);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const DocumentVisibilityChangedMessage &message);
|
2017-11-30 16:11:40 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, const TokenInfo& tokenInfo);
|
2018-02-06 15:48:24 +01:00
|
|
|
template<class T>
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const TokenProcessor<T> &tokenInfos);
|
|
|
|
|
extern template
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const TokenProcessor<TokenInfo> &tokenInfos);
|
2021-06-09 11:34:58 +02:00
|
|
|
extern template std::ostream &operator<<(std::ostream &out,
|
|
|
|
|
const TokenProcessor<FullTokenInfo> &tokenInfos);
|
2018-03-22 17:46:43 +01:00
|
|
|
std::ostream &operator<<(std::ostream &out, SymbolKind symbolKind);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, SymbolTag symbolTag);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, SymbolTags symbolTags);
|
2018-08-21 11:54:51 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const SuspendResumeJobsEntry &entry);
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const ReferencesResult &value);
|
2021-06-09 11:34:58 +02:00
|
|
|
std::ostream &operator<<(std::ostream &os, const ExtraInfo &extraInfo);
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const TokenInfoContainer &container);
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const UnsavedFilesRemovedMessage &message);
|
2017-09-21 11:43:59 +02:00
|
|
|
|
|
|
|
|
} // namespace ClangBackEnd
|
|
|
|
|
|
2019-07-23 08:28:13 +02:00
|
|
|
namespace Debugger {
|
|
|
|
|
class DiagnosticLocation;
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const DiagnosticLocation &loc);
|
|
|
|
|
} // namespace Debugger
|
|
|
|
|
|
|
|
|
|
namespace ClangTools {
|
|
|
|
|
namespace Internal {
|
|
|
|
|
class ExplainingStep;
|
|
|
|
|
class Diagnostic;
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ExplainingStep &step);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Diagnostic &diag);
|
|
|
|
|
} // namespace Internal
|
2021-08-30 10:58:08 +02:00
|
|
|
} // namespace ClangTools
|
2019-07-23 08:28:13 +02:00
|
|
|
|
2020-06-18 19:46:01 +02:00
|
|
|
namespace QmlDesigner {
|
|
|
|
|
class ModelNode;
|
|
|
|
|
class VariantProperty;
|
2021-04-28 16:18:59 +02:00
|
|
|
template<auto Type, typename InternalIntergerType>
|
|
|
|
|
class BasicId;
|
2021-07-29 11:19:02 +02:00
|
|
|
class WatcherEntry;
|
|
|
|
|
class IdPaths;
|
|
|
|
|
class ProjectChunkId;
|
|
|
|
|
enum class SourceType : int;
|
2021-08-03 15:03:36 +02:00
|
|
|
class FileStatus;
|
2020-06-18 19:46:01 +02:00
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ModelNode &node);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const VariantProperty &property);
|
2020-09-16 13:44:43 +02:00
|
|
|
|
2021-04-28 16:18:59 +02:00
|
|
|
template<auto Type, typename InternalIntergerType>
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const BasicId<Type, InternalIntergerType> &id)
|
|
|
|
|
{
|
2021-06-03 13:06:23 +02:00
|
|
|
return out << "id=" << &id;
|
2021-04-28 16:18:59 +02:00
|
|
|
}
|
|
|
|
|
|
2021-07-29 11:19:02 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const WatcherEntry &entry);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const IdPaths &idPaths);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ProjectChunkId &id);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, SourceType sourceType);
|
2021-08-03 15:03:36 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const FileStatus &fileStatus);
|
2021-07-29 11:19:02 +02:00
|
|
|
|
2021-05-06 12:26:39 +02:00
|
|
|
namespace Cache {
|
2021-04-28 16:18:59 +02:00
|
|
|
class SourceContext;
|
|
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const SourceContext &sourceContext);
|
2021-05-06 12:26:39 +02:00
|
|
|
} // namespace Cache
|
2021-04-28 16:18:59 +02:00
|
|
|
|
2021-05-06 15:52:20 +02:00
|
|
|
namespace Storage {
|
|
|
|
|
class Type;
|
|
|
|
|
class ExportedType;
|
2021-06-07 16:16:24 +02:00
|
|
|
class NativeType;
|
2021-08-24 16:49:42 +02:00
|
|
|
class ImportedType;
|
|
|
|
|
class QualifiedImportedType;
|
|
|
|
|
using TypeName = Utils::variant<NativeType, ExportedType>;
|
2021-05-06 15:52:20 +02:00
|
|
|
class Version;
|
|
|
|
|
class VersionNumber;
|
|
|
|
|
enum class TypeAccessSemantics : int;
|
2021-06-09 17:56:34 +02:00
|
|
|
enum class PropertyDeclarationTraits : unsigned int;
|
2021-05-06 15:52:20 +02:00
|
|
|
class PropertyDeclaration;
|
|
|
|
|
class FunctionDeclaration;
|
|
|
|
|
class ParameterDeclaration;
|
|
|
|
|
class SignalDeclaration;
|
|
|
|
|
class EnumerationDeclaration;
|
|
|
|
|
class EnumeratorDeclaration;
|
2021-09-28 17:05:23 +02:00
|
|
|
enum class ImportKind : char;
|
2021-08-24 16:49:42 +02:00
|
|
|
class Import;
|
|
|
|
|
enum class IsQualified : int;
|
2021-10-21 17:23:18 +02:00
|
|
|
class ProjectData;
|
|
|
|
|
class SynchronizationPackage;
|
|
|
|
|
enum class FileType : char;
|
|
|
|
|
enum class ChangeLevel : char;
|
2021-05-06 15:52:20 +02:00
|
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, TypeAccessSemantics accessSemantics);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, VersionNumber versionNumber);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, Version version);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Type &type);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ExportedType &exportedType);
|
2021-06-07 16:16:24 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const NativeType &nativeType);
|
2021-08-24 16:49:42 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const ImportedType &importedType);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const QualifiedImportedType &importedType);
|
2021-05-06 15:52:20 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const PropertyDeclaration &propertyDeclaration);
|
2021-06-09 17:56:34 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, PropertyDeclarationTraits traits);
|
2021-05-06 15:52:20 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const FunctionDeclaration &functionDeclaration);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const ParameterDeclaration ¶meter);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const SignalDeclaration &signalDeclaration);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const EnumerationDeclaration &enumerationDeclaration);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const EnumeratorDeclaration &enumeratorDeclaration);
|
2021-09-28 17:05:23 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const ImportKind &importKind);
|
2021-08-24 16:49:42 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const Import &import);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, IsQualified isQualified);
|
2021-10-21 17:23:18 +02:00
|
|
|
std::ostream &operator<<(std::ostream &out, const ProjectData &data);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, const SynchronizationPackage &package);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, FileType fileType);
|
|
|
|
|
std::ostream &operator<<(std::ostream &out, ChangeLevel changeLevel);
|
2021-05-06 15:52:20 +02:00
|
|
|
|
|
|
|
|
} // namespace Storage
|
|
|
|
|
|
2020-06-18 19:46:01 +02:00
|
|
|
} // namespace QmlDesigner
|