summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@theqtcompany.com>2015-05-05 13:22:08 +0200
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-05-06 15:31:10 +0000
commite0fa131a1cebe618563fc9c27c47a1e81cf16a3b (patch)
tree4a841718bc68b52c408c3d7c81700feb7b3f50fc
parent6de4d8d013aa2d8e89dc8bf50612b0dd2c687221 (diff)
downloadqt-creator-e0fa131a1cebe618563fc9c27c47a1e81cf16a3b.tar.gz
use reference function instead of union
Change-Id: Ia6568ec922877a68b0ae0b6a55708bf4b98b4403 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
-rw-r--r--src/libs/codemodelbackendipc/source/codecompletion.cpp18
-rw-r--r--src/libs/codemodelbackendipc/source/codecompletion.h18
-rw-r--r--src/libs/codemodelbackendipc/source/codecompletionchunk.cpp9
-rw-r--r--src/libs/codemodelbackendipc/source/codecompletionchunk.h9
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);