diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2014-10-09 08:38:55 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2014-10-09 08:38:55 +0000 |
| commit | 6c86e7fa91602e4863c95622934d45e383890156 (patch) | |
| tree | 6f8e65171ecf5084e9a9b9c54fbcab60b29b3e2f /src/runtime/c/pgf/data.c | |
| parent | 84b257e85ca15b36e897df8701f66c57064fde97 (diff) | |
replace the hash maps in the abstract syntax with binary search tables
Diffstat (limited to 'src/runtime/c/pgf/data.c')
| -rw-r--r-- | src/runtime/c/pgf/data.c | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/src/runtime/c/pgf/data.c b/src/runtime/c/pgf/data.c index 79cd3e8a2..54df81a57 100644 --- a/src/runtime/c/pgf/data.c +++ b/src/runtime/c/pgf/data.c @@ -34,13 +34,19 @@ GU_DEFINE_TYPE(PgfCncCat, abstract); GU_DEFINE_TYPE(PgfDummyVariant, GuVariant); -GU_DEFINE_TYPE(PgfFlags, GuStringMap, gu_type(PgfDummyVariant), &gu_null_variant); +static int +pgf_flag_cmp_fn(GuOrder* self, const void* p1, const void* p2) +{ + (void) self; + return strcmp((GuString) p1, ((PgfFlag*) p2)->name); +} + +GuOrder pgf_flag_order[1] = { { pgf_flag_cmp_fn } }; + GU_DEFINE_TYPE(PgfProductionSeq, abstract); GU_DEFINE_TYPE(PgfProductionBuf, abstract); -GU_DEFINE_TYPE(PgfAbsFun, abstract); - static prob_t inf_prob = INFINITY; GU_DEFINE_TYPE(prob_t, GuFloating, _); @@ -51,9 +57,35 @@ GU_DEFINE_TYPE(PgfMetaChildMap, GuMap, GU_DEFINE_TYPE(PgfAbsCat, abstract); +static int +pgf_abscat_cmp_fn(GuOrder* self, const void* p1, const void* p2) +{ + (void) self; + return strcmp((GuString) p1, ((PgfAbsCat*) p2)->name); +} + +GuOrder pgf_abscat_order[1] = { { pgf_abscat_cmp_fn } }; + +static int +pgf_absfun_cmp_fn(GuOrder* self, const void* p1, const void* p2) +{ + (void) self; + return strcmp((GuString) p1, ((PgfAbsFun*) p2)->name); +} + +GuOrder pgf_absfun_order[1] = { { pgf_absfun_cmp_fn } }; + + static GuString empty_string = ""; GU_DEFINE_TYPE( PgfPrintNames, PgfCIdMap, gu_type(GuString), &empty_string); -GU_DEFINE_TYPE(PgfConcr, abstract); +static int +pgf_concr_cmp_fn(GuOrder* self, const void* p1, const void* p2) +{ + (void) self; + return strcmp((GuString) p1, ((PgfConcr*) p2)->name); +} + +GuOrder pgf_concr_order[1] = { { pgf_concr_cmp_fn } }; |
