1 /* xgettext C/C++/ObjectiveC backend.
2 Copyright (C) 2001-2003, 2006, 2009, 2014-2015, 2018, 2020, 2023 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, &formatstring_cplusplus_brace }, \
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