Home | History | Annotate | Line # | Download | only in doc
      1 - Source extraction program for chew.
      2 -  Copyright (C) 1990-2024 Free Software Foundation, Inc.
      3 -  This file is part of BFD, the Binary File Descriptor library.
      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, write to the Free Software
     17 -  Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     18 
     19 - chew.c keywords defined here put output into bfd-in2.h and libbfd.h or
     20 - libcoff.h, from comments in the source.  See also doc.str.
     21 - Output lines generally come from comment lines starting with a dot,
     22 - or from keywords like SYNOPSIS.  Output switches to bfd-in2.h at the
     23 - end of each comment.  Use INTERNAL* to output to libbfd.h.
     24 -
     25 - EXTERNAL: output to bfd-in2.h, nothing to docs
     26 - INTERNAL: output to libbfd.h, nothing to docs
     27 - CODE_FRAGMENT: output to header and docs
     28 - FUNCTION: output to bfd-in2.h and docs
     29 - INTERNAL_FUNCTION: output to libbfd.h and docs
     30 - DEFINITION: alias for FUNCTION, but generally doesn't have SYNOPSIS,
     31 -	used for structs and other random code
     32 - INTERNAL_DEFINITION: as above, but output to libbfd.h and docs
     33 - ENUM* outputs to bfd-in2.h, libbfd.h and docs.
     34 
     35 : SYNOPSIS
     36 	skip_past_newline
     37 	get_stuff_in_command	
     38 	translatecomments
     39 	strip_trailing_newlines
     40 	remchar
     41 	" ATTRIBUTE_HIDDEN" internalmode @ catstrif
     42 	";\n\n" catstr
     43 	indent
     44 	maybecatstr
     45 ;
     46 
     47 - Ignore stuff that is for the docs.  Output lines starting with dots.
     48 : ignore
     49 	skip_past_newline 
     50 	get_stuff_in_command
     51 	outputdots
     52 	maybecatstr
     53 	;
     54 
     55 : CODE_FRAGMENT
     56 	ignore ;
     57 
     58 - Output goes to bfd-in2.h
     59 : EXTERNAL
     60 	0 internalmode ! ignore ;
     61 
     62 - Output goes to libbfd.h/libcoff.h
     63 : INTERNAL 
     64 	1 internalmode ! ignore ;
     65 
     66 - input stack { a b } output b if internal, a if external
     67 : ifinternal
     68 	"" swap 1 internalmode ! maybecatstr
     69 	swap
     70 	"" swap 0 internalmode ! maybecatstr
     71 	catstr
     72 	;
     73 
     74 - Put note in output string, regardless of internal mode.
     75 : COMMENT
     76 	skip_past_newline
     77 	get_stuff_in_command
     78 	translatecomments
     79 	catstr
     80 	;
     81 
     82 - SENUM    enum-type-name
     83 - ENUM     enum-name
     84 - ENUMX    addl-enum-name
     85 - ENUMDOC  doc for preceding enums
     86 - ENDSENUM max-enum-name
     87 
     88 : make_enum_header
     89 	dup
     90 	"enum " swap catstr
     91 	"\n{\n" catstr
     92 	swap "  _dummy_first_" swap catstr catstr
     93 	",\n" catstr
     94 	;
     95 : make_string_table_header
     96 	dup
     97 	"#ifdef _BFD_MAKE_TABLE_" swap catstr swap
     98 	"\n\nstatic const char *const " swap catstr catstr
     99 	"_names[] = { \"@@uninitialized@@\",\n" catstr
    100 	;
    101 : SENUM
    102 	skip_past_newline
    103 	copy_past_newline
    104 	remchar
    105 	dup
    106 	make_enum_header
    107 	swap
    108 	make_string_table_header
    109 	ifinternal
    110 	catstr
    111 	get_stuff_in_command catstr
    112 	translatecomments ;
    113 : ENDSENUM
    114 	skip_past_newline
    115 	copy_past_newline strip_trailing_newlines
    116 	dup
    117 	"  " swap catstr "\n};\n" catstr swap
    118 	" \"@@overflow: " swap catstr "@@\",\n};\n#endif\n\n" catstr
    119 	ifinternal
    120 	catstr
    121 	;
    122 : make_enumerator
    123 	"  " swap catstr
    124 	",\n" catstr
    125 	;
    126 : make_enumerator_string
    127 	"  \"" swap catstr
    128 	"\",\n" catstr
    129 	;
    130 : ENUM
    131 	skip_past_newline
    132 	copy_past_newline
    133 	remchar
    134 	dup
    135 	make_enumerator
    136 	swap
    137 	make_enumerator_string
    138 	ifinternal
    139 	;
    140 : ENUMX ENUM catstr ;
    141 : ENUMEQ
    142 	skip_past_newline
    143 	"#define "
    144 	copy_past_newline remchar
    145 	catstr
    146 	" "
    147 	catstr
    148 	copy_past_newline
    149 	catstr
    150 	"" swap 0 internalmode ! maybecatstr
    151 	;
    152 : ENUMEQX ENUMEQ catstr ;
    153 : ENUMDOC
    154 	skip_past_newline
    155 	get_stuff_in_command
    156 	strip_trailing_newlines
    157 	"  " wrap_comment
    158 	"\n" swap catstr "\n" catstr
    159 	- discard it if we're doing internal mode
    160 	"" swap 0 internalmode ! maybecatstr
    161 	swap
    162 	catstr catstr
    163 	;
    164 : SECTION ignore ;
    165 : SUBSECTION ignore ;
    166 : SUBSUBSECTION ignore ;
    167 : INODE ignore ;
    168 : DESCRIPTION ignore ;
    169 : DOCDD ignore ;
    170 : ENDDD EXTERNAL ;
    171 : FUNCTION EXTERNAL ;
    172 : INTERNAL_FUNCTION INTERNAL ;
    173 : DEFINITION EXTERNAL ;
    174 : INTERNAL_DEFINITION INTERNAL ;
    175