コード例 #1
0
ファイル: HttpParserImpl.cpp プロジェクト: jimmy486/kuma
bool HttpParserImpl::parseUrl()
{
    Uri uri;
    if(!uri.parse(url_)) {
        return false;
    }
    const std::string& query = uri.getQuery();
    std::string::size_type pos = 0;
    while (true) {
        auto pos1 = query.find('=', pos);
        if(pos1 == std::string::npos){
            break;
        }
        std::string name(query.begin()+pos, query.begin()+pos1);
        pos = pos1 + 1;
        pos1 = query.find('&', pos);
        if(pos1 == std::string::npos){
            std::string value(query.begin()+pos, query.end());
            addParamValue(name, value);
            break;
        }
        std::string value(query.begin()+pos, query.begin()+pos1);
        pos = pos1 + 1;
        addParamValue(name, value);
    }
    
    return true;
}
コード例 #2
0
ファイル: grammar.c プロジェクト: steakknife/sblim-sfcc
static void methodRespContent(ParserControl *parm, parseUnion *stateUnion)
{
	parseUnion lvalp={0};
	ct = localLex(&lvalp, parm);
	if(ct == XTOK_ERROR) {
		dontLex = 1;
		error(parm, (parseUnion*)&lvalp.xtokErrorResp);
	}
	else if(ct == XTOK_RETVALUE || ct == XTOK_PARAMVALUE) {
		dontLex = 1;
		if(ct == XTOK_RETVALUE) {
			dontLex = 1;
			returnValue(parm, (parseUnion*)&lvalp.xtokReturnValue);
		}
		ct = localLex(&lvalp, parm);
		dontLex = 1;
		if(ct == XTOK_PARAMVALUE) {
			do {
				dontLex = 1;
				paramValue(parm, (parseUnion*)&lvalp.xtokParamValue);
				addParamValue(parm, &stateUnion->xtokMethodRespContent.values, &lvalp.xtokParamValue);
				ct = localLex(&lvalp, parm);
			}
			while(ct == XTOK_PARAMVALUE);
			dontLex = 1;
		}
	}
	else if(ct == ZTOK_METHODRESP) {
		dontLex = 1;
	}
	else {
		parseError("XTOK_ERROR or XTOK_RETVALUE or XTOK_PARAMVALUE or ZTOK_METHODRESP", ct, parm);
	}
}