From: Luigi Rizzo Date: Thu, 22 Nov 2007 03:50:04 +0000 (+0000) Subject: shuffle a little bit the content of header files to reduce dependencies. X-Git-Tag: 1.6.0-beta1~3^2~699 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51391e6b091be6017000f16b4b5a9b0230565746;p=thirdparty%2Fasterisk.git shuffle a little bit the content of header files to reduce dependencies. In this commit: - move the ast_register/unregister_app functions to module.h to avoid the need to include pbx.h for the simpler apps; - move the ast_group structure to channel.h to remove the dependency of app.h on linkedlists.h Note, this is a long process that I am doing in small steps. The main difficulty is that now for each subsystem we have a single header (e.g. channel.h) included by the subsystem provider (usually one file, e.g. channel.c) and by its clients (dozens of them, e.g. we have some 70+ apps and 30+ functions). This requires the clients to include all the extra headers required by the provider (eg. lock.h, linkedlists.h, definitions of substructures...) even though many of the clients would be just happy with opaque struct declarations and function prototypes. The long term plan is to eventually rectify this structure so that the compilation can become faster, and also APIs are more stable. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89522 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_cdr.c b/apps/app_cdr.c index 8ef10ba978..86b1db219c 100644 --- a/apps/app_cdr.c +++ b/apps/app_cdr.c @@ -31,7 +31,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/channel.h" #include "asterisk/module.h" -#include "asterisk/pbx.h" static char *nocdr_descrip = " NoCDR(): This application will tell Asterisk not to maintain a CDR for the\n" diff --git a/apps/app_dumpchan.c b/apps/app_dumpchan.c index 85f6789ca7..48fb6215d9 100644 --- a/apps/app_dumpchan.c +++ b/apps/app_dumpchan.c @@ -32,12 +32,9 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") -#include "asterisk/file.h" -#include "asterisk/channel.h" #include "asterisk/pbx.h" #include "asterisk/module.h" -#include "asterisk/utils.h" -#include "asterisk/lock.h" +#include "asterisk/channel.h" static char *app = "DumpChan"; static char *synopsis = "Dump Info About The Calling Channel"; diff --git a/apps/app_echo.c b/apps/app_echo.c index e3cd3b1160..b12b08f89b 100644 --- a/apps/app_echo.c +++ b/apps/app_echo.c @@ -32,6 +32,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/file.h" #include "asterisk/pbx.h" #include "asterisk/module.h" +#include "asterisk/channel.h" static char *app = "Echo"; diff --git a/apps/app_milliwatt.c b/apps/app_milliwatt.c index 99a1e160c1..315e86ab11 100644 --- a/apps/app_milliwatt.c +++ b/apps/app_milliwatt.c @@ -31,6 +31,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/pbx.h" #include "asterisk/module.h" +#include "asterisk/channel.h" static char *app = "Milliwatt"; diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c index bc24b4a189..f60d6f05fe 100644 --- a/apps/app_mixmonitor.c +++ b/apps/app_mixmonitor.c @@ -44,6 +44,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/module.h" #include "asterisk/cli.h" #include "asterisk/app.h" +#include "asterisk/channel.h" #define get_volfactor(x) x ? ((x > 0) ? (1 << x) : ((1 << abs(x)) * -1)) : 0 diff --git a/apps/app_read.c b/apps/app_read.c index 4ddd24de31..a7fdf624bd 100644 --- a/apps/app_read.c +++ b/apps/app_read.c @@ -31,6 +31,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/file.h" #include "asterisk/pbx.h" +#include "asterisk/channel.h" #include "asterisk/app.h" #include "asterisk/module.h" #include "asterisk/indications.h" diff --git a/apps/app_readexten.c b/apps/app_readexten.c index 21f7950fb4..cb4fd8c2a7 100644 --- a/apps/app_readexten.c +++ b/apps/app_readexten.c @@ -34,6 +34,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/app.h" #include "asterisk/module.h" #include "asterisk/indications.h" +#include "asterisk/channel.h" enum { OPT_SKIP = (1 << 0), diff --git a/apps/app_record.c b/apps/app_record.c index a41ed5906d..7214e1f070 100644 --- a/apps/app_record.c +++ b/apps/app_record.c @@ -33,6 +33,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/pbx.h" #include "asterisk/module.h" #include "asterisk/app.h" +#include "asterisk/channel.h" #include "asterisk/dsp.h" /* use dsp routines for silence detection */ diff --git a/apps/app_senddtmf.c b/apps/app_senddtmf.c index 3e39736202..67bd4feaa7 100644 --- a/apps/app_senddtmf.c +++ b/apps/app_senddtmf.c @@ -33,6 +33,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/module.h" #include "asterisk/app.h" #include "asterisk/manager.h" +#include "asterisk/channel.h" static char *app = "SendDTMF"; diff --git a/apps/app_stack.c b/apps/app_stack.c index 8d3d7bcc93..341b4c1d99 100644 --- a/apps/app_stack.c +++ b/apps/app_stack.c @@ -33,6 +33,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/module.h" #include "asterisk/app.h" #include "asterisk/manager.h" +#include "asterisk/channel.h" static const char *app_gosub = "Gosub"; static const char *app_gosubif = "GosubIf"; diff --git a/apps/app_system.c b/apps/app_system.c index 9526965f04..1f39c5a4ed 100644 --- a/apps/app_system.c +++ b/apps/app_system.c @@ -32,6 +32,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/pbx.h" #include "asterisk/module.h" #include "asterisk/app.h" +#include "asterisk/channel.h" /* autoservice */ static char *app = "System"; diff --git a/apps/app_transfer.c b/apps/app_transfer.c index 96c514eeb1..ee6c2c5889 100644 --- a/apps/app_transfer.c +++ b/apps/app_transfer.c @@ -31,12 +31,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") -#include "asterisk/lock.h" -#include "asterisk/file.h" -#include "asterisk/channel.h" #include "asterisk/pbx.h" #include "asterisk/module.h" #include "asterisk/app.h" +#include "asterisk/channel.h" static const char *app = "Transfer"; diff --git a/apps/app_url.c b/apps/app_url.c index 169511689e..f71b32fd05 100644 --- a/apps/app_url.c +++ b/apps/app_url.c @@ -32,6 +32,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/pbx.h" #include "asterisk/module.h" #include "asterisk/app.h" +#include "asterisk/channel.h" static char *app = "SendURL"; diff --git a/apps/app_verbose.c b/apps/app_verbose.c index abe73c5c46..0f7145131b 100644 --- a/apps/app_verbose.c +++ b/apps/app_verbose.c @@ -31,6 +31,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/pbx.h" #include "asterisk/module.h" #include "asterisk/app.h" +#include "asterisk/channel.h" static char *app_verbose = "Verbose"; static char *verbose_synopsis = "Send arbitrary text to verbose output"; diff --git a/apps/app_while.c b/apps/app_while.c index 933dd9ba12..1c61d966ea 100644 --- a/apps/app_while.c +++ b/apps/app_while.c @@ -31,6 +31,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/pbx.h" #include "asterisk/module.h" +#include "asterisk/channel.h" static char *start_app = "While"; static char *start_desc = diff --git a/include/asterisk.h b/include/asterisk.h index 2aa9785115..71cb4d454c 100644 --- a/include/asterisk.h +++ b/include/asterisk.h @@ -171,5 +171,7 @@ int64_t ast_mark(int, int start1_stop0); struct ast_channel; struct ast_frame; struct ast_module; +struct ast_variable; +struct ast_str; #endif /* _ASTERISK_H */ diff --git a/include/asterisk/app.h b/include/asterisk/app.h index 0529f92585..656e8390fc 100644 --- a/include/asterisk/app.h +++ b/include/asterisk/app.h @@ -23,6 +23,8 @@ #ifndef _ASTERISK_APP_H #define _ASTERISK_APP_H +struct ast_flags64; + #if defined(__cplusplus) || defined(c_plusplus) extern "C" { #endif @@ -227,12 +229,7 @@ int ast_unlock_path(const char *path); /*! Read a file into asterisk*/ char *ast_read_textfile(const char *file); -struct ast_group_info { - struct ast_channel *chan; - char *category; - char *group; - AST_LIST_ENTRY(ast_group_info) list; -}; +struct ast_group_info; /*! Split a group string into group and category, returning a default category if none is provided. */ int ast_app_group_split_group(const char *data, char *group, int group_max, char *category, int category_max); diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h index b79c0c29c2..5e2213c3a3 100644 --- a/include/asterisk/channel.h +++ b/include/asterisk/channel.h @@ -1442,6 +1442,15 @@ struct ast_variable *ast_channeltype_list(void); */ const char *ast_channel_reason2str(int reason); +/*! \brief channel group info + */ +struct ast_group_info { + struct ast_channel *chan; + char *category; + char *group; + AST_LIST_ENTRY(ast_group_info) list; +}; + #if defined(__cplusplus) || defined(c_plusplus) } diff --git a/include/asterisk/module.h b/include/asterisk/module.h index 4091045f8c..1b257ed157 100644 --- a/include/asterisk/module.h +++ b/include/asterisk/module.h @@ -370,6 +370,59 @@ static void __restore_globals(void) ) #endif +/*! + * \brief Register an application. + * + * \param app Short name of the application + * \param execute a function callback to execute the application. It should return + * non-zero if the channel needs to be hung up. + * \param synopsis a short description (one line synopsis) of the application + * \param description long description with all of the details about the use of + * the application + * + * This registers an application with Asterisk's internal application list. + * \note The individual applications themselves are responsible for registering and unregistering + * and unregistering their own CLI commands. + * + * \retval 0 success + * \retval -1 failure. + */ +#define ast_register_application(app, execute, synopsis, description) ast_register_application2(app, execute, synopsis, description, ast_module_info->self) + +/*! + * \brief Register an application. + * + * \param app Short name of the application + * \param execute a function callback to execute the application. It should return + * non-zero if the channel needs to be hung up. + * \param synopsis a short description (one line synopsis) of the application + * \param description long description with all of the details about the use of + * the application + * \param mod module this application belongs to + * + * This registers an application with Asterisk's internal application list. + * \note The individual applications themselves are responsible for registering and unregistering + * and unregistering their own CLI commands. + * + * \retval 0 success + * \retval -1 failure. + */ +int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, void *), + const char *synopsis, const char *description, void *mod); + +/*! + * \brief Unregister an application + * + * \param app name of the application (does not have to be the same string as the one that was registered) + * + * This unregisters an application from Asterisk's internal application list. + * + * \retval 0 success + * \retval -1 failure + */ +int ast_unregister_application(const char *app); + + #if defined(__cplusplus) || defined(c_plusplus) } #endif diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h index 3479d6f2b0..61617f5a26 100644 --- a/include/asterisk/pbx.h +++ b/include/asterisk/pbx.h @@ -24,8 +24,7 @@ #define _ASTERISK_PBX_H #include "asterisk/sched.h" -#include "asterisk/channel.h" -#include "asterisk/linkedlists.h" +#include "asterisk/chanvars.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -300,58 +299,6 @@ int ast_add_extension2(struct ast_context *con, int replace, const char *extensi const char *application, void *data, void (*datad)(void *), const char *registrar); -/*! - * \brief Register an application. - * - * \param app Short name of the application - * \param execute a function callback to execute the application. It should return - * non-zero if the channel needs to be hung up. - * \param synopsis a short description (one line synopsis) of the application - * \param description long description with all of the details about the use of - * the application - * - * This registers an application with Asterisk's internal application list. - * \note The individual applications themselves are responsible for registering and unregistering - * and unregistering their own CLI commands. - * - * \retval 0 success - * \retval -1 failure. - */ -#define ast_register_application(app, execute, synopsis, description) ast_register_application2(app, execute, synopsis, description, ast_module_info->self) - -/*! - * \brief Register an application. - * - * \param app Short name of the application - * \param execute a function callback to execute the application. It should return - * non-zero if the channel needs to be hung up. - * \param synopsis a short description (one line synopsis) of the application - * \param description long description with all of the details about the use of - * the application - * \param mod module this application belongs to - * - * This registers an application with Asterisk's internal application list. - * \note The individual applications themselves are responsible for registering and unregistering - * and unregistering their own CLI commands. - * - * \retval 0 success - * \retval -1 failure. - */ -int ast_register_application2(const char *app, int (*execute)(struct ast_channel *, void *), - const char *synopsis, const char *description, void *mod); - -/*! - * \brief Unregister an application - * - * \param app name of the application (does not have to be the same string as the one that was registered) - * - * This unregisters an application from Asterisk's internal application list. - * - * \retval 0 success - * \retval -1 failure - */ -int ast_unregister_application(const char *app); - /*! * \brief Uses hint and devicestate callback to get the state of an extension * diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c index 9ee6c02b49..0782e7a7b7 100644 --- a/pbx/pbx_config.c +++ b/pbx/pbx_config.c @@ -35,6 +35,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/module.h" #include "asterisk/logger.h" #include "asterisk/cli.h" +#include "asterisk/channel.h" /* AST_MAX_EXTENSION */ #include "asterisk/callerid.h" static char *config = "extensions.conf"; diff --git a/res/ael/pval.c b/res/ael/pval.c index 923a55148c..56794041d3 100644 --- a/res/ael/pval.c +++ b/res/ael/pval.c @@ -43,6 +43,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/logger.h" #include "asterisk/cli.h" #include "asterisk/app.h" +#include "asterisk/channel.h" #include "asterisk/callerid.h" #include "asterisk/pval.h" #include "asterisk/ael_structs.h"