From 79ea4af960168021421152f7d5b8070892aa76e1 Mon Sep 17 00:00:00 2001 From: krasimir Date: Wed, 25 Nov 2015 10:37:13 +0000 Subject: added readTriple in libsg and its Haskell binding --- src/runtime/c/pgf/expr.c | 15 ++++++++++++++- src/runtime/c/pgf/expr.h | 6 +++++- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src/runtime/c') diff --git a/src/runtime/c/pgf/expr.c b/src/runtime/c/pgf/expr.c index d579027aa..8b34421d9 100644 --- a/src/runtime/c/pgf/expr.c +++ b/src/runtime/c/pgf/expr.c @@ -840,7 +840,7 @@ pgf_read_expr(GuIn* in, GuPool* pool, GuExn* err) int pgf_read_expr_tuple(GuIn* in, - int n_exprs, PgfExpr exprs[], + size_t n_exprs, PgfExpr exprs[], GuPool* pool, GuExn* err) { GuPool* tmp_pool = gu_new_pool(); @@ -1332,6 +1332,19 @@ pgf_print_type(PgfType *type, PgfPrintContext* ctxt, int prec, } } +void +pgf_print_expr_tuple(size_t n_exprs, PgfExpr exprs[], PgfPrintContext* ctxt, + GuOut* out, GuExn* err) +{ + gu_putc('<', out, err); + for (size_t i = 0; i < n_exprs; i++) { + if (i > 0) + gu_putc(',', out, err); + pgf_print_expr(exprs[i], ctxt, 0, out, err); + } + gu_putc('>', out, err); +} + bool pgf_type_eq(PgfType* t1, PgfType* t2) { diff --git a/src/runtime/c/pgf/expr.h b/src/runtime/c/pgf/expr.h index 2e76bf21d..8dd1e0d44 100644 --- a/src/runtime/c/pgf/expr.h +++ b/src/runtime/c/pgf/expr.h @@ -160,7 +160,7 @@ pgf_read_expr(GuIn* in, GuPool* pool, GuExn* err); int pgf_read_expr_tuple(GuIn* in, - int n_exprs, PgfExpr exprs[], + size_t n_exprs, PgfExpr exprs[], GuPool* pool, GuExn* err); PgfType* @@ -206,4 +206,8 @@ void pgf_print_type(PgfType *type, PgfPrintContext* ctxt, int prec, GuOut* out, GuExn *err); +void +pgf_print_expr_tuple(size_t n_exprs, PgfExpr exprs[], PgfPrintContext* ctxt, + GuOut* out, GuExn* err); + #endif /* EXPR_H_ */ -- cgit v1.2.3