forked from Andersbakken/rtags
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathQueryMessage.cpp
135 lines (123 loc) · 4.61 KB
/
QueryMessage.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* This file is part of RTags (http://rtags.net).
RTags is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
RTags is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with RTags. If not, see <http://www.gnu.org/licenses/>. */
#include "QueryMessage.h"
#include "rct/Serializer.h"
#include "RTags.h"
QueryMessage::QueryMessage(Type type)
: RTagsMessage(MessageId), mType(type), mMax(-1), mMinLine(-1), mMaxLine(-1), mBuildIndex(0), mTerminalWidth(-1)
{
}
void QueryMessage::encode(Serializer &serializer) const
{
serializer << mRaw << mQuery << mType << mFlags << mMax
<< mMinLine << mMaxLine << mBuildIndex << mPathFilters << mKindFilters
<< mCurrentFile << mUnsavedFiles << mTerminalWidth
#ifdef RTAGS_HAS_LUA
<< mVisitASTScripts
#endif
;
}
void QueryMessage::decode(Deserializer &deserializer)
{
deserializer >> mRaw >> mQuery >> mType >> mFlags >> mMax
>> mMinLine >> mMaxLine >> mBuildIndex >> mPathFilters >> mKindFilters
>> mCurrentFile >> mUnsavedFiles >> mTerminalWidth
#ifdef RTAGS_HAS_LUA
>> mVisitASTScripts
#endif
;
}
Flags<Location::ToStringFlag> QueryMessage::locationToStringFlags(Flags<Flag> queryFlags)
{
Flags<Location::ToStringFlag> ret;
if (!(queryFlags & NoContext))
ret |= Location::ShowContext;
if (queryFlags & NoColor)
ret |= Location::NoColor;
if (queryFlags & AbsolutePath)
ret |= Location::AbsolutePath;
return ret;
}
Match QueryMessage::match() const
{
Flags<Match::Flag> flags = Match::Flag_StringMatch;
if (mFlags & MatchRegex)
flags |= Match::Flag_Regex;
return Match(mQuery, flags);
}
QueryMessage::Flag QueryMessage::flagFromString(const String &string)
{
if (string == "no-context") {
return NoContext;
} else if (string == "filter-system-includes") {
return FilterSystemIncludes;
} else if (string == "strip-parentheses") {
return StripParentheses;
} else if (string == "all-references") {
return AllReferences;
} else if (string == "reverse-sort") {
return ReverseSort;
} else if (string == "elisp") {
return Elisp;
} else if (string == "imenu") {
return IMenu;
} else if (string == "match-regexp") {
return MatchRegex;
} else if (string == "match-case-insensitive") {
return MatchCaseInsensitive;
} else if (string == "find-virtuals") {
return FindVirtuals;
} else if (string == "silent") {
return Silent;
} else if (string == "absolute-path") {
return AbsolutePath;
} else if (string == "find-file-prefer-exact") {
return FindFilePreferExact;
} else if (string == "symbol-info-include-parents") {
return SymbolInfoIncludeParents;
} else if (string == "symbol-info-exclude-targets") {
return SymbolInfoExcludeTargets;
} else if (string == "symbol-info-exclude-references") {
return SymbolInfoExcludeReferences;
} else if (string == "declaration-only") {
return DeclarationOnly;
} else if (string == "definiton-only") {
return DefinitionOnly;
} else if (string == "containing-function") {
return ContainingFunction;
} else if (string == "cursor-kind") {
return CursorKind;
} else if (string == "display-name") {
return DisplayName;
} else if (string == "compilation-flags-only") {
return CompilationFlagsOnly;
} else if (string == "compilation-flags-split-line") {
return CompilationFlagsSplitLine;
} else if (string == "dump-include-headers") {
return DumpIncludeHeaders;
} else if (string == "silent-query") {
return SilentQuery;
} else if (string == "synchronous-completions") {
return SynchronousCompletions;
} else if (string == "no-sort-references-by-input") {
return NoSortReferencesByInput;
} else if (string == "has-location") {
return HasLocation;
} else if (string == "wildcard-symbol-names") {
return WildcardSymbolNames;
} else if (string == "no-color") {
return NoColor;
} else if (string == "all-targets") {
return AllTargets;
}
return NoFlag;
}