1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

Fixed compilation with MSVC.

This commit is contained in:
Michał W. Urbańczyk
2014-03-08 19:02:47 +00:00
parent d2ae847ecf
commit 7d1e54baa7
5 changed files with 64 additions and 64 deletions

View File

@@ -49,53 +49,53 @@ public:
template <class _ObjectID, class _Object> class CHandlerBase: public IHandlerBase
{
public:
virtual ~CHandlerBase()
{
for(auto & o : objects)
{
o.dellNull();
}
virtual ~CHandlerBase()
{
for(auto & o : objects)
{
o.dellNull();
}
}
}
void loadObject(std::string scope, std::string name, const JsonNode & data) override
{
auto type_name = getTypeName();
auto object = loadFromJson(data);
object->id = _ObjectID(objects.size());
auto type_name = getTypeName();
auto object = loadFromJson(data);
object->id = _ObjectID(objects.size());
objects.push_back(object);
objects.push_back(object);
VLC->modh->identifiers.registerObject(scope, type_name, name, object->id);
VLC->modh->identifiers.registerObject(scope, type_name, name, object->id);
}
void loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) override
{
auto type_name = getTypeName();
auto object = loadFromJson(data);
object->id = _ObjectID(index);
auto type_name = getTypeName();
auto object = loadFromJson(data);
object->id = _ObjectID(index);
assert(objects[index] == nullptr); // ensure that this id was not loaded before
objects[index] = object;
assert(objects[index] == nullptr); // ensure that this id was not loaded before
objects[index] = object;
VLC->modh->identifiers.registerObject(scope,type_name, name, object->id);
VLC->modh->identifiers.registerObject(scope,type_name, name, object->id);
}
ConstTransitivePtr<_Object> operator[] (const _ObjectID id) const
{
const auto raw_id = id.toEnum();
if (raw_id < 0 || raw_id >= objects.size())
{
logGlobal->errorStream() << getTypeName() << " id " << static_cast<si64>(raw_id) << "is invalid";
throw std::runtime_error ("internal error");
}
{
const auto raw_id = id.toEnum();
return objects[raw_id];
if (raw_id < 0 || raw_id >= objects.size())
{
logGlobal->errorStream() << getTypeName() << " id " << static_cast<si64>(raw_id) << "is invalid";
throw std::runtime_error ("internal error");
}
return objects[raw_id];
}
protected:
virtual _Object * loadFromJson(const JsonNode & json) = 0;
virtual const std::string getTypeName() = 0;
virtual _Object * loadFromJson(const JsonNode & json) = 0;
virtual const std::string getTypeName() const = 0;
public: //todo: make private
std::vector<ConstTransitivePtr<_Object>> objects;
std::vector<ConstTransitivePtr<_Object>> objects;
};