コード例 #1
0
ファイル: GNEAttributeCarrier.cpp プロジェクト: cbrafter/sumo
bool
GNEAttributeCarrier::isValidStringVector(const std::string& value) {
    // 1) check if value is empty
    if(value.empty()) {
        return true;
    }
    // 2) Check if there are duplicated spaces
    for(int i = 1; i < (int)value.size(); i++) {
        if(value.at(i-1) == ' ' && value.at(i) == ' ') {
            return false;
        }
    }
    // 3) Check if the first and last character aren't spaces
    if((value.at(0) == ' ') || (value.at(value.size()-1) == ' ')) {
        return false;
    }
    // 4) Check if every sub-string is valid
    int index = 0;
    std::string subString;
    while(index < (int)value.size()) {
        if(value.at(index) == ' ') {
            if(!isValidFileValue(subString)) {
                return false;
            } else {
                subString.clear();
            }
        } else {
            subString.push_back(value.at(index));
        }
        index++;
    }
    // 5) All right, then return true
    return true;
}
コード例 #2
0
bool
GNEVariableSpeedSignal::isValid(SumoXMLAttr key, const std::string& value) {
    switch (key) {
        case SUMO_ATTR_ID:
            if (myViewNet->getNet()->getAdditional(getTag(), value) == NULL) {
                return true;
            } else {
                return false;
            }
        case SUMO_ATTR_POSITION:
            bool ok;
            return GeomConvHelper::parseShapeReporting(value, "user-supplied position", 0, ok, false).size() == 1;
        case SUMO_ATTR_LANES: {
            std::vector<std::string> laneIds;
            SUMOSAXAttributes::parseStringVector(value, laneIds);
            // Empty Lanes aren't valid
            if (laneIds.empty()) {
                return false;
            }
            // Iterate over parsed lanes
            for (int i = 0; i < (int)laneIds.size(); i++) {
                if (myViewNet->getNet()->retrieveLane(laneIds.at(i), false) == NULL) {
                    return false;
                }
            }
            return true;
        }
        case SUMO_ATTR_FILE:
            return isValidFileValue(value);
        case GNE_ATTR_BLOCK_MOVEMENT:
            return canParse<bool>(value);
        default:
            throw InvalidArgument(toString(getType()) + " attribute '" + toString(key) + "' not allowed");
    }
}
コード例 #3
0
ファイル: GNEDetectorE1.cpp プロジェクト: cbrafter/sumo
bool
GNEDetectorE1::isValid(SumoXMLAttr key, const std::string& value) {
    switch (key) {
        case SUMO_ATTR_ID:
            if(myViewNet->getNet()->getAdditional(getTag(), value) == NULL) {
                return true;
            } else {
                return false;
            }
        case SUMO_ATTR_LANE:
            if(myViewNet->getNet()->retrieveLane(value, false) != NULL) {
                return true;
            } else {
                return false;
            }
        case SUMO_ATTR_POSITION:
            return (canParse<SUMOReal>(value) && parse<SUMOReal>(value) >= 0 && parse<SUMOReal>(value) <= (myLane->getLaneParametricLenght()));
        case SUMO_ATTR_FREQUENCY:
            return (canParse<SUMOReal>(value) && parse<SUMOReal>(value) >= 0);
        case SUMO_ATTR_FILE:
            return isValidFileValue(value);
        case SUMO_ATTR_SPLIT_VTYPE:
            return canParse<bool>(value);
        default:
            throw InvalidArgument(toString(getType()) + " attribute '" + toString(key) + "' not allowed");
    }
}