diff options
author | Corey Farrell <git@cfware.com> | 2016-07-14 14:51:42 -0400 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2016-07-15 05:34:29 -0400 |
commit | be36bd7ca565531c09ca444e59b6d057131a9ab0 (patch) | |
tree | 85595a26df4bbfcfc39a78c5c2474984c8c894ce /utils | |
parent | 273052f40498378d3f2d3548347a243df68ee9a4 (diff) |
pbx: Create pbx_include.c for management of 'struct ast_include'.
This changes context includes from a linked list to a vector, makes
'struct ast_include' opaque to pbx.c.
Although ast_walk_context_includes is maintained the procedure is no
longer efficient except for the first call (inc==NULL). This
functionality is replaced by two new functions implemented by vector
macros.
* ast_context_includes_count (AST_VECTOR_SIZE)
* ast_context_includes_get (AST_VECTOR_GET)
As with ast_walk_context_includes callers of these functions are
expected to have locked contexts. Only a few places in Asterisk walked
the includes, they have been converted to use the new functions.
const have been applied where possible to parameters for ast_include
functions.
Change-Id: Ib5c882e27cf96fb2aec67a39c18b4c71c9c83b60
Diffstat (limited to 'utils')
-rw-r--r-- | utils/conf2ael.c | 4 | ||||
-rw-r--r-- | utils/extconf.c | 13 |
2 files changed, 15 insertions, 2 deletions
diff --git a/utils/conf2ael.c b/utils/conf2ael.c index 76a3ad3f2..8b2043082 100644 --- a/utils/conf2ael.c +++ b/utils/conf2ael.c @@ -664,8 +664,8 @@ struct ast_exten *ast_walk_context_extensions(struct ast_context *con, struct as return NULL; } -struct ast_include *ast_walk_context_includes(struct ast_context *con, struct ast_include *inc); -struct ast_include *ast_walk_context_includes(struct ast_context *con, struct ast_include *inc) +const struct ast_include *ast_walk_context_includes(const struct ast_context *con, const struct ast_include *inc); +const struct ast_include *ast_walk_context_includes(const struct ast_context *con, const struct ast_include *inc) { return NULL; } diff --git a/utils/extconf.c b/utils/extconf.c index 48053aed6..3a0b2e97c 100644 --- a/utils/extconf.c +++ b/utils/extconf.c @@ -4381,6 +4381,19 @@ static struct ast_include *ast_walk_context_includes(struct ast_context *con, return inc->next; } +int ast_context_includes_count(struct ast_context *con); +int ast_context_includes_count(struct ast_context *con) +{ + int c = 0; + struct ast_include *inc = NULL; + + while ((inc = ast_walk_context_includes(con, inc))) { + c++; + } + + return c; +} + struct ast_include *localized_walk_context_includes(struct ast_context *con, struct ast_include *inc); struct ast_include *localized_walk_context_includes(struct ast_context *con, |