From 41114a02a38a65956010bab95c4bff19af7ac1ed Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 20 Jul 2022 14:49:18 +0200 Subject: source: add tracking of exported symbols Extend abstract source objects to maintain a list of exported symbols and add functions to append and lookup exported names. Signed-off-by: Jo-Philipp Wich --- source.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'source.c') diff --git a/source.c b/source.c index b8f2e91..902ad4c 100644 --- a/source.c +++ b/source.c @@ -196,3 +196,28 @@ uc_source_runpath_set(uc_source_t *source, const char *runpath) source->runpath = xstrdup(runpath); } + +bool +uc_source_export_add(uc_source_t *source, uc_value_t *name) +{ + ssize_t idx = uc_source_export_lookup(source, name); + + if (idx > -1) + return false; + + uc_vector_push(&source->exports, ucv_get(name)); + + return true; +} + +ssize_t +uc_source_export_lookup(uc_source_t *source, uc_value_t *name) +{ + size_t i; + + for (i = 0; i < source->exports.count; i++) + if (ucv_is_equal(source->exports.entries[i], name)) + return i; + + return -1; +} -- cgit v1.2.3