summaryrefslogtreecommitdiff
path: root/text.m4
blob: a6d7001fca15531581dcf4650301c38e02efc35f (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
136
137
138
139
140
141
142
143
144
145
divert(-1)
changecom()
define(`CHARACTER_CLASS', $1)
define(`CONCEPT', $2)
define(`CONCEPT_DEFINITION', $2)
define(`FLAG', $1 -- $2)
define(`__', $1)
define(`THIS', THISNAME)
define(`MATH', $1)
define(`PI', pi)
define(`POW', $1^$2)
define(`SQRT', square root of $1)
define(`FLOOR', floor($1))
define(`CEIL', ceil($1))
define(`ABS', |$1|)
define(`VAR', 1)

define(`ARGUMENT', $1)
define(`CHAR', $1)
define(`CAST', ($1)($2))
define(`CONSTANT', $1)
define(`COMMENT', /* $1 */)
define(`DEFINITION', $1)
define(`LITERAL', $1)
define(`OPERATOR', $1)
define(`FUNCTION', $1())
define(`HEADER', $1)
define(`LT', <)
define(`GT', >)
define(`IDENTIFIER', $1)
define(`SPACE', space)
define(`TYPE', $1)
define(`TYPEDEF', $1)
define(`STRUCTDEF', struct $1)
define(`MEMBER', $1)

ifelse(`THISTYPE', `function', `define(`DESC_INTRO', 1)')
ifelse(`THISTYPE', `macro', `define(`DESC_INTRO', 1)')
ifelse(`THISTYPE', `tgfunction', define(`DESC_INTRO', 1)define(`PRETTYTYPE', `family of functions'), define(`PRETTYTYPE', `THISTYPE()'))

define(`PROTOTYPE', $1)

ifdef(`VALUE_MIN', `define(`VALUE', `THIS() must be at least VALUE_MIN().')')
ifdef(`VALUE_MAX', `define(`VALUE', `THIS() must be at most VALUE_MAX().')')
ifdef(`VALUE_FIXED', `define(`VALUE', `THIS() is defined as VALUE_FIXED().')')

define(`VALUE_SELECT', LITERAL($1) -- $2)
ifdef(`VALUES', `
	define(`VALUE', `ifdef(`VALUES', `VALUES() popdef(`VALUES') VALUE()')')
	define(`VALUE_PRE', `THIS() may be defined with one of the following values with the indicated meaning:')
')


define(`RETURN', $1 -- $2)
define(`RETURN_SUCCESS', A successfull call returns $1.)
define(`RETURN_FAILURE', `On failure, $1 is returned.')
define(`RETURN_ALWAYS', `The THIS() PRETTYTYPE() returns $1.')
define(`RETURN_0', `The THIS() function returns 0 on success, non-zero on failure.')
ifdef(`RETURNS',
	`define(`RETURN_LIST')
	define(`RETURN_VALUE',
		ifdef(`RETURNS', `RETURNS()popdef(`RETURNS')ifdef(`RETURNS', `RETURNS()')')
	')
)
define(`NOVALUE', `The THIS() PRETTYTYPE() does not return a value.')
define(`NORETURN', `The THIS() PRETTYTYPE() does not return.')
define(`NEGATIVE', a negative value)
define(`POSITIVE', a positive value)
define(`NONNEGATIVE', a non-negative value)
define(`NONZERO', a non-zero value)
define(`ZERO', 0)
define(`NONNULL', a non-NULL pointer)

define(`UNDEFINED', $1)
define(`ASSERT_REPRESENTABLE', $1 is not representable as a $4 or the value $5)
define(`ASSERT_NONZERO', ARGUMENT($1) is LITERAL(0))
define(`ASSERT_NONNULL', ARGUMENT($1) is CONSTANT(NULL))
define(`ASSERT_NOOVERLAP', ARGUMENT($1) and ARGUMENT($2) overlap)
ifdef(`UNDEFINEDS', `
	define(`UNDEFINED_BEHAVIOR', `ifdef(`UNDEFINEDS', `UNDEFINEDS() popdef(`UNDEFINEDS') UNDEFINED_BEHAVIOR()')')
')

define(`UNSPECIFIED', $1)
ifdef(`UNSPECIFIEDS', `
	define(`UNSPECIFIED_BEHAVIOR', `ifdef(`UNSPECIFIEDS', `UNSPECIFIEDS() popdef(`UNSPECIFIEDS') UNSPECIFIED_BEHAVIOR()')')
')

define(`IMPLEMENTATION', $1)
ifdef(`IMPLEMENTATIONS', `
	define(`IMPLEMENTATION_DEFINED', `ifdef(`IMPLEMENTATIONS', `IMPLEMENTATIONS() popdef(`IMPLEMENTATIONS') IMPLEMENTATION_DEFINED()')')
')


define(`LOCALE', "$1")

divert(0)dnl
THISNAME() - BRIEF()

Synopsis
ifdef(`INCLUDES', `INCLUDES()
')SIGNATURE()

Description
ifdef(`DESC_INTRO', `The THIS() PRETTYTYPE() ')DESCRIPTION()
ifdef(`LC_CATEGORIES',
	`Locale Specific Behavior
	The behavior of THIS() may differ based on the current value of
	LC_CATEGORIES().
	ifdef(`C_LOCALE', `In the LOCALE(`C') locale, C_LOCALE().')dnl
	ifdef(`OTHER_LOCALES', `In locales other than LOCALE(`C'), OTHER_LOCALES().')dnl
	')dnl
ifdef(`IMPLEMENTATION_DEFINED',
	`Implementation Defined Behavior
	IMPLEMENTATION_DEFINED()
	')dnl
ifdef(`UNSPECIFIED_BEHAVIOR',
	`Unspecified Behavior
	UNSPECIFIED_BEHAVIOR()')dnl
ifdef(`UNDEFINED_BEHAVIOR',
	`Undefined Behavior
	UNDEFINED_BEHAVIOR()')dnl

ifdef(`VALUE',
`Value
ifdef(`VALUE_PRE', `VALUE_PRE()')
VALUE()
')

ifdef(`RETURN_VALUE',
`Return Value
ifdef(`RETURNS', `The THIS() PRETTYTYPE() returns one of the following values:')
RETURN_VALUE()
ifdef(`RETURN_LIST', `')
ifdef(`ERRORS',
	`Errors
	On failure, IDENTIFIER(errno) maye be set to one of the following
	values to detail the cause of failure:
	ERRORS()')
')

Conformance
ISO/IEC 9899:1990	C90()
ISO/IEC 9899:1999	C99()
ISO/IEC 9899:2011	C11()