summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2012-01-23 19:47:08 +0000
committerkr.angelov <kr.angelov@gmail.com>2012-01-23 19:47:08 +0000
commitacc4f352af0e4c347fa3a583f33eb88c75f19600 (patch)
treebe00f6195cab877a8f3c9c0c14a6a93f6d4201ea /src
parent4f289698f08e8b498413973f643a4b9604e168ce (diff)
libpgf: extra_ccat is now redundant and was removed
Diffstat (limited to 'src')
-rw-r--r--src/runtime/c/pgf/linearize.c42
-rw-r--r--src/runtime/c/pgf/reader.c22
2 files changed, 17 insertions, 47 deletions
diff --git a/src/runtime/c/pgf/linearize.c b/src/runtime/c/pgf/linearize.c
index ce1b99b5b..56634d9b1 100644
--- a/src/runtime/c/pgf/linearize.c
+++ b/src/runtime/c/pgf/linearize.c
@@ -206,20 +206,6 @@ pgf_lzr_index(PgfLzr* lzr, PgfCCat* cat, PgfProduction prod)
}
}
-static void
-pgf_lzr_index_ccat(PgfLzr* lzr, PgfCCat* cat)
-{
- gu_debug("ccat: %d", cat->fid);
- if (gu_seq_is_null(cat->prods)) {
- return;
- }
- size_t n_prods = gu_seq_length(cat->prods);
- for (size_t i = 0; i < n_prods; i++) {
- PgfProduction prod = gu_seq_get(cat->prods, PgfProduction, i);
- pgf_lzr_index(lzr, cat, prod);
- }
-}
-
typedef struct {
GuMapItor fn;
PgfLzr* lzr;
@@ -229,19 +215,18 @@ static void
pgf_lzr_index_cnccat_cb(GuMapItor* fn, const void* key, void* value,
GuExn* err)
{
- (void) (key && err);
PgfLzrIndexFn* clo = (PgfLzrIndexFn*) fn;
- PgfCncCat** cnccatp = value;
- PgfCncCat* cnccat = *cnccatp;
- gu_enter("-> cnccat: %s", cnccat->cid);
- int n_ccats = gu_list_length(cnccat->cats);
- for (int i = 0; i < n_ccats; i++) {
- PgfCCat* cat = gu_list_index(cnccat->cats, i);
- if (cat) {
- pgf_lzr_index_ccat(clo->lzr, cat);
- }
+ PgfCCat *ccat = *((PgfCCat **) value);
+
+ gu_debug("ccat: %d", ccat->fid);
+ if (gu_seq_is_null(ccat->prods)) {
+ return;
+ }
+ size_t n_prods = gu_seq_length(ccat->prods);
+ for (size_t i = 0; i < n_prods; i++) {
+ PgfProduction prod = gu_seq_get(ccat->prods, PgfProduction, i);
+ pgf_lzr_index(clo->lzr, ccat, prod);
}
- gu_exit("<-");
}
@@ -254,12 +239,7 @@ pgf_new_lzr(PgfConcr* cnc, GuPool* pool)
lzr->fun_indices = gu_map_type_new(PgfFunIndices, pool);
lzr->coerce_idx = gu_map_type_new(PgfCoerceIdx, pool);
PgfLzrIndexFn clo = { { pgf_lzr_index_cnccat_cb }, lzr };
- gu_map_iter(cnc->cnccats, &clo.fn, NULL);
- size_t n_extras = gu_seq_length(cnc->extra_ccats);
- for (size_t i = 0; i < n_extras; i++) {
- PgfCCat* cat = gu_seq_get(cnc->extra_ccats, PgfCCat*, i);
- pgf_lzr_index_ccat(lzr, cat);
- }
+ gu_map_iter(cnc->ccats, &clo.fn, NULL);
// TODO: prune productions with zero linearizations
return lzr;
}
diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c
index 7be6f04ee..be9e33d80 100644
--- a/src/runtime/c/pgf/reader.c
+++ b/src/runtime/c/pgf/reader.c
@@ -597,13 +597,8 @@ static GU_DEFINE_TYPE(PgfCCatMap, GuIntMap, gu_ptr_type(PgfCCat),
static GU_DEFINE_TYPE(PgfCncCatMap, GuStringMap, gu_ptr_type(PgfCncCat),
&gu_null_struct);
-typedef struct {
- GuMapItor fn;
- GuBuf* seq;
-} PgfCCatCbCtx;
-
static PgfCncCat*
-pgf_ccat_set_cnccat(PgfCCat* ccat, GuBuf* newly_set)
+pgf_ccat_set_cnccat(PgfCCat* ccat)
{
if (!ccat->cnccat) {
size_t n_prods = gu_seq_length(ccat->prods);
@@ -615,8 +610,7 @@ pgf_ccat_set_cnccat(PgfCCat* ccat, GuBuf* newly_set)
case PGF_PRODUCTION_COERCE: {
PgfProductionCoerce* pcoerce = i.data;
PgfCncCat* cnccat =
- pgf_ccat_set_cnccat(pcoerce->coerce,
- newly_set);
+ pgf_ccat_set_cnccat(pcoerce->coerce);
if (!ccat->cnccat) {
ccat->cnccat = cnccat;
} else if (ccat->cnccat != cnccat) {
@@ -634,7 +628,6 @@ pgf_ccat_set_cnccat(PgfCCat* ccat, GuBuf* newly_set)
gu_impossible();
}
}
- gu_buf_push(newly_set, PgfCCat*, ccat);
}
return ccat->cnccat;
}
@@ -644,9 +637,8 @@ static void
pgf_read_ccat_cb(GuMapItor* fn, const void* key, void* value, GuExn* err)
{
(void) (key && err);
- PgfCCatCbCtx* ctx = (PgfCCatCbCtx*) fn;
PgfCCat** ccatp = value;
- pgf_ccat_set_cnccat(*ccatp, ctx->seq);
+ pgf_ccat_set_cnccat(*ccatp);
}
static void*
@@ -673,12 +665,10 @@ pgf_read_new_PgfConcr(GuType* type, PgfReader* rdr, GuPool* pool,
pgf_read_into_map(ccats_t, rdr, concr->ccats, rdr->opool);
concr->cnccats = pgf_read_new(rdr, gu_type(PgfCncCatMap),
rdr->opool, NULL);
-
- GuBuf* extra_ccats = gu_new_buf(PgfCCat*, pool);
- PgfCCatCbCtx ctx = { { pgf_read_ccat_cb }, extra_ccats };
- gu_map_iter(concr->ccats, &ctx.fn, NULL);
- concr->extra_ccats = gu_buf_freeze(extra_ccats, rdr->opool);
concr->max_fid = pgf_read_int(rdr);
+
+ GuMapItor fn = { pgf_read_ccat_cb };
+ gu_map_iter(concr->ccats, &fn, NULL);
return concr;
}