]> git.localhorst.tv Git - l2e.git/blobdiff - src/loader/TypeDescription.cpp
moved map sprites to data file
[l2e.git] / src / loader / TypeDescription.cpp
index c69efbe9b443170d6472d065c6ff717afa93bd42..ed88e8ec8eedee6e3d4f83d482ae7008f39e0440 100644 (file)
@@ -8,6 +8,7 @@
 #include "TypeDescription.h"
 
 #include <cassert>
+#include <cstring>
 #include <stdexcept>
 
 using std::map;
@@ -37,6 +38,14 @@ const FieldDescription &TypeDescription::GetField(const std::string &n) const {
        }
 }
 
+void TypeDescription::Construct(void *data) const {
+       if (constructor) {
+               (*constructor)(data);
+       } else {
+               std::memset(data, 0, Size());
+       }
+}
+
 
 void TypeDescription::AddSupertype(int id, std::ptrdiff_t offset) {
        supertypes[id] = offset;
@@ -51,10 +60,10 @@ std::ptrdiff_t TypeDescription::SupertypeOffset(int id) const {
 }
 
 
-vector<TypeDescription> Interpreter::typeDescriptions;
+vector<TypeDescription> TypeDescription::typeDescriptions;
 
 TypeDescription &TypeDescription::CreateOrGet(const std::string &name) {
-       for (vector<TypeDescription>::const_iterator i(typeDescriptions.begin()), end(typeDescriptions.end()); i != end; ++i) {
+       for (vector<TypeDescription>::iterator i(typeDescriptions.begin()), end(typeDescriptions.end()); i != end; ++i) {
                if (i->name == name) {
                        return *i;
                }
@@ -74,7 +83,7 @@ int TypeDescription::GetTypeId(const std::string &name) {
 }
 
 const TypeDescription &TypeDescription::Get(int id) {
-       assert(id >= 0 && id < typeDescriptions.size());
+       assert(id >= 0 && id < int(typeDescriptions.size()));
        return typeDescriptions[id];
 }