/* Resolving ambiguity of argument lists: Information given through command-line options. Copyright (C) 2001-2018, 2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef _XGETTEXT_ARGLIST_CALLSHAPE_H #define _XGETTEXT_ARGLIST_CALLSHAPE_H #include #include #include "str-list.h" #include "mem-hash-map.h" #ifdef __cplusplus extern "C" { #endif /* Calling convention for a given keyword. */ struct callshape { int argnum1; /* argument number to use for msgid */ int argnum2; /* argument number to use for msgid_plural */ int argnumc; /* argument number to use for msgctxt */ bool argnum1_glib_context; /* argument argnum1 has the syntax "ctxt|msgid" */ bool argnum2_glib_context; /* argument argnum2 has the syntax "ctxt|msgid" */ int argtotal; /* total number of arguments */ string_list_ty xcomments; /* auto-extracted comments */ }; /* Split keyword spec into keyword, argnum1, argnum2, argnumc. */ extern void split_keywordspec (const char *spec, const char **endp, struct callshape *shapep); /* Set of alternative calling conventions for a given keyword. */ struct callshapes { const char *keyword; /* the keyword, not NUL terminated */ size_t keyword_len; /* the keyword's length */ size_t nshapes; struct callshape shapes[1]; /* actually nshapes elements */ }; /* Insert a (keyword, callshape) pair into a hash table mapping keyword to 'struct callshapes *'. */ extern void insert_keyword_callshape (hash_table *table, const char *keyword, size_t keyword_len, const struct callshape *shape); #ifdef __cplusplus } #endif #endif /* _XGETTEXT_ARGLIST_CALLSHAPE_H */