⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.h

📁 Asterisk-1.4.4最新内核源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*! 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);/*! Set the group for a channel, splitting the provided data into group and category, if specified. */int ast_app_group_set_channel(struct ast_channel *chan, const char *data);/*! Get the current channel count of the specified group and category. */int ast_app_group_get_count(const char *group, const char *category);/*! Get the current channel count of all groups that match the specified pattern and category. */int ast_app_group_match_get_count(const char *groupmatch, const char *category);/*! Discard all group counting for a channel */int ast_app_group_discard(struct ast_channel *chan);/*! Lock the group count list */int ast_app_group_list_lock(void);/*! Get the head of the group count list */struct ast_group_info *ast_app_group_list_head(void);/*! Unlock the group count list */int ast_app_group_list_unlock(void);/*!  \brief Define an application argument  \param name The name of the argument*/#define AST_APP_ARG(name) char *name/*!  \brief Declare a structure to hold the application's arguments.  \param name The name of the structure  \param arglist The list of arguments, defined using AST_APP_ARG  This macro defines a structure intended to be used in a call  to ast_app_separate_args(). The structure includes all the  arguments specified, plus an argv array that overlays them and an  argc argument counter. The arguments must be declared using AST_APP_ARG,  and they will all be character pointers (strings).  \note The structure is <b>not</b> initialized, as the call to  ast_app_separate_args() will perform that function before parsing  the arguments. */#define AST_DECLARE_APP_ARGS(name, arglist) \	struct { \		unsigned int argc; \		char *argv[0]; \		arglist \	} name/*!  \brief Performs the 'standard' argument separation process for an application.  \param args An argument structure defined using AST_DECLARE_APP_ARGS  \param parse A modifiable buffer containing the input to be parsed  This function will separate the input string using the standard argument  separator character '|' and fill in the provided structure, including  the argc argument counter field. */#define AST_STANDARD_APP_ARGS(args, parse) \	args.argc = ast_app_separate_args(parse, '|', args.argv, (sizeof(args) - sizeof(args.argc)) / sizeof(args.argv[0]))	/*!  \brief Performs the 'nonstandard' argument separation process for an application.  \param args An argument structure defined using AST_DECLARE_APP_ARGS  \param parse A modifiable buffer containing the input to be parsed  \param sep A nonstandard separator character  This function will separate the input string using the nonstandard argument  separator character and fill in the provided structure, including  the argc argument counter field. */#define AST_NONSTANDARD_APP_ARGS(args, parse, sep) \	args.argc = ast_app_separate_args(parse, sep, args.argv, (sizeof(args) - sizeof(args.argc)) / sizeof(args.argv[0]))	/*!  \brief Separate a string into arguments in an array  \param buf The string to be parsed (this must be a writable copy, as it will be modified)  \param delim The character to be used to delimit arguments  \param array An array of 'char *' to be filled in with pointers to the found arguments  \param arraylen The number of elements in the array (i.e. the number of arguments you will accept)  Note: if there are more arguments in the string than the array will hold, the last element of  the array will contain the remaining arguments, not separated.  The array will be completely zeroed by this function before it populates any entries.  \return The number of arguments found, or zero if the function arguments are not valid.*/unsigned int ast_app_separate_args(char *buf, char delim, char **array, int arraylen);/*!  \brief A structure to hold the description of an application 'option'.  Application 'options' are single-character flags that can be supplied  to the application to affect its behavior; they can also optionally  accept arguments enclosed in parenthesis.  These structures are used by the ast_app_parse_options function, uses  this data to fill in a flags structure (to indicate which options were  supplied) and array of argument pointers (for those options that had  arguments supplied). */struct ast_app_option {	/*! \brief The flag bit that represents this option. */	unsigned int flag;	/*! \brief The index of the entry in the arguments array	  that should be used for this option's argument. */	unsigned int arg_index;};#define BEGIN_OPTIONS {#define END_OPTIONS }/*!  \brief Declares an array of options for an application.  \param holder The name of the array to be created  \param options The actual options to be placed into the array  \sa ast_app_parse_options  This macro declares a 'static const' array of \c struct \c ast_option  elements to hold the list of available options for an application.  Each option must be declared using either the AST_APP_OPTION()  or AST_APP_OPTION_ARG() macros.  Example usage:  \code  enum {        OPT_JUMP = (1 << 0),        OPT_BLAH = (1 << 1),        OPT_BLORT = (1 << 2),  } my_app_option_flags;  enum {        OPT_ARG_BLAH = 0,        OPT_ARG_BLORT,        !! this entry tells how many possible arguments there are,           and must be the last entry in the list        OPT_ARG_ARRAY_SIZE,  } my_app_option_args;  AST_APP_OPTIONS(my_app_options, {        AST_APP_OPTION('j', OPT_JUMP),        AST_APP_OPTION_ARG('b', OPT_BLAH, OPT_ARG_BLAH),        AST_APP_OPTION_BLORT('B', OPT_BLORT, OPT_ARG_BLORT),  });  static int my_app_exec(struct ast_channel *chan, void *data)  {  	char *options;	struct ast_flags opts = { 0, };	char *opt_args[OPT_ARG_ARRAY_SIZE];  	... do any argument parsing here ...	if (ast_parseoptions(my_app_options, &opts, opt_args, options)) {		LOCAL_USER_REMOVE(u);		return -1;	}  }  \endcode */#define AST_APP_OPTIONS(holder, options...) \	static const struct ast_app_option holder[128] = options/*!  \brief Declares an application option that does not accept an argument.  \param option The single character representing the option  \param flagno The flag index to be set if this option is present  \sa AST_APP_OPTIONS, ast_app_parse_options */#define AST_APP_OPTION(option, flagno) \	[option] = { .flag = flagno }/*!  \brief Declares an application option that accepts an argument.  \param option The single character representing the option  \param flagno The flag index to be set if this option is present  \param argno The index into the argument array where the argument should  be placed  \sa AST_APP_OPTIONS, ast_app_parse_options */#define AST_APP_OPTION_ARG(option, flagno, argno) \	[option] = { .flag = flagno, .arg_index = argno + 1 }/*!  \brief Parses a string containing application options and sets flags/arguments.  \param options The array of possible options declared with AST_APP_OPTIONS  \param flags The flag structure to have option flags set  \param args The array of argument pointers to hold arguments found  \param optstr The string containing the options to be parsed  \return zero for success, non-zero if an error occurs  \sa AST_APP_OPTIONS */int ast_app_parse_options(const struct ast_app_option *options, struct ast_flags *flags, char **args, char *optstr);/*! \brief Present a dialtone and collect a certain length extension.     \return Returns 1 on valid extension entered, -1 on hangup, or 0 on invalid extension. \note Note that if 'collect' holds digits already, new digits will be appended, so be sure it's initialized properly */int ast_app_dtget(struct ast_channel *chan, const char *context, char *collect, size_t size, int maxlen, int timeout);/*! Allow to record message and have a review option */int ast_record_review(struct ast_channel *chan, const char *playfile, const char *recordfile, int maxtime, const char *fmt, int *duration, const char *path);#if defined(__cplusplus) || defined(c_plusplus)}#endif#endif /* _ASTERISK_APP_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -