bcdb65d98a819b5ecb7d399f59752180c049bdaf
[haskell-report.git] / report / libs / Foreign-C-Types.tex
1 \haddockmoduleheading{Foreign.C.Types}
2 \label{module:Foreign.C.Types}
3 \haddockbeginheader
4 {\haddockverb\begin{verbatim}
5 module Foreign.C.Types (
6 CChar, CSChar, CUChar, CShort, CUShort, CInt, CUInt, CLong, CULong,
7 CPtrdiff, CSize, CWchar, CSigAtomic, CLLong, CULLong, CIntPtr,
8 CUIntPtr, CIntMax, CUIntMax, CClock, CTime, CFloat, CDouble, CFile,
9 CFpos, CJmpBuf
10 ) where\end{verbatim}}
11 \haddockendheader
12
13 \section{Representations of C types
14 }
15 These types are needed to accurately represent C function prototypes,
16 in order to access C library interfaces in Haskell. The Haskell system
17 is not required to represent those types exactly as C does, but the
18 following guarantees are provided concerning a Haskell type \haddocktt{CT}
19 representing a C type \haddocktt{t}:
20 \par
21 \begin{itemize}
22 \item
23 If a C function prototype has \haddocktt{t} as an argument or result type, the
24 use of \haddocktt{CT} in the corresponding position in a foreign declaration
25 permits the Haskell program to access the full range of values encoded
26 by the C type; and conversely, any Haskell value for \haddocktt{CT} has a valid
27 representation in C.
28 \par
29
30 \item
31 \haddocktt{\haddocktt{sizeOf}\ (undefined\ ::\ CT)} will yield the same value as
32 \haddocktt{sizeof\ (t)} in C.
33 \par
34
35 \item
36 \haddocktt{\haddocktt{alignment}\ (undefined\ ::\ CT)} matches the alignment
37 constraint enforced by the C implementation for \haddocktt{t}.
38 \par
39
40 \item
41 The members \haddocktt{peek} and \haddocktt{poke} of the \haddocktt{Storable} class map all values
42 of \haddocktt{CT} to the corresponding value of \haddocktt{t} and vice versa.
43 \par
44
45 \item
46 When an instance of \haddockid{Bounded} is defined for \haddocktt{CT}, the values
47 of \haddockid{minBound} and \haddockid{maxBound} coincide with \haddocktt{t{\char '137}MIN}
48 and \haddocktt{t{\char '137}MAX} in C.
49 \par
50
51 \item
52 When an instance of \haddockid{Eq} or \haddockid{Ord} is defined for \haddocktt{CT},
53 the predicates defined by the type class implement the same relation
54 as the corresponding predicate in C on \haddocktt{t}.
55 \par
56
57 \item
58 When an instance of \haddockid{Num}, \haddockid{Read}, \haddockid{Integral},
59 \haddockid{Fractional}, \haddockid{Floating}, \haddockid{RealFrac}, or
60 \haddockid{RealFloat} is defined for \haddocktt{CT}, the arithmetic operations
61 defined by the type class implement the same function as the
62 corresponding arithmetic operations (if available) in C on \haddocktt{t}.
63 \par
64
65 \item
66 When an instance of \haddocktt{Bits} is defined for \haddocktt{CT}, the bitwise operation
67 defined by the type class implement the same function as the
68 corresponding bitwise operation in C on \haddocktt{t}.
69 \par
70
71 \end{itemize}
72
73 \subsection{Integral types
74 }
75 These types are are represented as \haddocktt{newtype}s of
76 types in \haddocktt{Data.Int} and \haddocktt{Data.Word}, and are instances of
77 \haddockid{Eq}, \haddockid{Ord}, \haddockid{Num}, \haddockid{Read},
78 \haddockid{Show}, \haddockid{Enum}, \haddocktt{Storable},
79 \haddockid{Bounded}, \haddockid{Real}, \haddockid{Integral} and
80 \haddocktt{Bits}.
81 \par
82
83 \begin{haddockdesc}
84 \item[\begin{tabular}{@{}l}
85 data\ CChar
86 \end{tabular}]\haddockbegindoc
87 Haskell type representing the C \haddocktt{char} type.
88 \par
89
90 \end{haddockdesc}
91 \begin{haddockdesc}
92 \item[\begin{tabular}{@{}l}
93 instance\ Bounded\ CChar\\instance\ Enum\ CChar\\instance\ Eq\ CChar\\instance\ Integral\ CChar\\instance\ Num\ CChar\\instance\ Ord\ CChar\\instance\ Read\ CChar\\instance\ Real\ CChar\\instance\ Show\ CChar\\instance\ Typeable\ CChar\\instance\ Storable\ CChar\\instance\ Bits\ CChar
94 \end{tabular}]
95 \end{haddockdesc}
96 \begin{haddockdesc}
97 \item[\begin{tabular}{@{}l}
98 data\ CSChar
99 \end{tabular}]\haddockbegindoc
100 Haskell type representing the C \haddocktt{signed\ char} type.
101 \par
102
103 \end{haddockdesc}
104 \begin{haddockdesc}
105 \item[\begin{tabular}{@{}l}
106 instance\ Bounded\ CSChar\\instance\ Enum\ CSChar\\instance\ Eq\ CSChar\\instance\ Integral\ CSChar\\instance\ Num\ CSChar\\instance\ Ord\ CSChar\\instance\ Read\ CSChar\\instance\ Real\ CSChar\\instance\ Show\ CSChar\\instance\ Typeable\ CSChar\\instance\ Storable\ CSChar\\instance\ Bits\ CSChar
107 \end{tabular}]
108 \end{haddockdesc}
109 \begin{haddockdesc}
110 \item[\begin{tabular}{@{}l}
111 data\ CUChar
112 \end{tabular}]\haddockbegindoc
113 Haskell type representing the C \haddocktt{unsigned\ char} type.
114 \par
115
116 \end{haddockdesc}
117 \begin{haddockdesc}
118 \item[\begin{tabular}{@{}l}
119 instance\ Bounded\ CUChar\\instance\ Enum\ CUChar\\instance\ Eq\ CUChar\\instance\ Integral\ CUChar\\instance\ Num\ CUChar\\instance\ Ord\ CUChar\\instance\ Read\ CUChar\\instance\ Real\ CUChar\\instance\ Show\ CUChar\\instance\ Typeable\ CUChar\\instance\ Storable\ CUChar\\instance\ Bits\ CUChar
120 \end{tabular}]
121 \end{haddockdesc}
122 \begin{haddockdesc}
123 \item[\begin{tabular}{@{}l}
124 data\ CShort
125 \end{tabular}]\haddockbegindoc
126 Haskell type representing the C \haddocktt{short} type.
127 \par
128
129 \end{haddockdesc}
130 \begin{haddockdesc}
131 \item[\begin{tabular}{@{}l}
132 instance\ Bounded\ CShort\\instance\ Enum\ CShort\\instance\ Eq\ CShort\\instance\ Integral\ CShort\\instance\ Num\ CShort\\instance\ Ord\ CShort\\instance\ Read\ CShort\\instance\ Real\ CShort\\instance\ Show\ CShort\\instance\ Typeable\ CShort\\instance\ Storable\ CShort\\instance\ Bits\ CShort
133 \end{tabular}]
134 \end{haddockdesc}
135 \begin{haddockdesc}
136 \item[\begin{tabular}{@{}l}
137 data\ CUShort
138 \end{tabular}]\haddockbegindoc
139 Haskell type representing the C \haddocktt{unsigned\ short} type.
140 \par
141
142 \end{haddockdesc}
143 \begin{haddockdesc}
144 \item[\begin{tabular}{@{}l}
145 instance\ Bounded\ CUShort\\instance\ Enum\ CUShort\\instance\ Eq\ CUShort\\instance\ Integral\ CUShort\\instance\ Num\ CUShort\\instance\ Ord\ CUShort\\instance\ Read\ CUShort\\instance\ Real\ CUShort\\instance\ Show\ CUShort\\instance\ Typeable\ CUShort\\instance\ Storable\ CUShort\\instance\ Bits\ CUShort
146 \end{tabular}]
147 \end{haddockdesc}
148 \begin{haddockdesc}
149 \item[\begin{tabular}{@{}l}
150 data\ CInt
151 \end{tabular}]\haddockbegindoc
152 Haskell type representing the C \haddocktt{int} type.
153 \par
154
155 \end{haddockdesc}
156 \begin{haddockdesc}
157 \item[\begin{tabular}{@{}l}
158 instance\ Bounded\ CInt\\instance\ Enum\ CInt\\instance\ Eq\ CInt\\instance\ Integral\ CInt\\instance\ Num\ CInt\\instance\ Ord\ CInt\\instance\ Read\ CInt\\instance\ Real\ CInt\\instance\ Show\ CInt\\instance\ Typeable\ CInt\\instance\ Storable\ CInt\\instance\ Bits\ CInt
159 \end{tabular}]
160 \end{haddockdesc}
161 \begin{haddockdesc}
162 \item[\begin{tabular}{@{}l}
163 data\ CUInt
164 \end{tabular}]\haddockbegindoc
165 Haskell type representing the C \haddocktt{unsigned\ int} type.
166 \par
167
168 \end{haddockdesc}
169 \begin{haddockdesc}
170 \item[\begin{tabular}{@{}l}
171 instance\ Bounded\ CUInt\\instance\ Enum\ CUInt\\instance\ Eq\ CUInt\\instance\ Integral\ CUInt\\instance\ Num\ CUInt\\instance\ Ord\ CUInt\\instance\ Read\ CUInt\\instance\ Real\ CUInt\\instance\ Show\ CUInt\\instance\ Typeable\ CUInt\\instance\ Storable\ CUInt\\instance\ Bits\ CUInt
172 \end{tabular}]
173 \end{haddockdesc}
174 \begin{haddockdesc}
175 \item[\begin{tabular}{@{}l}
176 data\ CLong
177 \end{tabular}]\haddockbegindoc
178 Haskell type representing the C \haddocktt{long} type.
179 \par
180
181 \end{haddockdesc}
182 \begin{haddockdesc}
183 \item[\begin{tabular}{@{}l}
184 instance\ Bounded\ CLong\\instance\ Enum\ CLong\\instance\ Eq\ CLong\\instance\ Integral\ CLong\\instance\ Num\ CLong\\instance\ Ord\ CLong\\instance\ Read\ CLong\\instance\ Real\ CLong\\instance\ Show\ CLong\\instance\ Typeable\ CLong\\instance\ Storable\ CLong\\instance\ Bits\ CLong
185 \end{tabular}]
186 \end{haddockdesc}
187 \begin{haddockdesc}
188 \item[\begin{tabular}{@{}l}
189 data\ CULong
190 \end{tabular}]\haddockbegindoc
191 Haskell type representing the C \haddocktt{unsigned\ long} type.
192 \par
193
194 \end{haddockdesc}
195 \begin{haddockdesc}
196 \item[\begin{tabular}{@{}l}
197 instance\ Bounded\ CULong\\instance\ Enum\ CULong\\instance\ Eq\ CULong\\instance\ Integral\ CULong\\instance\ Num\ CULong\\instance\ Ord\ CULong\\instance\ Read\ CULong\\instance\ Real\ CULong\\instance\ Show\ CULong\\instance\ Typeable\ CULong\\instance\ Storable\ CULong\\instance\ Bits\ CULong
198 \end{tabular}]
199 \end{haddockdesc}
200 \begin{haddockdesc}
201 \item[\begin{tabular}{@{}l}
202 data\ CPtrdiff
203 \end{tabular}]\haddockbegindoc
204 Haskell type representing the C \haddocktt{ptrdiff{\char '137}t} type.
205 \par
206
207 \end{haddockdesc}
208 \begin{haddockdesc}
209 \item[\begin{tabular}{@{}l}
210 instance\ Bounded\ CPtrdiff\\instance\ Enum\ CPtrdiff\\instance\ Eq\ CPtrdiff\\instance\ Integral\ CPtrdiff\\instance\ Num\ CPtrdiff\\instance\ Ord\ CPtrdiff\\instance\ Read\ CPtrdiff\\instance\ Real\ CPtrdiff\\instance\ Show\ CPtrdiff\\instance\ Typeable\ CPtrdiff\\instance\ Storable\ CPtrdiff\\instance\ Bits\ CPtrdiff
211 \end{tabular}]
212 \end{haddockdesc}
213 \begin{haddockdesc}
214 \item[\begin{tabular}{@{}l}
215 data\ CSize
216 \end{tabular}]\haddockbegindoc
217 Haskell type representing the C \haddocktt{size{\char '137}t} type.
218 \par
219
220 \end{haddockdesc}
221 \begin{haddockdesc}
222 \item[\begin{tabular}{@{}l}
223 instance\ Bounded\ CSize\\instance\ Enum\ CSize\\instance\ Eq\ CSize\\instance\ Integral\ CSize\\instance\ Num\ CSize\\instance\ Ord\ CSize\\instance\ Read\ CSize\\instance\ Real\ CSize\\instance\ Show\ CSize\\instance\ Typeable\ CSize\\instance\ Storable\ CSize\\instance\ Bits\ CSize
224 \end{tabular}]
225 \end{haddockdesc}
226 \begin{haddockdesc}
227 \item[\begin{tabular}{@{}l}
228 data\ CWchar
229 \end{tabular}]\haddockbegindoc
230 Haskell type representing the C \haddocktt{wchar{\char '137}t} type.
231 \par
232
233 \end{haddockdesc}
234 \begin{haddockdesc}
235 \item[\begin{tabular}{@{}l}
236 instance\ Bounded\ CWchar\\instance\ Enum\ CWchar\\instance\ Eq\ CWchar\\instance\ Integral\ CWchar\\instance\ Num\ CWchar\\instance\ Ord\ CWchar\\instance\ Read\ CWchar\\instance\ Real\ CWchar\\instance\ Show\ CWchar\\instance\ Typeable\ CWchar\\instance\ Storable\ CWchar\\instance\ Bits\ CWchar
237 \end{tabular}]
238 \end{haddockdesc}
239 \begin{haddockdesc}
240 \item[\begin{tabular}{@{}l}
241 data\ CSigAtomic
242 \end{tabular}]\haddockbegindoc
243 Haskell type representing the C \haddocktt{sig{\char '137}atomic{\char '137}t} type.
244 \par
245
246 \end{haddockdesc}
247 \begin{haddockdesc}
248 \item[\begin{tabular}{@{}l}
249 instance\ Bounded\ CSigAtomic\\instance\ Enum\ CSigAtomic\\instance\ Eq\ CSigAtomic\\instance\ Integral\ CSigAtomic\\instance\ Num\ CSigAtomic\\instance\ Ord\ CSigAtomic\\instance\ Read\ CSigAtomic\\instance\ Real\ CSigAtomic\\instance\ Show\ CSigAtomic\\instance\ Typeable\ CSigAtomic\\instance\ Storable\ CSigAtomic\\instance\ Bits\ CSigAtomic
250 \end{tabular}]
251 \end{haddockdesc}
252 \begin{haddockdesc}
253 \item[\begin{tabular}{@{}l}
254 data\ CLLong
255 \end{tabular}]\haddockbegindoc
256 Haskell type representing the C \haddocktt{long\ long} type.
257 \par
258
259 \end{haddockdesc}
260 \begin{haddockdesc}
261 \item[\begin{tabular}{@{}l}
262 instance\ Bounded\ CLLong\\instance\ Enum\ CLLong\\instance\ Eq\ CLLong\\instance\ Integral\ CLLong\\instance\ Num\ CLLong\\instance\ Ord\ CLLong\\instance\ Read\ CLLong\\instance\ Real\ CLLong\\instance\ Show\ CLLong\\instance\ Typeable\ CLLong\\instance\ Storable\ CLLong\\instance\ Bits\ CLLong
263 \end{tabular}]
264 \end{haddockdesc}
265 \begin{haddockdesc}
266 \item[\begin{tabular}{@{}l}
267 data\ CULLong
268 \end{tabular}]\haddockbegindoc
269 Haskell type representing the C \haddocktt{unsigned\ long\ long} type.
270 \par
271
272 \end{haddockdesc}
273 \begin{haddockdesc}
274 \item[\begin{tabular}{@{}l}
275 instance\ Bounded\ CULLong\\instance\ Enum\ CULLong\\instance\ Eq\ CULLong\\instance\ Integral\ CULLong\\instance\ Num\ CULLong\\instance\ Ord\ CULLong\\instance\ Read\ CULLong\\instance\ Real\ CULLong\\instance\ Show\ CULLong\\instance\ Typeable\ CULLong\\instance\ Storable\ CULLong\\instance\ Bits\ CULLong
276 \end{tabular}]
277 \end{haddockdesc}
278 \begin{haddockdesc}
279 \item[\begin{tabular}{@{}l}
280 data\ CIntPtr
281 \end{tabular}]
282 \end{haddockdesc}
283 \begin{haddockdesc}
284 \item[\begin{tabular}{@{}l}
285 instance\ Bounded\ CIntPtr\\instance\ Enum\ CIntPtr\\instance\ Eq\ CIntPtr\\instance\ Integral\ CIntPtr\\instance\ Num\ CIntPtr\\instance\ Ord\ CIntPtr\\instance\ Read\ CIntPtr\\instance\ Real\ CIntPtr\\instance\ Show\ CIntPtr\\instance\ Typeable\ CIntPtr\\instance\ Storable\ CIntPtr\\instance\ Bits\ CIntPtr
286 \end{tabular}]
287 \end{haddockdesc}
288 \begin{haddockdesc}
289 \item[\begin{tabular}{@{}l}
290 data\ CUIntPtr
291 \end{tabular}]
292 \end{haddockdesc}
293 \begin{haddockdesc}
294 \item[\begin{tabular}{@{}l}
295 instance\ Bounded\ CUIntPtr\\instance\ Enum\ CUIntPtr\\instance\ Eq\ CUIntPtr\\instance\ Integral\ CUIntPtr\\instance\ Num\ CUIntPtr\\instance\ Ord\ CUIntPtr\\instance\ Read\ CUIntPtr\\instance\ Real\ CUIntPtr\\instance\ Show\ CUIntPtr\\instance\ Typeable\ CUIntPtr\\instance\ Storable\ CUIntPtr\\instance\ Bits\ CUIntPtr
296 \end{tabular}]
297 \end{haddockdesc}
298 \begin{haddockdesc}
299 \item[\begin{tabular}{@{}l}
300 data\ CIntMax
301 \end{tabular}]
302 \end{haddockdesc}
303 \begin{haddockdesc}
304 \item[\begin{tabular}{@{}l}
305 instance\ Bounded\ CIntMax\\instance\ Enum\ CIntMax\\instance\ Eq\ CIntMax\\instance\ Integral\ CIntMax\\instance\ Num\ CIntMax\\instance\ Ord\ CIntMax\\instance\ Read\ CIntMax\\instance\ Real\ CIntMax\\instance\ Show\ CIntMax\\instance\ Typeable\ CIntMax\\instance\ Storable\ CIntMax\\instance\ Bits\ CIntMax
306 \end{tabular}]
307 \end{haddockdesc}
308 \begin{haddockdesc}
309 \item[\begin{tabular}{@{}l}
310 data\ CUIntMax
311 \end{tabular}]
312 \end{haddockdesc}
313 \begin{haddockdesc}
314 \item[\begin{tabular}{@{}l}
315 instance\ Bounded\ CUIntMax\\instance\ Enum\ CUIntMax\\instance\ Eq\ CUIntMax\\instance\ Integral\ CUIntMax\\instance\ Num\ CUIntMax\\instance\ Ord\ CUIntMax\\instance\ Read\ CUIntMax\\instance\ Real\ CUIntMax\\instance\ Show\ CUIntMax\\instance\ Typeable\ CUIntMax\\instance\ Storable\ CUIntMax\\instance\ Bits\ CUIntMax
316 \end{tabular}]
317 \end{haddockdesc}
318 \subsection{Numeric types
319 }
320 These types are are represented as \haddocktt{newtype}s of basic
321 foreign types, and are instances of
322 \haddockid{Eq}, \haddockid{Ord}, \haddockid{Num}, \haddockid{Read},
323 \haddockid{Show}, \haddockid{Enum} and \haddocktt{Storable}.
324 \par
325
326 \begin{haddockdesc}
327 \item[\begin{tabular}{@{}l}
328 data\ CClock
329 \end{tabular}]\haddockbegindoc
330 Haskell type representing the C \haddocktt{clock{\char '137}t} type.
331 \par
332
333 \end{haddockdesc}
334 \begin{haddockdesc}
335 \item[\begin{tabular}{@{}l}
336 instance\ Enum\ CClock\\instance\ Eq\ CClock\\instance\ Num\ CClock\\instance\ Ord\ CClock\\instance\ Read\ CClock\\instance\ Real\ CClock\\instance\ Show\ CClock\\instance\ Typeable\ CClock\\instance\ Storable\ CClock
337 \end{tabular}]
338 \end{haddockdesc}
339 \begin{haddockdesc}
340 \item[\begin{tabular}{@{}l}
341 data\ CTime
342 \end{tabular}]\haddockbegindoc
343 Haskell type representing the C \haddocktt{time{\char '137}t} type.
344 \par
345 To convert to a \haddocktt{Data.Time.UTCTime}, use the following formula:
346 \par
347 \begin{quote}
348 {\haddockverb\begin{verbatim}
349 posixSecondsToUTCTime (realToFrac :: POSIXTime)
350 \end{verbatim}}
351 \end{quote}
352
353 \end{haddockdesc}
354 \begin{haddockdesc}
355 \item[\begin{tabular}{@{}l}
356 instance\ Enum\ CTime\\instance\ Eq\ CTime\\instance\ Num\ CTime\\instance\ Ord\ CTime\\instance\ Read\ CTime\\instance\ Real\ CTime\\instance\ Show\ CTime\\instance\ Typeable\ CTime\\instance\ Storable\ CTime
357 \end{tabular}]
358 \end{haddockdesc}
359 \subsection{Floating types
360 }
361 These types are are represented as \haddocktt{newtype}s of
362 \haddockid{Float} and \haddockid{Double}, and are instances of
363 \haddockid{Eq}, \haddockid{Ord}, \haddockid{Num}, \haddockid{Read},
364 \haddockid{Show}, \haddockid{Enum}, \haddocktt{Storable},
365 \haddockid{Real}, \haddockid{Fractional}, \haddockid{Floating},
366 \haddockid{RealFrac} and \haddockid{RealFloat}.
367 \par
368
369 \begin{haddockdesc}
370 \item[\begin{tabular}{@{}l}
371 data\ CFloat
372 \end{tabular}]\haddockbegindoc
373 Haskell type representing the C \haddocktt{float} type.
374 \par
375
376 \end{haddockdesc}
377 \begin{haddockdesc}
378 \item[\begin{tabular}{@{}l}
379 instance\ Enum\ CFloat\\instance\ Eq\ CFloat\\instance\ Floating\ CFloat\\instance\ Fractional\ CFloat\\instance\ Num\ CFloat\\instance\ Ord\ CFloat\\instance\ Read\ CFloat\\instance\ Real\ CFloat\\instance\ RealFloat\ CFloat\\instance\ RealFrac\ CFloat\\instance\ Show\ CFloat\\instance\ Typeable\ CFloat\\instance\ Storable\ CFloat
380 \end{tabular}]
381 \end{haddockdesc}
382 \begin{haddockdesc}
383 \item[\begin{tabular}{@{}l}
384 data\ CDouble
385 \end{tabular}]\haddockbegindoc
386 Haskell type representing the C \haddocktt{double} type.
387 \par
388
389 \end{haddockdesc}
390 \begin{haddockdesc}
391 \item[\begin{tabular}{@{}l}
392 instance\ Enum\ CDouble\\instance\ Eq\ CDouble\\instance\ Floating\ CDouble\\instance\ Fractional\ CDouble\\instance\ Num\ CDouble\\instance\ Ord\ CDouble\\instance\ Read\ CDouble\\instance\ Real\ CDouble\\instance\ RealFloat\ CDouble\\instance\ RealFrac\ CDouble\\instance\ Show\ CDouble\\instance\ Typeable\ CDouble\\instance\ Storable\ CDouble
393 \end{tabular}]
394 \end{haddockdesc}
395 \subsection{Other types
396 }
397 \begin{haddockdesc}
398 \item[\begin{tabular}{@{}l}
399 data\ CFile
400 \end{tabular}]\haddockbegindoc
401 Haskell type representing the C \haddocktt{FILE} type.
402 \par
403
404 \end{haddockdesc}
405 \begin{haddockdesc}
406 \item[\begin{tabular}{@{}l}
407 data\ CFpos
408 \end{tabular}]\haddockbegindoc
409 Haskell type representing the C \haddocktt{fpos{\char '137}t} type.
410 \par
411
412 \end{haddockdesc}
413 \begin{haddockdesc}
414 \item[\begin{tabular}{@{}l}
415 data\ CJmpBuf
416 \end{tabular}]\haddockbegindoc
417 Haskell type representing the C \haddocktt{jmp{\char '137}buf} type.
418 \par
419
420 \end{haddockdesc}