1
0
forked from GitHub/gf-core

a major refactoring in the C runtime. GuList is now removed and replaced with GuSeq. The GuSeq/GuBuf API is simplified

This commit is contained in:
kr.angelov
2013-09-17 12:45:00 +00:00
parent f5461eb3d4
commit 2a49e4e1d6
26 changed files with 420 additions and 615 deletions

View File

@@ -286,7 +286,7 @@ pgf_read_type_(PgfReader* rdr)
{
size_t n_hypos = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, NULL);
GuSeq hypos = gu_new_seq(PgfHypo, n_hypos, rdr->opool);
GuSeq* hypos = gu_new_seq(PgfHypo, n_hypos, rdr->opool);
for (size_t i = 0; i < n_hypos; i++) {
PgfHypo* hypo = gu_seq_index(hypos, PgfHypo, i);
pgf_read_hypo(rdr, hypo);
@@ -415,7 +415,7 @@ pgf_read_absfun(PgfReader* rdr)
gu_return_on_exn(rdr->err, NULL);
switch (tag) {
case 0:
absfun->defns = gu_null_seq;
absfun->defns = NULL;
break;
case 1: {
GuLength length = pgf_read_len(rdr);
@@ -586,16 +586,16 @@ pgf_read_printnames(PgfReader* rdr)
return printnames;
}
static PgfTokens
static PgfTokens*
pgf_read_tokens(PgfReader* rdr)
{
size_t len = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, gu_null_seq);
gu_return_on_exn(rdr->err, NULL);
PgfTokens tokens = gu_new_seq(PgfToken, len, rdr->opool);
PgfTokens* tokens = gu_new_seq(PgfToken, len, rdr->opool);
for (size_t i = 0; i < len; i++) {
PgfToken token = pgf_read_string(rdr);
gu_return_on_exn(rdr->err, gu_null_seq);
gu_return_on_exn(rdr->err, NULL);
gu_seq_set(tokens, PgfToken, i, token);
}
@@ -612,12 +612,12 @@ pgf_read_alternative(PgfReader* rdr, PgfAlternative* alt)
size_t n_prefixes = pgf_read_len(rdr);
gu_return_on_exn(rdr->err,);
alt->prefixes = gu_new_list(GuStringL, rdr->opool, n_prefixes);
alt->prefixes = gu_new_seq(GuString, n_prefixes, rdr->opool);
for (size_t i = 0; i < n_prefixes; i++) {
GuString prefix = pgf_read_string(rdr);
gu_return_on_exn(rdr->err,);
gu_list_index(alt->prefixes, i) = prefix;
gu_seq_set(alt->prefixes, GuString, i, prefix);
}
}
@@ -677,7 +677,7 @@ pgf_read_symbol(PgfReader* rdr)
break;
}
case PGF_SYMBOL_KP: {
PgfTokens default_form = pgf_read_tokens(rdr);
PgfTokens* default_form = pgf_read_tokens(rdr);
gu_return_on_exn(rdr->err, gu_null_variant);
size_t n_forms = pgf_read_len(rdr);
@@ -710,17 +710,17 @@ pgf_read_symbol(PgfReader* rdr)
return sym;
}
static PgfSequence
static PgfSequence*
pgf_read_sequence(PgfReader* rdr)
{
size_t len = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, gu_null_seq);
gu_return_on_exn(rdr->err, NULL);
PgfSequence seq = gu_new_seq(PgfSymbol, len, rdr->opool);
PgfSequence* seq = gu_new_seq(PgfSymbol, len, rdr->opool);
for (size_t i = 0; i < len; i++) {
PgfSymbol sym = pgf_read_symbol(rdr);
gu_return_on_exn(rdr->err, gu_null_seq);
gu_return_on_exn(rdr->err, NULL);
gu_seq_set(seq, PgfSymbol, i, sym);
}
@@ -733,12 +733,12 @@ pgf_read_sequences(PgfReader* rdr)
size_t len = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, NULL);
PgfSequences* seqs = gu_new_list(PgfSequences, rdr->opool, len);
PgfSequences* seqs = gu_new_seq(PgfSequence*, len, rdr->opool);
for (size_t i = 0; i < len; i++) {
PgfSequence seq = pgf_read_sequence(rdr);
PgfSequence* seq = pgf_read_sequence(rdr);
gu_return_on_exn(rdr->err, NULL);
gu_list_index(seqs, i) = seq;
gu_seq_set(seqs, PgfSequence*, i, seq);
}
return seqs;
@@ -763,15 +763,15 @@ pgf_read_cncfun(PgfReader* rdr, PgfAbstr* abstr, PgfConcr* concr, int funid)
cncfun->n_lins = len;
for (size_t i = 0; i < len; i++) {
int seqid = pgf_read_int(rdr);
size_t seqid = pgf_read_int(rdr);
gu_return_on_exn(rdr->err, NULL);
if (seqid < 0 || seqid >= gu_list_length(concr->sequences)) {
if (seqid >= gu_seq_length(concr->sequences)) {
gu_raise(rdr->err, PgfReadExn);
return NULL;
}
cncfun->lins[i] = gu_list_elems(concr->sequences)[seqid];
cncfun->lins[i] = gu_seq_get(concr->sequences, PgfSequence*, seqid);
}
return cncfun;
@@ -783,13 +783,13 @@ pgf_read_cncfuns(PgfReader* rdr, PgfAbstr* abstr, PgfConcr* concr)
size_t len = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, NULL);
PgfCncFuns* cncfuns = gu_new_list(PgfCncFuns, rdr->opool, len);
PgfCncFuns* cncfuns = gu_new_seq(PgfCncFun*, len, rdr->opool);
for (size_t funid = 0; funid < len; funid++) {
PgfCncFun* cncfun = pgf_read_cncfun(rdr, abstr, concr, funid);
gu_return_on_exn(rdr->err, NULL);
gu_list_index(cncfuns, funid) = cncfun;
gu_seq_set(cncfuns, PgfCncFun*, funid, cncfun);
}
return cncfuns;
@@ -807,7 +807,7 @@ pgf_read_fid(PgfReader* rdr, PgfConcr* concr)
ccat->cnccat = NULL;
ccat->lindefs = NULL;
ccat->n_synprods = 0;
ccat->prods = gu_null_seq;
ccat->prods = NULL;
ccat->viterbi_prob = 0;
ccat->fid = fid;
ccat->conts = NULL;
@@ -822,15 +822,15 @@ pgf_read_fid(PgfReader* rdr, PgfConcr* concr)
static PgfCncFun*
pgf_read_funid(PgfReader* rdr, PgfConcr* concr)
{
int32_t funid = pgf_read_int(rdr);
size_t funid = pgf_read_int(rdr);
gu_return_on_exn(rdr->err, NULL);
if (funid < 0 || funid >= gu_list_length(concr->cncfuns)) {
if (funid >= gu_seq_length(concr->cncfuns)) {
gu_raise(rdr->err, PgfReadExn);
return NULL;
}
return gu_list_elems(concr->cncfuns)[funid];
return gu_seq_get(concr->cncfuns, PgfCncFun*, funid);
}
static void
@@ -845,10 +845,10 @@ pgf_read_lindefs(PgfReader* rdr, PgfConcr* concr)
size_t n_funs = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, );
ccat->lindefs = gu_new_list(PgfCncFuns, rdr->opool, n_funs);
ccat->lindefs = gu_new_seq(PgfCncFun*, n_funs, rdr->opool);
for (size_t j = 0; j < n_funs; j++) {
PgfCncFun* fun = pgf_read_funid(rdr, concr);
gu_list_index(ccat->lindefs, j) = fun;
gu_seq_set(ccat->lindefs, PgfCncFun*, j, fun);
}
}
}
@@ -859,9 +859,9 @@ pgf_read_parg(PgfReader* rdr, PgfConcr* concr, PgfPArg* parg)
size_t n_hoas = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, );
parg->hypos = gu_new_list(PgfCCats, rdr->opool, n_hoas);
parg->hypos = gu_new_seq(PgfCCat*, n_hoas, rdr->opool);
for (size_t i = 0; i < n_hoas; i++) {
gu_list_index(parg->hypos, i) = pgf_read_fid(rdr, concr);
gu_seq_set(parg->hypos, PgfCCat*, i, pgf_read_fid(rdr, concr));
gu_return_on_exn(rdr->err, );
}
@@ -869,13 +869,13 @@ pgf_read_parg(PgfReader* rdr, PgfConcr* concr, PgfPArg* parg)
gu_return_on_exn(rdr->err, );
}
static PgfPArgs
static PgfPArgs*
pgf_read_pargs(PgfReader* rdr, PgfConcr* concr)
{
size_t len = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, gu_null_seq);
gu_return_on_exn(rdr->err, NULL);
PgfPArgs pargs = gu_new_seq(PgfPArg, len, rdr->opool);
PgfPArgs* pargs = gu_new_seq(PgfPArg, len, rdr->opool);
for (size_t i = 0; i < len; i++) {
PgfPArg* parg = gu_seq_index(pargs, PgfPArg, i);
pgf_read_parg(rdr, concr, parg);
@@ -967,7 +967,7 @@ pgf_read_cnccat(PgfReader* rdr, PgfAbstr* abstr, PgfConcr* concr, PgfCId name)
gu_assert(cnccat->abscat != NULL);
int len = last + 1 - first;
cnccat->cats = gu_new_list(PgfCCats, rdr->opool, len);
cnccat->cats = gu_new_seq(PgfCCat*, len, rdr->opool);
for (int i = 0; i < len; i++) {
int fid = first + i;
@@ -977,7 +977,7 @@ pgf_read_cnccat(PgfReader* rdr, PgfAbstr* abstr, PgfConcr* concr, PgfCId name)
ccat->cnccat = NULL;
ccat->lindefs = NULL;
ccat->n_synprods = 0;
ccat->prods = gu_null_seq;
ccat->prods = NULL;
ccat->viterbi_prob = 0;
ccat->fid = fid;
ccat->conts = NULL;
@@ -985,7 +985,7 @@ pgf_read_cnccat(PgfReader* rdr, PgfAbstr* abstr, PgfConcr* concr, PgfCId name)
gu_map_put(concr->ccats, &fid, PgfCCat*, ccat);
}
gu_list_index(cnccat->cats, i) = ccat;
gu_seq_set(cnccat->cats, PgfCCat*, i, ccat);
ccat->cnccat = cnccat;
}
@@ -1079,7 +1079,7 @@ pgf_read_ccat_cb(GuMapItor* fn, const void* key, void* value, GuExn* err)
PgfConcr *concr = clo->concr;
GuPool *pool = clo->pool;
if (gu_seq_is_null(ccat->prods))
if (ccat->prods == NULL)
return;
size_t n_prods = gu_seq_length(ccat->prods);