X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_stream.c;h=c5b15115668d1e4d3da3ec7182f51202c98340ff;hb=19596bc4e5cd282b2e75d17077b1aaaeacbfd6f9;hp=7ead4116ed5b2cc2a18a5cfea02318addab88135;hpb=fbed514c820956a11dc218ddf9ce409d5bd1eb36;p=platform%2Fupstream%2Fisl.git diff --git a/isl_stream.c b/isl_stream.c index 7ead411..c5b1511 100644 --- a/isl_stream.c +++ b/isl_stream.c @@ -81,6 +81,13 @@ struct isl_token *isl_token_new(isl_ctx *ctx, return tok; } +/* Return the type of "tok". + */ +int isl_token_get_type(struct isl_token *tok) +{ + return tok ? tok->type : ISL_TOKEN_ERROR; +} + /* Given a token of type ISL_TOKEN_VALUE, return the value it represents. */ __isl_give isl_val *isl_token_get_val(isl_ctx *ctx, struct isl_token *tok) @@ -94,6 +101,19 @@ __isl_give isl_val *isl_token_get_val(isl_ctx *ctx, struct isl_token *tok) return isl_val_int_from_isl_int(ctx, tok->u.v); } +/* Given a token of type ISL_TOKEN_STRING, return the string it represents. + */ +__isl_give char *isl_token_get_str(isl_ctx *ctx, struct isl_token *tok) +{ + if (!tok) + return NULL; + if (tok->type != ISL_TOKEN_STRING) + isl_die(ctx, isl_error_invalid, "not a string token", + return NULL); + + return strdup(tok->u.s); +} + void isl_token_free(struct isl_token *tok) { if (!tok) @@ -279,6 +299,8 @@ static enum isl_token_type check_keywords(struct isl_stream *s) return ISL_TOKEN_AND; if (!strcasecmp(s->buffer, "or")) return ISL_TOKEN_OR; + if (!strcasecmp(s->buffer, "implies")) + return ISL_TOKEN_IMPLIES; if (!strcasecmp(s->buffer, "not")) return ISL_TOKEN_NOT; if (!strcasecmp(s->buffer, "infty")) @@ -303,6 +325,10 @@ static enum isl_token_type check_keywords(struct isl_stream *s) return ISL_TOKEN_FLOORD; if (!strcasecmp(s->buffer, "mod")) return ISL_TOKEN_MOD; + if (!strcasecmp(s->buffer, "ceil")) + return ISL_TOKEN_CEIL; + if (!strcasecmp(s->buffer, "floor")) + return ISL_TOKEN_FLOOR; if (!s->keywords) return ISL_TOKEN_IDENT;