| 110 | SERIALIZE_EXPLICIT_INSTANTIATION(common::Function) |
| 111 | |
| 112 | void 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 |
nothing calls this directly
no test coverage detected