Clang: Inline HighlightingMarkContainer

Change-Id: Idb19b65099f42023ff347b427b014b3c476a06c8
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
This commit is contained in:
Marco Bubke
2016-07-19 13:46:42 +02:00
committed by Tim Jenssen
parent 08574a415e
commit ce45b4cf8b
2 changed files with 132 additions and 144 deletions

View File

@@ -25,141 +25,12 @@
#include "highlightingmarkcontainer.h" #include "highlightingmarkcontainer.h"
#include <QDataStream>
#include <QDebug> #include <QDebug>
#include <ostream> #include <ostream>
namespace ClangBackEnd { namespace ClangBackEnd {
HighlightingMarkContainer::HighlightingMarkContainer(uint line,
uint column,
uint length,
HighlightingTypes types)
: line_(line),
column_(column),
length_(length),
types_(types)
{
}
HighlightingMarkContainer::HighlightingMarkContainer(uint line,
uint column,
uint length,
HighlightingType type)
: line_(line),
column_(column),
length_(length)
{
types_.mainHighlightingType = type;
}
uint HighlightingMarkContainer::line() const
{
return line_;
}
uint HighlightingMarkContainer::column() const
{
return column_;
}
uint HighlightingMarkContainer::length() const
{
return length_;
}
HighlightingTypes HighlightingMarkContainer::types() const
{
return types_;
}
QDataStream &operator<<(QDataStream &out, HighlightingType highlightingType)
{
out << static_cast<const quint8>(highlightingType);
return out;
}
QDataStream &operator<<(QDataStream &out, HighlightingTypes highlightingTypes)
{
out << highlightingTypes.mainHighlightingType;
out << highlightingTypes.mixinHighlightingTypes.size();
for (HighlightingType type : highlightingTypes.mixinHighlightingTypes)
out << type;
return out;
}
QDataStream &operator<<(QDataStream &out, const HighlightingMarkContainer &container)
{
out << container.line_;
out << container.column_;
out << container.length_;
out << container.types_;
return out;
}
QDataStream &operator>>(QDataStream &in, HighlightingType &highlightingType)
{
quint8 highlightingTypeInt;
in >> highlightingTypeInt;
highlightingType = static_cast<HighlightingType>(highlightingTypeInt);
return in;
}
QDataStream &operator>>(QDataStream &in, HighlightingTypes &highlightingTypes)
{
in >> highlightingTypes.mainHighlightingType ;
quint8 size;
in >> size;
for (int counter = 0; counter < size; ++counter) {
HighlightingType type;
in >> type;
highlightingTypes.mixinHighlightingTypes.push_back(type);
}
return in;
}
QDataStream &operator>>(QDataStream &in, HighlightingMarkContainer &container)
{
in >> container.line_;
in >> container.column_;
in >> container.length_;
in >> container.types_;
return in;
}
bool operator==(const MixinHighlightingTypes &first, const MixinHighlightingTypes &second)
{
return first.size() == second.size()
&& std::equal(first.begin(), first.end(), second.begin());
}
bool operator==(const HighlightingTypes &first, const HighlightingTypes &second)
{
return first.mainHighlightingType == second.mainHighlightingType
&& first.mixinHighlightingTypes == second.mixinHighlightingTypes;
}
bool operator==(const HighlightingMarkContainer &first, const HighlightingMarkContainer &second)
{
return first.line_ == second.line_
&& first.column_ == second.column_
&& first.length_ == second.length_
&& first.types_ == second.types_;
}
#define RETURN_TEXT_FOR_CASE(enumValue) case HighlightingType::enumValue: return #enumValue #define RETURN_TEXT_FOR_CASE(enumValue) case HighlightingType::enumValue: return #enumValue
static const char *highlightingTypeToCStringLiteral(HighlightingType type) static const char *highlightingTypeToCStringLiteral(HighlightingType type)
{ {

View File

@@ -26,24 +26,87 @@
#pragma once #pragma once
#include "clangbackendipc_global.h" #include "clangbackendipc_global.h"
#include <ostream>
#include <QDataStream>
#include <iosfwd>
namespace ClangBackEnd { namespace ClangBackEnd {
class CMBIPC_EXPORT HighlightingMarkContainer inline QDataStream &operator<<(QDataStream &out, HighlightingType highlightingType);
inline QDataStream &operator<<(QDataStream &out, HighlightingTypes highlightingTypes);
inline QDataStream &operator>>(QDataStream &in, HighlightingType &highlightingType);
inline QDataStream &operator>>(QDataStream &in, HighlightingTypes &highlightingTypes);
inline bool operator==(const MixinHighlightingTypes &first, const MixinHighlightingTypes &second);
inline bool operator==(const HighlightingTypes &first, const HighlightingTypes &second);
class HighlightingMarkContainer
{ {
friend CMBIPC_EXPORT QDataStream &operator<<(QDataStream &out, const HighlightingMarkContainer &container);
friend CMBIPC_EXPORT QDataStream &operator>>(QDataStream &in, HighlightingMarkContainer &container);
friend CMBIPC_EXPORT bool operator==(const HighlightingMarkContainer &first, const HighlightingMarkContainer &second);
public: public:
HighlightingMarkContainer() = default; HighlightingMarkContainer() = default;
HighlightingMarkContainer(uint line, uint column, uint length, HighlightingTypes types); HighlightingMarkContainer(uint line, uint column, uint length, HighlightingTypes types)
HighlightingMarkContainer(uint line, uint column, uint length, HighlightingType type); : line_(line),
column_(column),
length_(length),
types_(types)
{
}
uint line() const; HighlightingMarkContainer(uint line, uint column, uint length, HighlightingType type)
uint column() const; : line_(line),
uint length() const; column_(column),
HighlightingTypes types() const; length_(length)
{
types_.mainHighlightingType = type;
}
uint line() const
{
return line_;
}
uint column() const
{
return column_;
}
uint length() const
{
return length_;
}
HighlightingTypes types() const
{
return types_;
}
friend QDataStream &operator<<(QDataStream &out, const HighlightingMarkContainer &container)
{
out << container.line_;
out << container.column_;
out << container.length_;
out << container.types_;
return out;
}
friend QDataStream &operator>>(QDataStream &in, HighlightingMarkContainer &container)
{
in >> container.line_;
in >> container.column_;
in >> container.length_;
in >> container.types_;
return in;
}
friend bool operator==(const HighlightingMarkContainer &first, const HighlightingMarkContainer &second)
{
return first.line_ == second.line_
&& first.column_ == second.column_
&& first.length_ == second.length_
&& first.types_ == second.types_;
}
private: private:
uint line_; uint line_;
@@ -52,10 +115,64 @@ private:
HighlightingTypes types_; HighlightingTypes types_;
}; };
CMBIPC_EXPORT QDataStream &operator<<(QDataStream &out, const HighlightingMarkContainer &container); inline QDataStream &operator<<(QDataStream &out, HighlightingType highlightingType)
CMBIPC_EXPORT QDataStream &operator>>(QDataStream &in, HighlightingMarkContainer &container); {
CMBIPC_EXPORT bool operator==(const HighlightingTypes &first, const HighlightingTypes &second); out << static_cast<const quint8>(highlightingType);
CMBIPC_EXPORT bool operator==(const HighlightingMarkContainer &first, const HighlightingMarkContainer &second);
return out;
}
inline QDataStream &operator<<(QDataStream &out, HighlightingTypes highlightingTypes)
{
out << highlightingTypes.mainHighlightingType;
out << highlightingTypes.mixinHighlightingTypes.size();
for (HighlightingType type : highlightingTypes.mixinHighlightingTypes)
out << type;
return out;
}
inline QDataStream &operator>>(QDataStream &in, HighlightingType &highlightingType)
{
quint8 highlightingTypeInt;
in >> highlightingTypeInt;
highlightingType = static_cast<HighlightingType>(highlightingTypeInt);
return in;
}
inline QDataStream &operator>>(QDataStream &in, HighlightingTypes &highlightingTypes)
{
in >> highlightingTypes.mainHighlightingType ;
quint8 size;
in >> size;
for (int counter = 0; counter < size; ++counter) {
HighlightingType type;
in >> type;
highlightingTypes.mixinHighlightingTypes.push_back(type);
}
return in;
}
inline bool operator==(const MixinHighlightingTypes &first, const MixinHighlightingTypes &second)
{
return first.size() == second.size()
&& std::equal(first.begin(), first.end(), second.begin());
}
inline bool operator==(const HighlightingTypes &first, const HighlightingTypes &second)
{
return first.mainHighlightingType == second.mainHighlightingType
&& first.mixinHighlightingTypes == second.mixinHighlightingTypes;
}
CMBIPC_EXPORT QDebug operator<<(QDebug debug, const HighlightingMarkContainer &container); CMBIPC_EXPORT QDebug operator<<(QDebug debug, const HighlightingMarkContainer &container);
CMBIPC_EXPORT void PrintTo(HighlightingType highlightingType, ::std::ostream *os); CMBIPC_EXPORT void PrintTo(HighlightingType highlightingType, ::std::ostream *os);