- Source extraction program for chew. - Copyright (C) 1990-2024 Free Software Foundation, Inc. - This file is part of BFD, the Binary File Descriptor library. - 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, write to the Free Software - Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. - chew.c keywords defined here put output into bfd-in2.h and libbfd.h or - libcoff.h, from comments in the source. See also doc.str. - Output lines generally come from comment lines starting with a dot, - or from keywords like SYNOPSIS. Output switches to bfd-in2.h at the - end of each comment. Use INTERNAL* to output to libbfd.h. - - EXTERNAL: output to bfd-in2.h, nothing to docs - INTERNAL: output to libbfd.h, nothing to docs - CODE_FRAGMENT: output to header and docs - FUNCTION: output to bfd-in2.h and docs - INTERNAL_FUNCTION: output to libbfd.h and docs - DEFINITION: alias for FUNCTION, but generally doesn't have SYNOPSIS, - used for structs and other random code - INTERNAL_DEFINITION: as above, but output to libbfd.h and docs - ENUM* outputs to bfd-in2.h, libbfd.h and docs. : SYNOPSIS skip_past_newline get_stuff_in_command translatecomments strip_trailing_newlines remchar " ATTRIBUTE_HIDDEN" internalmode @ catstrif ";\n\n" catstr indent maybecatstr ; - Ignore stuff that is for the docs. Output lines starting with dots. : ignore skip_past_newline get_stuff_in_command outputdots maybecatstr ; : CODE_FRAGMENT ignore ; - Output goes to bfd-in2.h : EXTERNAL 0 internalmode ! ignore ; - Output goes to libbfd.h/libcoff.h : INTERNAL 1 internalmode ! ignore ; - input stack { a b } output b if internal, a if external : ifinternal "" swap 1 internalmode ! maybecatstr swap "" swap 0 internalmode ! maybecatstr catstr ; - Put note in output string, regardless of internal mode. : COMMENT skip_past_newline get_stuff_in_command translatecomments catstr ; - SENUM enum-type-name - ENUM enum-name - ENUMX addl-enum-name - ENUMDOC doc for preceding enums - ENDSENUM max-enum-name : make_enum_header dup "enum " swap catstr "\n{\n" catstr swap " _dummy_first_" swap catstr catstr ",\n" catstr ; : make_string_table_header dup "#ifdef _BFD_MAKE_TABLE_" swap catstr swap "\n\nstatic const char *const " swap catstr catstr "_names[] = { \"@@uninitialized@@\",\n" catstr ; : SENUM skip_past_newline copy_past_newline remchar dup make_enum_header swap make_string_table_header ifinternal catstr get_stuff_in_command catstr translatecomments ; : ENDSENUM skip_past_newline copy_past_newline strip_trailing_newlines dup " " swap catstr "\n};\n" catstr swap " \"@@overflow: " swap catstr "@@\",\n};\n#endif\n\n" catstr ifinternal catstr ; : make_enumerator " " swap catstr ",\n" catstr ; : make_enumerator_string " \"" swap catstr "\",\n" catstr ; : ENUM skip_past_newline copy_past_newline remchar dup make_enumerator swap make_enumerator_string ifinternal ; : ENUMX ENUM catstr ; : ENUMEQ skip_past_newline "#define " copy_past_newline remchar catstr " " catstr copy_past_newline catstr "" swap 0 internalmode ! maybecatstr ; : ENUMEQX ENUMEQ catstr ; : ENUMDOC skip_past_newline get_stuff_in_command strip_trailing_newlines " " wrap_comment "\n" swap catstr "\n" catstr - discard it if we're doing internal mode "" swap 0 internalmode ! maybecatstr swap catstr catstr ; : SECTION ignore ; : SUBSECTION ignore ; : SUBSUBSECTION ignore ; : INODE ignore ; : DESCRIPTION ignore ; : ENDDD EXTERNAL ; : FUNCTION EXTERNAL ; : INTERNAL_FUNCTION INTERNAL ; : DEFINITION EXTERNAL ; : INTERNAL_DEFINITION INTERNAL ;