Ejemplo n.º 1
0
ArgumentVector* ArgumentVector::readFromBinaryMessage(NetMessage* msg) {
	int i, maxi;
	ArgumentVector* ret;
	unsigned argType;
	std::string key;
	bool tempBool;
	float tempFloat;
	int tempInt;
	unsigned int tempUInt;
	std::string tempString;

	ret = new ArgumentVector();
	msgFunctions::decode(maxi, msg);

	for (i = 0; i < maxi; i++) {
		msgFunctions::decode(key, msg);
		msgFunctions::decode(argType, msg);
		switch (argType) {
		case Argument::BOOL:
			msgFunctions::decode(tempBool, msg);
			ret->push_back(key, tempBool);
			break;

		case Argument::INTEGER:
			msgFunctions::decode(tempInt, msg);
			ret->push_back(key, tempInt);
			break;

		case Argument::UINTEGER:
			msgFunctions::decode(tempUInt, msg);
			ret->push_back(key, tempUInt);
			break;

		case Argument::FLOAT:
			msgFunctions::decode(tempFloat, msg);
			ret->push_back(key, tempFloat);
			break;

		case Argument::STRING:
			msgFunctions::decode(tempString, msg);
			ret->push_back(key, tempString);
			break;

		default:
			assert(false);
		} // switch
	} // for

	return ret;
} // readFromBinaryMessage