| - Source extraction program for chew. |
| - Copyright (C) 1990-2023 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. |
| |
| : SYNOPSIS |
| skip_past_newline |
| get_stuff_in_command |
| indent |
| maybecatstr |
| ; |
| |
| : ignore |
| skip_past_newline |
| get_stuff_in_command |
| outputdots |
| maybecatstr |
| ; |
| |
| : CODE_FRAGMENT |
| ignore ; |
| |
| : external |
| 0 internalmode ! ignore ; |
| |
| : 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" 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" 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 |
| "\n{* " swap catstr " *}\n" catstr |
| translatecomments |
| - discard it if we're doing internal mode |
| "" swap 0 internalmode ! maybecatstr |
| swap |
| catstr catstr |
| ; |
| : ENDDD external ; |
| : SECTION ignore ; |
| : SUBSECTION ignore ; |
| : SUBSUBSECTION ignore ; |
| : INTERNAL_DEFINITION internal ; |
| : DESCRIPTION ignore ; |
| : FUNCTION external ; |
| : TYPEDEF external ; |
| : INTERNAL_FUNCTION internal ; |
| : INTERNAL internal ; |
| : INODE ignore ; |