Rollback to use demangle_name_gcc3() for gcc3+ to get qualified method demangling.
+ Cleanup coding style violations. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31263 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -7,15 +7,13 @@
|
|||||||
|
|
||||||
#include <SupportDefs.h>
|
#include <SupportDefs.h>
|
||||||
|
|
||||||
const char*
|
|
||||||
demangle_symbol(const char* mangledName, char* buffer, size_t bufferSize,
|
const char* demangle_symbol(const char* mangledName, char* buffer, size_t bufferSize,
|
||||||
bool* _isObjectMethod);
|
bool* _isObjectMethod);
|
||||||
|
|
||||||
status_t
|
status_t get_next_argument(uint32* _cookie, const char* mangledName, char* name,
|
||||||
get_next_argument(uint32* _cookie, const char* mangledName, char* name,
|
|
||||||
size_t nameSize, int32* _type, size_t* _argumentLength);
|
size_t nameSize, int32* _type, size_t* _argumentLength);
|
||||||
|
|
||||||
|
|
||||||
// gcc 2
|
// gcc 2
|
||||||
const char* demangle_symbol_gcc2(const char* name, char* buffer,
|
const char* demangle_symbol_gcc2(const char* name, char* buffer,
|
||||||
size_t bufferSize, bool* _isObjectMethod);
|
size_t bufferSize, bool* _isObjectMethod);
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <TypeConstants.h>
|
|
||||||
|
|
||||||
#include "Demangler.h"
|
#include "Demangler.h"
|
||||||
|
|
||||||
|
#include <TypeConstants.h>
|
||||||
|
|
||||||
#include "demangle.h"
|
#include "demangle.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -17,11 +17,17 @@ Demangler::Demangle(const BString& mangledName)
|
|||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
const char* demangled;
|
const char* demangled;
|
||||||
|
|
||||||
demangled = demangle_symbol(mangledName.String(), buffer,
|
if (mangledName.Compare("_Z", 2) == 0)
|
||||||
|
demangled = demangle_name_gcc3(mangledName.String(), buffer,
|
||||||
|
sizeof(buffer));
|
||||||
|
else
|
||||||
|
demangled = demangle_symbol_gcc2(mangledName.String(), buffer,
|
||||||
sizeof(buffer), NULL);
|
sizeof(buffer), NULL);
|
||||||
|
|
||||||
if (demangled == NULL)
|
if (demangled == NULL)
|
||||||
return mangledName;
|
// name not mangled
|
||||||
|
return mangledName;
|
||||||
|
|
||||||
demangledName << demangled << "(";
|
demangledName << demangled << "(";
|
||||||
|
|
||||||
size_t length;
|
size_t length;
|
||||||
@@ -29,7 +35,7 @@ Demangler::Demangle(const BString& mangledName)
|
|||||||
uint32 cookie = 0;
|
uint32 cookie = 0;
|
||||||
while (get_next_argument(&cookie, mangledName.String(), buffer,
|
while (get_next_argument(&cookie, mangledName.String(), buffer,
|
||||||
sizeof(buffer), &type, &length) == B_OK) {
|
sizeof(buffer), &type, &length) == B_OK) {
|
||||||
|
|
||||||
if (i++ > 0)
|
if (i++ > 0)
|
||||||
demangledName << ", ";
|
demangledName << ", ";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user