summaryrefslogtreecommitdiff
path: root/src/runtime/c/pgf/reader.c
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2013-02-11 14:10:54 +0000
committerkr.angelov <kr.angelov@gmail.com>2013-02-11 14:10:54 +0000
commitd124fa9a124327d8142b9a5c005e6067d93c3e7e (patch)
treece3185e7773d19f4f8fe679a0fba2e3aec361fd3 /src/runtime/c/pgf/reader.c
parent90c3304147e3829b9ea7f73085e54d9d0811ca8b (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.c56
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);