Пример #1
0
bool ItemAttribute::unserialize(PropStream& stream)
{
	uint8_t type = 0;
	stream.getByte(type);
	switch(type)
	{
		case STRING:
		{
			std::string v;
			if(!stream.getLongString(v))
				return false;

			set(v);
			break;
		}
		case INTEGER:
		{
			uint32_t v;
			if(!stream.getLong(v))
				return false;

			set(*reinterpret_cast<int32_t*>(&v));
			break;
		}
		case FLOAT:
		{
			float v;
			if(!stream.getFloat(v))
				return false;

			set(*reinterpret_cast<float*>(&v));
			break;
		}
		case BOOLEAN:
		{
			uint8_t v;
			if(!stream.getByte(v))
				return false;

			set(v != 0);
		}
		default:
			break;
	}

	return true;
}