1
0
forked from GitHub/gf-core

optimize the reading of strings in the grammar loader.

This commit is contained in:
kr.angelov
2013-09-13 08:28:20 +00:00
parent 4d8ed02f6d
commit 2e8f055164
6 changed files with 96 additions and 30 deletions

View File

@@ -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