bool GNEClosingReroute::isValid(SumoXMLAttr key, const std::string& value) { switch (key) { case SUMO_ATTR_ID: return isValidAdditionalID(value); case SUMO_ATTR_EDGE: return (myViewNet->getNet()->retrieveEdge(value, false) != nullptr); case SUMO_ATTR_ALLOW: return canParseVehicleClasses(value); case SUMO_ATTR_DISALLOW: return canParseVehicleClasses(value); case GNE_ATTR_GENERIC: return isGenericParametersValid(value); default: throw InvalidArgument(getTagStr() + " doesn't have an attribute of type '" + toString(key) + "'"); } }
bool GNELane::isValid(SumoXMLAttr key, const std::string& value) { switch (key) { case SUMO_ATTR_ID: return false; case SUMO_ATTR_SPEED: return canParse<SUMOReal>(value); case SUMO_ATTR_ALLOW: case SUMO_ATTR_DISALLOW: return canParseVehicleClasses(value); case SUMO_ATTR_WIDTH: return canParse<SUMOReal>(value) && (isPositive<SUMOReal>(value) || parse<SUMOReal>(value) == NBEdge::UNSPECIFIED_WIDTH); case SUMO_ATTR_ENDOFFSET: return canParse<SUMOReal>(value); case SUMO_ATTR_INDEX: return value == toString(myIndex); default: throw InvalidArgument("lane attribute '" + toString(key) + "' not allowed"); } }