From 2e8f05516416095dc5bee68552bfdeb4f88c10e5 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Fri, 13 Sep 2013 08:28:20 +0000 Subject: optimize the reading of strings in the grammar loader. --- src/runtime/c/pgf/reader.c | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) (limited to 'src/runtime/c/pgf') diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index 1b776beec..b6d3c8854 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -91,38 +91,15 @@ pgf_read_len(PgfReader* rdr) static PgfCId pgf_read_cid(PgfReader* rdr) { - GuPool* tmp_pool = gu_new_pool(); - GuStringBuf* sbuf = gu_string_buf(tmp_pool); - GuOut* out = gu_string_buf_out(sbuf); - size_t len = pgf_read_len(rdr); - for (size_t i = 0; i < len; i++) { - // CIds are in latin-1 - GuUCS ucs = gu_in_u8(rdr->in, rdr->err); - gu_out_utf8(ucs, out, rdr->err); - } - GuString str = gu_string_buf_freeze(sbuf, rdr->opool); - gu_pool_free(tmp_pool); - return str; + return gu_string_read_latin1(len, rdr->opool, rdr->in, rdr->err); } static GuString pgf_read_string(PgfReader* rdr) { - GuPool* tmp_pool = gu_new_pool(); - GuStringBuf* sbuf = gu_string_buf(tmp_pool); - GuOut* out = gu_string_buf_out(sbuf); - GuLength len = pgf_read_len(rdr); - - for (size_t i = 0; i < len; i++) { - GuUCS ucs = gu_in_utf8(rdr->in, rdr->err); - gu_out_utf8(ucs, out, rdr->err); - } - GuString str = gu_string_buf_freeze(sbuf, rdr->opool); - gu_pool_free(tmp_pool); - - return str; + return gu_string_read(len, rdr->opool, rdr->in, rdr->err); } static void -- cgit v1.2.3