int YAltitude::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "qnh")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _qnh =  floor(atof(j.token) * 1000.0 / 65536.0 + 0.5) / 1000.0;
        return 1;
    }
    if(!strcmp(j.token, "technology")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _technology =  _parseString(j);
        return 1;
    }
    failed:
    return YSensor::_parseAttr(j);
}
Example #2
0
File: json.cpp Project: Jesna/jucpp
	int _parse(LPCWSTR jstr,int pos,int maxlen,Json* jv){
		int i = pos;
		for(;(uint)i<(uint)maxlen;i++){
			if(_isSpaceChar(jstr[i])){
				continue;
			}else if(jstr[i]=='{'){
				jv->_type = json_object;
				jv->_objectValue = new ObjectLink<Json::DICTION>;
				i = _parseObject(jstr,i+1,maxlen,jv->_objectValue);
			}else if(jstr[i]=='['){
				jv->_type = json_array;
				jv->_arrayValue = new ObjectLink<Json>;
				i = _parseArray(jstr,i+1,maxlen,jv->_arrayValue);
			}else if(jstr[i]=='\"'){
				jv->_type = json_string;
				jv->_strValue = new String;
				i = _parseString(jstr,i+1,maxlen,jv->_strValue);
			}else if(jstr[i]=='\''){
				jv->_type = json_binary;
				jv->_binaryValue = new Memory<char>;
				i = _parseBinary(jstr,i+1,maxlen,jv->_binaryValue);
			}else{
				int nextPos = _getNextWord(jstr,i,maxlen);
				if(_isTrue(jstr,i,nextPos)){
					jv->_type = json_boolean;
					jv->_boolValue = true;
				}else if(_isFalse(jstr,i,nextPos)){
					jv->_type = json_boolean;
					jv->_boolValue = false;
				}else if(_isNull(jstr,i,nextPos)){
				}else if(_isDouble(jstr,i,nextPos,jv->_doubleValue)){
					jv->_type = json_double;
				}else if(_isInteger(jstr,i,nextPos,jv->_intValue)){
					jv->_type = json_integer;
				}else
					return -1;
				i = nextPos;
			}
			break;
		}
		return i;
	}
Example #3
0
File: json.cpp Project: Jesna/jucpp
	int _parseAll(LPCWSTR jstr,int pos,int maxlen,Json* jv){
		while(_isSpaceChar(jstr[pos])){
			pos++;
			if(pos==maxlen) return -1;
		}
		if(jstr[pos]=='\"'){
			jv->_type = json_string;
			jv->_strValue = new String;
			pos = _parseString(jstr,pos+1,maxlen,jv->_strValue);
		}else if(jstr[pos]=='\''){
			jv->_type = json_binary;
			jv->_binaryValue = new Memory<char>;
			pos = _parseBinary(jstr,pos+1,maxlen,jv->_binaryValue);
		}else if(jstr[pos]=='['){
			jv->_type = json_array;
			jv->_arrayValue = new ObjectLink<Json>;
			pos = _parseArray(jstr,pos+1,maxlen,jv->_arrayValue);
		}else if(jstr[pos]=='{'){
			jv->_type = json_object;
			jv->_objectValue = new ObjectLink<Json::DICTION>;
			pos = _parseObject(jstr,pos+1,maxlen,jv->_objectValue);
		}else{
			int nextPos = _getNextWord(jstr,pos,maxlen);
			if(_isTrue(jstr,pos,nextPos)){
				jv->_type = json_boolean;
				jv->_boolValue = true;
			}else if(_isFalse(jstr,pos,nextPos)){
				jv->_type = json_boolean;
				jv->_boolValue = false;
			}else if(_isNull(jstr,pos,nextPos)){
				//jv本来就是 null 。
			}else if(_isInteger(jstr,pos,nextPos,jv->_intValue)){
				jv->_type = json_integer;
			}else if(_isDouble(jstr,pos,nextPos,jv->_doubleValue)){
				jv->_type = json_double;
			}else return -1;
			pos = nextPos;
		}
		return pos;
	}
Example #4
0
JValue* Parser::_parseValue() {
    switch(_cur_token.type()) {
        case TT_STRING:
            return _parseString();
        case TT_INTEGER:
            return _parseInt();
        case TT_REAL:
            return _parseReal();
        case TT_TRUE:
            return _parseTrue();
        case TT_FALSE:
            return _parseFalse();
        case TT_NULL:
            return _parseNull();
        case TT_ARRAY_OPEN_BRACE:
            return _parseArray();
        case TT_OBJECT_OPEN_BRACE:
            return _parseObject();
        default:
            _err = _instream->error();
            return NULL;
    }
}
int YColorLed::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "rgbColor")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _rgbColor =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "hslColor")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _hslColor =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "rgbMove")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
            if(!strcmp(j.token, "moving")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _rgbMove.moving = atoi(j.token);
            } else if(!strcmp(j.token, "target")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _rgbMove.target = atoi(j.token);
            } else if(!strcmp(j.token, "ms")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _rgbMove.ms = atoi(j.token);
            }
        }
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        return 1;
    }
    if(!strcmp(j.token, "hslMove")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
            if(!strcmp(j.token, "moving")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _hslMove.moving = atoi(j.token);
            } else if(!strcmp(j.token, "target")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _hslMove.target = atoi(j.token);
            } else if(!strcmp(j.token, "ms")) {
                if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
                _hslMove.ms = atoi(j.token);
            }
        }
        if(j.st != YJSON_PARSE_STRUCT) goto failed;
        return 1;
    }
    if(!strcmp(j.token, "rgbColorAtPowerOn")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _rgbColorAtPowerOn =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "blinkSeqSize")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _blinkSeqSize =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "blinkSeqMaxSize")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _blinkSeqMaxSize =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "blinkSeqSignature")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _blinkSeqSignature =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "command")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _command =  _parseString(j);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}
    bool LanguageMetadataParser::_parseRule() throw(LanguageException)
    {
        //rule ::= rule-identifier unnecessary-character '::=' unnecessary-character rule-definition unnecessary-character ';';

        //variables
        LMRuleIdentifier ruleIdentifier;
        LMRuleDefinition ruleDefinition;

        if (_parseRuleIdentifier())
        {
            _parseUnnecessaryCharacters();

            if (_parseString("::="))
            {
                _parseUnnecessaryCharacters();

                //on parse la définition de la règle
                if (_parseRuleDefinition())
                {
                    _parseUnnecessaryCharacters();

                    if (_parseString(";"))
                    {
                        //on récupert le dernier identifiant de règle
                        if (_ruleIdentifierStack.size() >= 1)
                        {
                            ruleIdentifier = _ruleIdentifierStack.top();
                            _ruleIdentifierStack.pop();
                        }
                        else
                        {
                            //traitement des erreurs
                            throw LanguageException(_languageIdentifier, tr("euh ..."));
                        }

                        //on récupert la dernière definition de la règle
                        if (_ruleDefinitionStack.size() >= 1)
                        {
                            ruleDefinition = _ruleDefinitionStack.top();
                            _ruleDefinitionStack.pop();
                        }
                        else
                        {
                            //traitement des erreurs
                            throw LanguageException(_languageIdentifier, tr("euh ..."));
                        }

                        //ajout de la règle dans le tableau des règles
                        _rules[ruleIdentifier] = ruleDefinition;

                        return true;
                    }
                    else
                    {
                        throw LanguageException(_languageIdentifier, _languageMetadataBuffer->getCurrentLine() - 1, tr("syntaxe incorrecte, symbole \";\" absent."));
                    }
                }
                else
                {
                    throw LanguageException(_languageIdentifier, _languageMetadataBuffer->getCurrentLine(), tr("syntaxe incorrecte, règle non défini après le symbole \"::=\"."));
                }
            }
            else
            {
                throw LanguageException(_languageIdentifier, _languageMetadataBuffer->getCurrentLine(), tr("syntaxe incorrecte, symbole \"::=\" absent."));
            }
        }

        return false;
    }
Example #7
0
int YNetwork::_parse(yJsonStateMachine& j)
{
    if(yJsonParse(&j) != YJSON_PARSE_AVAIL || j.st != YJSON_PARSE_STRUCT) {
    failed:
        return -1;
    }
    while(yJsonParse(&j) == YJSON_PARSE_AVAIL && j.st == YJSON_PARSE_MEMBNAME) {
        if(!strcmp(j.token, "logicalName")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _logicalName =  _parseString(j);
        } else if(!strcmp(j.token, "advertisedValue")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _advertisedValue =  _parseString(j);
        } else if(!strcmp(j.token, "readiness")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _readiness =  (Y_READINESS_enum)atoi(j.token);
        } else if(!strcmp(j.token, "macAddress")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _macAddress =  _parseString(j);
        } else if(!strcmp(j.token, "ipAddress")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _ipAddress =  _parseString(j);
        } else if(!strcmp(j.token, "subnetMask")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _subnetMask =  _parseString(j);
        } else if(!strcmp(j.token, "router")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _router =  _parseString(j);
        } else if(!strcmp(j.token, "ipConfig")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _ipConfig =  _parseString(j);
        } else if(!strcmp(j.token, "primaryDNS")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _primaryDNS =  _parseString(j);
        } else if(!strcmp(j.token, "secondaryDNS")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _secondaryDNS =  _parseString(j);
        } else if(!strcmp(j.token, "userPassword")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _userPassword =  _parseString(j);
        } else if(!strcmp(j.token, "adminPassword")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _adminPassword =  _parseString(j);
        } else if(!strcmp(j.token, "discoverable")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _discoverable =  (Y_DISCOVERABLE_enum)atoi(j.token);
        } else if(!strcmp(j.token, "wwwWatchdogDelay")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _wwwWatchdogDelay =  atoi(j.token);
        } else if(!strcmp(j.token, "callbackUrl")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackUrl =  _parseString(j);
        } else if(!strcmp(j.token, "callbackMethod")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackMethod =  (Y_CALLBACKMETHOD_enum)atoi(j.token);
        } else if(!strcmp(j.token, "callbackEncoding")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackEncoding =  (Y_CALLBACKENCODING_enum)atoi(j.token);
        } else if(!strcmp(j.token, "callbackCredentials")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackCredentials =  _parseString(j);
        } else if(!strcmp(j.token, "callbackMinDelay")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackMinDelay =  atoi(j.token);
        } else if(!strcmp(j.token, "callbackMaxDelay")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _callbackMaxDelay =  atoi(j.token);
        } else if(!strcmp(j.token, "poeCurrent")) {
            if(yJsonParse(&j) != YJSON_PARSE_AVAIL) return -1;
            _poeCurrent =  atoi(j.token);
        } else {
            // ignore unknown field
            yJsonSkip(&j, 1);
        }
    }
    if(j.st != YJSON_PARSE_STRUCT) goto failed;
    return 0;
}
Example #8
0
int YNetwork::_parseAttr(yJsonStateMachine& j)
{
    if(!strcmp(j.token, "readiness")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _readiness =  (Y_READINESS_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "macAddress")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _macAddress =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "ipAddress")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _ipAddress =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "subnetMask")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _subnetMask =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "router")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _router =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "ipConfig")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _ipConfig =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "primaryDNS")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _primaryDNS =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "secondaryDNS")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _secondaryDNS =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "ntpServer")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _ntpServer =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "userPassword")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _userPassword =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "adminPassword")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _adminPassword =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "httpPort")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _httpPort =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "defaultPage")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _defaultPage =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "discoverable")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _discoverable =  (Y_DISCOVERABLE_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "wwwWatchdogDelay")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _wwwWatchdogDelay =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "callbackUrl")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackUrl =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "callbackMethod")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackMethod =  (Y_CALLBACKMETHOD_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "callbackEncoding")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackEncoding =  (Y_CALLBACKENCODING_enum)atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "callbackCredentials")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackCredentials =  _parseString(j);
        return 1;
    }
    if(!strcmp(j.token, "callbackMinDelay")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackMinDelay =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "callbackMaxDelay")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _callbackMaxDelay =  atoi(j.token);
        return 1;
    }
    if(!strcmp(j.token, "poeCurrent")) {
        if(yJsonParse(&j) != YJSON_PARSE_AVAIL) goto failed;
        _poeCurrent =  atoi(j.token);
        return 1;
    }
    failed:
    return YFunction::_parseAttr(j);
}