summaryrefslogtreecommitdiff
path: root/library/DataDefs.cpp
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-03-21 13:26:53 +0400
committerAlexander Gavrilov2012-03-21 13:26:53 +0400
commit9b78fffe9255e0fd14b6e446652598a36372b934 (patch)
tree8c1e02483868cd3c22219152b32f544b877b19cf /library/DataDefs.cpp
parent73e138c9fdf64cab23330fc13b73383d8648324d (diff)
downloaddfhack-9b78fffe9255e0fd14b6e446652598a36372b934.tar.gz
dfhack-9b78fffe9255e0fd14b6e446652598a36372b934.tar.bz2
dfhack-9b78fffe9255e0fd14b6e446652598a36372b934.tar.xz
Support containers in the lua wrapper.
Diffstat (limited to 'library/DataDefs.cpp')
-rw-r--r--library/DataDefs.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/library/DataDefs.cpp b/library/DataDefs.cpp
index e8ee1471..9576afb7 100644
--- a/library/DataDefs.cpp
+++ b/library/DataDefs.cpp
@@ -34,6 +34,7 @@ distribution.
#include "tinythread.h"
// must be last due to MS stupidity
#include "DataDefs.h"
+#include "DataIdentity.h"
#include "MiscUtils.h"
@@ -62,6 +63,14 @@ void compound_identity::doInit(Core *)
top_scope.push_back(this);
}
+std::string compound_identity::getFullName()
+{
+ if (scope_parent)
+ return scope_parent->getFullName() + "." + getName();
+ else
+ return getName();
+}
+
static tthread::mutex *known_mutex = NULL;
void compound_identity::Init(Core *core)
@@ -130,6 +139,32 @@ bool struct_identity::is_subclass(struct_identity *actual)
return false;
}
+std::string pointer_identity::getFullName()
+{
+ return (target ? target->getFullName() : std::string("void")) + "*";
+}
+
+std::string container_identity::getFullName(type_identity *item)
+{
+ return "<" + (item ? item->getFullName() : std::string("void")) + ">";
+}
+
+std::string ptr_container_identity::getFullName(type_identity *item)
+{
+ return "<" + (item ? item->getFullName() : std::string("void")) + "*>";
+}
+
+std::string bit_container_identity::getFullName(type_identity *)
+{
+ return "<bool>";
+}
+
+std::string df::buffer_container_identity::getFullName(type_identity *item)
+{
+ return (item ? item->getFullName() : std::string("void")) +
+ (size > 0 ? stl_sprintf("[%d]", size) : std::string("[]"));
+}
+
virtual_identity::virtual_identity(size_t size, TAllocateFn alloc,
const char *dfhack_name, const char *original_name,
virtual_identity *parent, const struct_field_info *fields)