Beispiel #1
0
ProcDecl* Parser::parseProcDecl()
{
	Token procedure = match( PROC_T );
	Token ID = match( IDENT_T );
	list<Param*> params = parseParamList();
	match( SEMICOLON_T );
	Block* block = parseBlock();
	match( SEMICOLON_T );
	
	ProcDecl* node = new ProcDecl( ID.lexeme, params, block, procedure.line, procedure.column );
	return node;
}
Beispiel #2
0
int Eiger::put (sys_t sys, const char *param, const char *value, size_t len,
        paramList_t *paramList, int timeout)
{
    const char *functionName = "put";

    int headerLen;
    char header[MAX_BUF_SIZE];
    headerLen = epicsSnprintf(header, sizeof(header), REQUEST_PUT, sysStr[sys], param, len);

    request_t request;
    char requestBuf[headerLen + len];
    request.data      = requestBuf;
    request.dataLen   = headerLen + len;
    request.actualLen = request.dataLen;

    response_t response;
    char responseBuf[MAX_MESSAGE_SIZE];
    response.data    = responseBuf;
    response.dataLen = sizeof(responseBuf);

    memcpy(request.data, header, headerLen);
    memcpy(request.data + headerLen, value,  len);

    if(doRequest(&request, &response, timeout))
    {
        ERR_ARGS("[param=%s] request failed", param);
        return EXIT_FAILURE;
    }

    if(response.code != 200)
    {
        ERR_ARGS("[param=%s] server returned error code %d", param, response.code);
        return EXIT_FAILURE;
    }

    return paramList ? parseParamList(&response, paramList) : EXIT_SUCCESS;
}