diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-09-13 08:28:20 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-09-13 08:28:20 +0000 |
| commit | 2e8f05516416095dc5bee68552bfdeb4f88c10e5 (patch) | |
| tree | 8ca3c368579da84c906749d84ab63703ca769d5f /src/runtime/c/pgf/reader.c | |
| parent | 4d8ed02f6d091eb5e45c87a9b355d22298e4551b (diff) | |
optimize the reading of strings in the grammar loader.
Diffstat (limited to 'src/runtime/c/pgf/reader.c')
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 27 |
1 files changed, 2 insertions, 25 deletions
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 |
