MCPcopy Create free account
hub / github.com/avast/retdec / deserialize

Function deserialize

src/serdes/function.cpp:112–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

110SERIALIZE_EXPLICIT_INSTANTIATION(common::Function)
111
112void deserialize(const rapidjson::Value& val, common::Function& f)
113{
114 if (val.IsNull() || !val.IsObject())
115 {
116 return;
117 }
118
119 f.setName( deserializeString(val, JSON_name) );
120 f.setRealName( deserializeString(val, JSON_realName) );
121 f.setDemangledName( deserializeString(val, JSON_demangledName) );
122 f.setComment( deserializeString(val, JSON_comment) );
123 f.setDeclarationString( deserializeString(val, JSON_decStr) );
124 f.setWrappedFunctionName( deserializeString(val, JSON_wrappedName) );
125 f.setSourceFileName( deserializeString(val, JSON_srcFileName) );
126 f.setIsFromDebug( deserializeBool(val, JSON_fromDebug) );
127 f.setIsConstructor( deserializeBool(val, JSON_isConstructor) );
128 f.setIsDestructor( deserializeBool(val, JSON_isDestructor) );
129 f.setIsVirtual( deserializeBool(val, JSON_isVirtual) );
130 f.setIsExported( deserializeBool(val, JSON_isExported) );
131 f.setIsVariadic( deserializeBool(val, JSON_isVariadic) );
132 f.setIsThumb( deserializeBool(val, JSON_isThumb) );
133
134 common::Address s;
135 deserialize(val, JSON_startAddr, s);
136 f.setStart(s);
137
138 common::Address e;
139 deserialize(val, JSON_endAddr, e);
140 f.setEnd(e);
141
142 common::Address sl;
143 deserialize(val, JSON_startLine, sl);
144 f.setStartLine(sl);
145
146 common::Address el;
147 deserialize(val, JSON_endLine, el);
148 f.setEndLine(el);
149
150 deserialize(val, JSON_cc, f.callingConvention);
151 deserialize(val, JSON_returnStorage, f.returnStorage);
152 deserialize(val, JSON_fbStorage, f.frameBaseStorage);
153 deserialize(val, JSON_returnType, f.returnType);
154
155 deserializeContainer(val, JSON_locals, f.locals);
156 deserializeContainer(val, JSON_parameters, f.parameters);
157 deserializeContainer(val, JSON_usedCrypto, f.usedCryptoConstants);
158 deserializeContainer(val, JSON_basicBlocks, f.basicBlocks);
159
160 std::string enumStr = deserializeString(val, JSON_fncType);
161 auto it = std::find(fncTypes.begin(), fncTypes.end(), enumStr);
162 if (it != fncTypes.end())
163 {
164 f.setLinkType(static_cast<common::Function::eLinkType>(
165 std::distance(fncTypes.begin(), it)));
166 }
167}
168
169} // namespace serdes

Callers

nothing calls this directly

Calls 15

deserializeStringFunction · 0.85
deserializeBoolFunction · 0.85
deserializeContainerFunction · 0.85
setCommentMethod · 0.80
setDeclarationStringMethod · 0.80
setSourceFileNameMethod · 0.80
setIsDestructorMethod · 0.80
setIsExportedMethod · 0.80
setIsVariadicMethod · 0.80
setStartMethod · 0.80
setEndMethod · 0.80

Tested by

no test coverage detected