* Convert a symbol into a human-readable string. */
| 136 | * Convert a symbol into a human-readable string. |
| 137 | */ |
| 138 | static void getSymbolString(const Symbol &sym, std::string &str) |
| 139 | { |
| 140 | str += sym.name; |
| 141 | if (sym.sig == TYPESIG_UNTYPED) |
| 142 | return; |
| 143 | str += '('; |
| 144 | bool prev = false; |
| 145 | for (unsigned i = 0; i < MAX_ARGNO; i++) |
| 146 | { |
| 147 | Type t = getType(sym.sig, i); |
| 148 | if (t == TYPE_NONE) |
| 149 | break; |
| 150 | if (prev) |
| 151 | str += ','; |
| 152 | prev = true; |
| 153 | if ((t & TYPE_CONST) != 0) |
| 154 | str += "const "; |
| 155 | switch (t & ~(TYPE_CONST | TYPE_PTR | TYPE_PTR_PTR)) |
| 156 | { |
| 157 | case TYPE_CHAR: |
| 158 | str += "char"; break; |
| 159 | case TYPE_INT8: |
| 160 | str += "int8_t"; break; |
| 161 | case TYPE_INT16: |
| 162 | str += "int16_t"; break; |
| 163 | case TYPE_INT32: |
| 164 | str += "int32_t"; break; |
| 165 | case TYPE_INT64: |
| 166 | str += "int64_t"; break; |
| 167 | case TYPE_VOID: |
| 168 | str += "void"; break; |
| 169 | case TYPE_NULL_PTR: |
| 170 | str += "std::nullptr_t"; break; |
| 171 | default: |
| 172 | str += "???"; break; |
| 173 | } |
| 174 | if ((t & TYPE_PTR) != 0) |
| 175 | str += " *"; |
| 176 | else if ((t & TYPE_PTR_PTR) != 0) |
| 177 | str += " **"; |
| 178 | } |
| 179 | str += ')'; |
| 180 | } |
| 181 | void getSymbolString(const char *name, TypeSig sig, std::string &str) |
| 182 | { |
| 183 | Symbol sym(name, sig); |
no test coverage detected