From 84494e873cc40b1beff34d2434bf105408453436 Mon Sep 17 00:00:00 2001 From: doomchild Date: Fri, 1 Apr 2011 14:41:47 -0500 Subject: [PATCH] added readClassName --- library/DFProcess_C.cpp | 29 ++++++++++++++++++++++++++ library/include/dfhack-c/DFProcess_C.h | 1 + 2 files changed, 30 insertions(+) diff --git a/library/DFProcess_C.cpp b/library/DFProcess_C.cpp index a0291a1d2..e7c589b50 100644 --- a/library/DFProcess_C.cpp +++ b/library/DFProcess_C.cpp @@ -190,6 +190,35 @@ char* Process_getPath(DFHackObject* p_Ptr) return ""; } +char* Process_readClassName(DFHackObject* p_Ptr, uint32_t vptr) +{ + if(p_Ptr == NULL || alloc_char_buffer_callback == NULL) + return NULL; + + std::string cString = ((DFHack::Process*)p_Ptr)->readClassName(vptr); + + if(cString.length() > 0) + { + size_t length = cString.length(); + + char* buf; + + //add 1 for the null terminator + ((*alloc_char_buffer_callback)(&buf, length + 1)); + + if(buf == NULL) + return NULL; + + memset(buf, '\0', length + 1); + + cString.copy(buf, length); + + return buf; + } + else + return ""; +} + uint32_t* Process_getThreadIDs(DFHackObject* p_Ptr) { if(p_Ptr == NULL || alloc_uint_buffer_callback == NULL) diff --git a/library/include/dfhack-c/DFProcess_C.h b/library/include/dfhack-c/DFProcess_C.h index 70b968cbd..aeb58d21e 100644 --- a/library/include/dfhack-c/DFProcess_C.h +++ b/library/include/dfhack-c/DFProcess_C.h @@ -74,6 +74,7 @@ DFHACK_EXPORT int Process_readSTLVector(DFHackObject* p_Ptr, uint32_t address, t DFHACK_EXPORT char* Process_readString(DFHackObject* p_Ptr, uint32_t offset); DFHACK_EXPORT char* Process_getPath(DFHackObject* p_Ptr); +DFHACK_EXPORT char* Process_readClassName(DFHackObject* p_Ptr, uint32_t vptr); DFHACK_EXPORT int Process_isSuspended(DFHackObject* p_Ptr); DFHACK_EXPORT int Process_isAttached(DFHackObject* p_Ptr);