本文整理汇总了C++中tcpip::Storage::readDouble方法的典型用法代码示例。如果您正苦于以下问题:C++ Storage::readDouble方法的具体用法?C++ Storage::readDouble怎么用?C++ Storage::readDouble使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tcpip::Storage
的用法示例。
在下文中一共展示了Storage::readDouble方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReadGetResponse
void Query::ReadGetResponse(tcpip::Storage & content) {
int position = 0;
int length2 = 0;
int extLength = 0;
int length = 0;
int commandId = 0;
int varId = 0;
string objectId = "";
int variableType = 0;
try {
position = content.position();
length2 = content.size();
extLength = content.readUnsignedByte();
if (extLength == 0) {
length = content.readInt();
}
commandId = content.readUnsignedByte();
varId = content.readUnsignedByte();
objectId = content.readString();
variableType = content.readUnsignedByte();
int listLen = 0;
int count = 0;
switch (variableType) {
case TYPE_STRING:
stringValue = content.readString();
break;
case TYPE_INTEGER:
intValue = content.readInt();
break;
case TYPE_DOUBLE:
doubleValue = content.readDouble();
break;
case TYPE_STRINGLIST:
listLen = content.readInt();
stringListValue.clear();
for (int i=0; i<listLen; i++) {
stringListValue.push_back(content.readString());
}
break;
case POSITION_2D:
positionValue.x = content.readDouble();
positionValue.y = content.readDouble();
break;
case TYPE_BOUNDINGBOX:
count = content.size()/sizeof(double);
for (int i = 0; i < count-1; i++) {
vectorValue.push_back(content.readDouble());
}
break;
default:
break;
}
}
catch (exception & ex) {
cout << "can't read response for object " << objectId << ex.what() << endl;
cout<<position<<" "<<length2 << " "<<extLength<<" "<<length<<" "<<commandId<<" "<<varId<<" "<<objectId<<" "<<variableType<< "\n";
}
}
示例2:
bool
TraCIServer::readTypeCheckingBoundary(tcpip::Storage& inputStorage, Boundary& into) {
if (inputStorage.readUnsignedByte() != TYPE_BOUNDINGBOX) {
return false;
}
const SUMOReal xmin = inputStorage.readDouble();
const SUMOReal ymin = inputStorage.readDouble();
const SUMOReal xmax = inputStorage.readDouble();
const SUMOReal ymax = inputStorage.readDouble();
into.set(xmin, ymin, xmax, ymax);
return true;
}
示例3: col
bool
TraCIServerAPI_VehicleType::setVariable(const int cmd, const int variable, const int valueDataType,
MSVehicleType& v, traci::TraCIServer& server,
tcpip::Storage& inputStorage, tcpip::Storage& outputStorage) {
switch (variable) {
case VAR_LENGTH: {
if (valueDataType != TYPE_DOUBLE) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting length requires a double.", outputStorage);
return false;
}
double val = inputStorage.readDouble();
if (val == 0.0 || fabs(val) == std::numeric_limits<double>::infinity()) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Invalid length.", outputStorage);
return false;
}
v.setLength(val);
}
break;
case VAR_MAXSPEED: {
if (valueDataType != TYPE_DOUBLE) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting maximum speed requires a double.", outputStorage);
return false;
}
double val = inputStorage.readDouble();
if (val == 0.0 || fabs(val) == std::numeric_limits<double>::infinity()) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Invalid maximum speed.", outputStorage);
return false;
}
v.setMaxSpeed(val);
}
break;
case VAR_VEHICLECLASS: {
if (valueDataType != TYPE_STRING) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting vehicle class requires a string.", outputStorage);
return false;
}
v.setVClass(getVehicleClassID(inputStorage.readString()));
}
break;
case VAR_SPEED_FACTOR: {
if (valueDataType != TYPE_DOUBLE) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting speed factor requires a double.", outputStorage);
return false;
}
v.setSpeedFactor(inputStorage.readDouble());
}
break;
case VAR_SPEED_DEVIATION: {
if (valueDataType != TYPE_DOUBLE) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting speed deviation requires a double.", outputStorage);
return false;
}
v.setSpeedDeviation(inputStorage.readDouble());
}
break;
case VAR_EMISSIONCLASS: {
if (valueDataType != TYPE_STRING) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting emission class requires a string.", outputStorage);
return false;
}
v.setEmissionClass(getVehicleEmissionTypeID(inputStorage.readString()));
}
break;
case VAR_WIDTH: {
if (valueDataType != TYPE_DOUBLE) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting width requires a double.", outputStorage);
return false;
}
v.setWidth(inputStorage.readDouble());
}
break;
case VAR_MINGAP: {
if (valueDataType != TYPE_DOUBLE) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting minimum gap requires a double.", outputStorage);
return false;
}
v.setMinGap(inputStorage.readDouble());
}
break;
case VAR_SHAPECLASS: {
if (valueDataType != TYPE_STRING) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting vehicle shape requires a string.", outputStorage);
return false;
}
v.setShape(getVehicleShapeID(inputStorage.readString()));
}
break;
case VAR_ACCEL: {
if (valueDataType != TYPE_DOUBLE) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting acceleration requires a double.", outputStorage);
return false;
}
v.getCarFollowModel().setMaxAccel(inputStorage.readDouble());
}
break;
case VAR_DECEL: {
if (valueDataType != TYPE_DOUBLE) {
server.writeStatusCmd(cmd, RTYPE_ERR, "Setting deceleration requires a double.", outputStorage);
return false;
}
//.........这里部分代码省略.........