summaryrefslogtreecommitdiff
path: root/bfd/doc/proto.str
blob: 8431c16bd57f82cd5025a33dc01b5d17886b537f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

: SYNOPSIS
	skip_past_newline
	get_stuff_in_command	
	paramstuff
	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 ;
: RETURNS ignore ;
: TYPEDEF external ;
: INTERNAL_FUNCTION internal ;
: INTERNAL internal ;
: INODE ignore ;