1 /* xgettext C/C++/ObjectiveC backend. 2 Copyright (C) 2001-2003, 2006, 2009, 2014-2015, 2018, 2020 Free Software Foundation, Inc. 3 Written by Bruno Haible <haible@clisp.cons.org>, 2001. 4 5 This program is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 17 18 19 #include <stdio.h> 20 21 #include "message.h" 22 #include "xg-arglist-context.h" 23 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 30 #define EXTENSIONS_C \ 31 { "c", "C" }, \ 32 { "h", "C" }, \ 33 { "C", "C++" }, \ 34 { "c++", "C++" }, \ 35 { "cc", "C++" }, \ 36 { "cxx", "C++" }, \ 37 { "cpp", "C++" }, \ 38 { "hh", "C++" }, \ 39 { "hxx", "C++" }, \ 40 { "hpp", "C++" }, \ 41 { "m", "ObjectiveC" }, \ 42 43 #define SCANNERS_C \ 44 { "C", extract_c, NULL, \ 45 &flag_table_c, \ 46 &formatstring_c, NULL }, \ 47 { "C++", extract_cxx, NULL, \ 48 &flag_table_c, \ 49 &formatstring_c, NULL }, \ 50 { "ObjectiveC", extract_objc, NULL, \ 51 &flag_table_objc, \ 52 &formatstring_c, &formatstring_objc }, \ 53 { "GCC-source", extract_c, NULL, \ 54 &flag_table_gcc_internal, \ 55 &formatstring_gcc_internal, &formatstring_gfc_internal }, \ 56 57 /* Scan a C file and add its translatable strings to mdlp. */ 58 extern void extract_c (FILE *fp, const char *real_filename, 59 const char *logical_filename, 60 flag_context_list_table_ty *flag_table, 61 msgdomain_list_ty *mdlp); 62 /* Scan a C++ file and add its translatable strings to mdlp. */ 63 extern void extract_cxx (FILE *fp, const char *real_filename, 64 const char *logical_filename, 65 flag_context_list_table_ty *flag_table, 66 msgdomain_list_ty *mdlp); 67 /* Scan an ObjectiveC file and add its translatable strings to mdlp. */ 68 extern void extract_objc (FILE *fp, const char *real_filename, 69 const char *logical_filename, 70 flag_context_list_table_ty *flag_table, 71 msgdomain_list_ty *mdlp); 72 73 74 /* Handling of options specific to this language. */ 75 76 extern void x_c_extract_all (void); 77 78 extern void x_c_keyword (const char *name); 79 extern void x_objc_keyword (const char *name); 80 81 extern void x_c_trigraphs (void); 82 83 extern void activate_additional_keywords_kde (void); 84 85 extern void init_flag_table_c (void); 86 extern void init_flag_table_objc (void); 87 extern void init_flag_table_gcc_internal (void); 88 extern void init_flag_table_kde (void); 89 90 91 #ifdef __cplusplus 92 } 93 #endif 94