| 18 | } |
| 19 | |
| 20 | std::string MethodInfo::GetSignature() { //use nodeId's to read the whole signature |
| 21 | auto m_reader = MetadataNode::getMetadataReader(); |
| 22 | string signature = "("; |
| 23 | string ret; |
| 24 | for (int i = 0; i < m_signatureLength; i++) { |
| 25 | uint16_t nodeId = nodeIds[i]; |
| 26 | string curArgTypeName = m_reader->ReadTypeName(nodeId); |
| 27 | MetadataTreeNode* node = m_reader->GetNodeById(nodeId); |
| 28 | |
| 29 | uint8_t nodeType = m_reader->GetNodeType(node); |
| 30 | bool isRefType = m_reader->IsNodeTypeClass(nodeType) || m_reader->IsNodeTypeInterface(nodeType); |
| 31 | if (i == 0) { |
| 32 | if ((curArgTypeName[0] != '[') && isRefType) { |
| 33 | ret.append("L"); |
| 34 | } |
| 35 | ret.append(curArgTypeName); |
| 36 | if ((curArgTypeName[0] != '[') && isRefType) { |
| 37 | ret.append(";"); |
| 38 | } |
| 39 | } else { |
| 40 | if ((curArgTypeName[0] != '[') && isRefType) { |
| 41 | signature.append("L"); |
| 42 | } |
| 43 | signature.append(curArgTypeName); |
| 44 | if ((curArgTypeName[0] != '[') && isRefType) { |
| 45 | signature.append(";"); |
| 46 | } |
| 47 | } |
| 48 | } |
| 49 | if (ret.empty()) { |
| 50 | ret = "V"; |
| 51 | } |
| 52 | signature += ")" + ret; |
| 53 | |
| 54 | return signature; |
| 55 | } |
| 56 | |
| 57 | std::string MethodInfo::GetDeclaringType() { |
| 58 | auto m_reader = MetadataNode::getMetadataReader(); |
no test coverage detected