diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-02-11 14:10:54 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-02-11 14:10:54 +0000 |
| commit | d124fa9a124327d8142b9a5c005e6067d93c3e7e (patch) | |
| tree | ce3185e7773d19f4f8fe679a0fba2e3aec361fd3 /src/runtime/c/pgf/reader.c | |
| parent | 90c3304147e3829b9ea7f73085e54d9d0811ca8b (diff) | |
refactoring: now all named objects in the C runtime have an explicit name field
Diffstat (limited to 'src/runtime/c/pgf/reader.c')
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index 874f90fb3..840c6e0d4 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -413,10 +413,13 @@ pgf_read_patt(PgfReader* rdr) } static PgfAbsFun* -pgf_read_absfun(PgfReader* rdr, PgfCId name) +pgf_read_absfun(PgfReader* rdr) { PgfAbsFun* absfun = gu_new(PgfAbsFun, rdr->opool); + absfun->name = pgf_read_cid(rdr); + gu_return_on_exn(rdr->err, NULL); + absfun->type = pgf_read_type(rdr); gu_return_on_exn(rdr->err, NULL); @@ -464,7 +467,7 @@ pgf_read_absfun(PgfReader* rdr, PgfCId name) gu_new_variant(PGF_EXPR_FUN, PgfExprFun, &absfun->ep.expr, rdr->opool); - expr_fun->fun = name; + expr_fun->fun = absfun->name; return absfun; } @@ -482,24 +485,22 @@ pgf_read_absfuns(PgfReader* rdr) gu_return_on_exn(rdr->err, NULL); for (size_t i = 0; i < len; i++) { - PgfCId name = pgf_read_cid(rdr); - gu_return_on_exn(rdr->err, NULL); - - PgfAbsFun* decl = pgf_read_absfun(rdr, name); + PgfAbsFun* absfun = pgf_read_absfun(rdr); gu_return_on_exn(rdr->err, NULL); - gu_map_put(absfuns, &name, PgfAbsFun*, decl); + gu_map_put(absfuns, &absfun->name, PgfAbsFun*, absfun); } return absfuns; } static PgfAbsCat* -pgf_read_abscat(PgfReader* rdr, PgfAbstr* abstr, PgfCId name) +pgf_read_abscat(PgfReader* rdr, PgfAbstr* abstr) { PgfAbsCat* abscat = gu_new(PgfAbsCat, rdr->opool); - - abscat->name = name; + + abscat->name = pgf_read_cid(rdr); + gu_return_on_exn(rdr->err, NULL); size_t n_hypos = pgf_read_len(rdr); gu_return_on_exn(rdr->err, NULL); @@ -547,13 +548,10 @@ pgf_read_abscats(PgfReader* rdr, PgfAbstr* abstr) gu_return_on_exn(rdr->err, NULL); for (size_t i = 0; i < len; i++) { - PgfCId name = pgf_read_cid(rdr); - gu_return_on_exn(rdr->err, NULL); - - PgfAbsCat* abscat = pgf_read_abscat(rdr, abstr, name); + PgfAbsCat* abscat = pgf_read_abscat(rdr, abstr); gu_return_on_exn(rdr->err, NULL); - gu_map_put(abscats, &name, PgfAbsCat*, abscat); + gu_map_put(abscats, &abscat->name, PgfAbsCat*, abscat); } return abscats; @@ -562,6 +560,9 @@ pgf_read_abscats(PgfReader* rdr, PgfAbstr* abstr) static void pgf_read_abstract(PgfReader* rdr, PgfAbstr* abstract) { + abstract->name = pgf_read_cid(rdr); + gu_return_on_exn(rdr->err, ); + abstract->aflags = pgf_read_flags(rdr); gu_return_on_exn(rdr->err, ); @@ -1090,14 +1091,27 @@ static PgfConcr* pgf_read_concrete(PgfReader* rdr, PgfAbstr* abstr) { PgfConcr* concr = gu_new(PgfConcr, rdr->opool); + + concr->name = + pgf_read_cid(rdr); + gu_return_on_exn(rdr->err, NULL); + concr->cflags = pgf_read_flags(rdr); + gu_return_on_exn(rdr->err, NULL); + concr->printnames = pgf_read_printnames(rdr); + gu_return_on_exn(rdr->err, NULL); + concr->sequences = pgf_read_sequences(rdr); + gu_return_on_exn(rdr->err, NULL); + concr->cncfuns = - pgf_read_cncfuns(rdr, abstr, concr); + pgf_read_cncfuns(rdr, abstr, concr); + gu_return_on_exn(rdr->err, NULL); + concr->ccats = gu_new_int_map(PgfCCat*, &gu_null_struct, rdr->opool); concr->fun_indices = gu_map_type_new(PgfCncFunOverloadMap, rdr->opool); @@ -1133,13 +1147,10 @@ pgf_read_concretes(PgfReader* rdr, PgfAbstr* abstr) gu_return_on_exn(rdr->err, NULL); for (size_t i = 0; i < len; i++) { - PgfCId name = pgf_read_cid(rdr); - gu_return_on_exn(rdr->err, NULL); - PgfConcr* concr = pgf_read_concrete(rdr, abstr); gu_return_on_exn(rdr->err, NULL); - gu_map_put(concretes, &name, PgfConcr*, concr); + gu_map_put(concretes, &concr->name, PgfConcr*, concr); } return concretes; @@ -1157,10 +1168,7 @@ pgf_read_pgf(PgfReader* rdr) { pgf->gflags = pgf_read_flags(rdr); gu_return_on_exn(rdr->err, NULL); - - pgf->absname = pgf_read_cid(rdr); - gu_return_on_exn(rdr->err, NULL); - + pgf_read_abstract(rdr, &pgf->abstract); gu_return_on_exn(rdr->err, NULL); |
