diff options
author | Marco Bubke <marco.bubke@theqtcompany.com> | 2015-05-05 13:22:08 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-05-06 15:31:10 +0000 |
commit | e0fa131a1cebe618563fc9c27c47a1e81cf16a3b (patch) | |
tree | 4a841718bc68b52c408c3d7c81700feb7b3f50fc | |
parent | 6de4d8d013aa2d8e89dc8bf50612b0dd2c687221 (diff) | |
download | qt-creator-e0fa131a1cebe618563fc9c27c47a1e81cf16a3b.tar.gz |
use reference function instead of union
Change-Id: Ia6568ec922877a68b0ae0b6a55708bf4b98b4403
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
4 files changed, 34 insertions, 20 deletions
diff --git a/src/libs/codemodelbackendipc/source/codecompletion.cpp b/src/libs/codemodelbackendipc/source/codecompletion.cpp index 996725df24..2d2d739571 100644 --- a/src/libs/codemodelbackendipc/source/codecompletion.cpp +++ b/src/libs/codemodelbackendipc/source/codecompletion.cpp @@ -122,6 +122,16 @@ quint32 CodeCompletion::priority() const return priority_; } +quint32 &CodeCompletion::completionKindAsInt() +{ + return reinterpret_cast<quint32&>(completionKind_); +} + +quint32 &CodeCompletion::availabilityAsInt() +{ + return reinterpret_cast<quint32&>(availability_); +} + QDataStream &operator<<(QDataStream &out, const CodeCompletion &command) { out << command.text_; @@ -129,8 +139,8 @@ QDataStream &operator<<(QDataStream &out, const CodeCompletion &command) out << command.snippet_; out << command.chunks_; out << command.priority_; - out << command.completionKindAsInt; - out << command.availabilityAsInt; + out << command.completionKind_; + out << command.availability_; out << command.hasParameters_; return out; @@ -143,8 +153,8 @@ QDataStream &operator>>(QDataStream &in, CodeCompletion &command) in >> command.snippet_; in >> command.chunks_; in >> command.priority_; - in >> command.completionKindAsInt; - in >> command.availabilityAsInt; + in >> command.completionKindAsInt(); + in >> command.availabilityAsInt(); in >> command.hasParameters_; return in; diff --git a/src/libs/codemodelbackendipc/source/codecompletion.h b/src/libs/codemodelbackendipc/source/codecompletion.h index 7b696d3832..f487a837cd 100644 --- a/src/libs/codemodelbackendipc/source/codecompletion.h +++ b/src/libs/codemodelbackendipc/source/codecompletion.h @@ -50,7 +50,7 @@ class CMBIPC_EXPORT CodeCompletion friend void PrintTo(const CodeCompletion &command, ::std::ostream* os); public: - enum Kind { + enum Kind : quint32 { Other = 0, FunctionCompletionKind, TemplateFunctionCompletionKind, @@ -70,7 +70,7 @@ public: ClangSnippetKind }; - enum Availability { + enum Availability : quint32 { Available, Deprecated, NotAvailable, @@ -109,19 +109,17 @@ public: quint32 priority() const; private: + quint32 &completionKindAsInt(); + quint32 &availabilityAsInt(); + +private: Utf8String text_; Utf8String hint_; Utf8String snippet_; QVector<CodeCompletionChunk> chunks_; quint32 priority_ = 0; - union { - Kind completionKind_; - qint32 completionKindAsInt; - }; - union { - Availability availability_; - qint32 availabilityAsInt; - }; + Kind completionKind_ = Other; + Availability availability_ = NotAvailable; bool hasParameters_ = false; }; diff --git a/src/libs/codemodelbackendipc/source/codecompletionchunk.cpp b/src/libs/codemodelbackendipc/source/codecompletionchunk.cpp index 0788dd2829..4a84d4d854 100644 --- a/src/libs/codemodelbackendipc/source/codecompletionchunk.cpp +++ b/src/libs/codemodelbackendipc/source/codecompletionchunk.cpp @@ -65,9 +65,14 @@ const QVector<CodeCompletionChunk> &CodeCompletionChunk::optionalChunks() const return optionalChunks_; } +quint32 &CodeCompletionChunk::kindAsInt() +{ + return reinterpret_cast<quint32&>(kind_); +} + QDataStream &operator <<(QDataStream &out, const CodeCompletionChunk &chunk) { - out << chunk.kindAsInt; + out << chunk.kind_; out << chunk.text_; if (chunk.kind() == CodeCompletionChunk::Optional) @@ -78,7 +83,7 @@ QDataStream &operator <<(QDataStream &out, const CodeCompletionChunk &chunk) QDataStream &operator >>(QDataStream &in, CodeCompletionChunk &chunk) { - in >> chunk.kindAsInt; + in >> chunk.kindAsInt(); in >> chunk.text_; if (chunk.kind_ == CodeCompletionChunk::Optional) diff --git a/src/libs/codemodelbackendipc/source/codecompletionchunk.h b/src/libs/codemodelbackendipc/source/codecompletionchunk.h index 74e442d519..6a5fd4609c 100644 --- a/src/libs/codemodelbackendipc/source/codecompletionchunk.h +++ b/src/libs/codemodelbackendipc/source/codecompletionchunk.h @@ -80,12 +80,13 @@ public: const QVector<CodeCompletionChunk> &optionalChunks() const; private: + quint32 &kindAsInt(); + +private: Utf8String text_; QVector<CodeCompletionChunk> optionalChunks_; - union { - Kind kind_; - quint32 kindAsInt; - }; + Kind kind_ = Invalid; + }; CMBIPC_EXPORT QDataStream &operator <<(QDataStream &out, const CodeCompletionChunk &chunk); |