c9c7ba4efed031d400368b23dabb1eab296817ca
[ghc-hetmet.git] / ghc / lib / std / PrelGHC.hi-boot.pp
1 ---------------------------------------------------------------------------
2 --                              PrelGHC.hi-boot
3 -- 
4 --      This hand-written interface file allows you to bring into scope the 
5 --      primitive operations and types that GHC knows about.
6 ---------------------------------------------------------------------------
7
8 #include "MachDeps.h"
9
10 __interface "std" PrelGHC 1 0 where
11
12 __export PrelGHC
13
14   ZLzmzgZR      -- (->)
15
16   CCallable
17   CReturnable
18
19 -- Magical assert thingy
20   assert
21
22   -- constructor tags
23   tagToEnumzh
24   getTagzh
25   dataToTagzh
26
27   -- I/O primitives
28   RealWorld
29   realWorldzh
30   Statezh
31
32   -- Concurrency primitives
33   ThreadIdzh
34   myThreadIdzh
35   forkzh
36   yieldzh
37   killThreadzh
38   blockAsyncExceptionszh
39   unblockAsyncExceptionszh
40   delayzh
41   waitReadzh
42   waitWritezh
43
44   -- MVars
45   MVarzh
46   sameMVarzh
47   newMVarzh
48   takeMVarzh
49   putMVarzh
50   tryTakeMVarzh
51   tryPutMVarzh
52   isEmptyMVarzh
53
54   -- Seq
55   seq
56
57   -- Parallel
58   seqzh
59   parzh
60   parGlobalzh
61   parLocalzh
62   parAtzh
63   parAtAbszh
64   parAtRelzh
65   parAtForNowzh
66
67   -- Character Type
68   Charzh 
69   gtCharzh
70   geCharzh
71   eqCharzh
72   neCharzh
73   ltCharzh
74   leCharzh
75   ordzh
76   chrzh
77
78   -- Int Type
79   Intzh
80   zgzh
81   zgzezh
82   zezezh
83   zszezh
84   zlzh
85   zlzezh
86   zpzh
87   zmzh
88   ztzh
89   quotIntzh
90   remIntzh
91   gcdIntzh
92   negateIntzh
93   iShiftLzh
94   iShiftRAzh
95   iShiftRLzh
96   addIntCzh
97   subIntCzh
98   mulIntCzh
99
100   Wordzh
101   gtWordzh
102   geWordzh
103   eqWordzh
104   neWordzh
105   ltWordzh
106   leWordzh
107   plusWordzh
108   minusWordzh
109   timesWordzh
110   quotWordzh
111   remWordzh
112   andzh
113   orzh
114   notzh
115   xorzh
116   shiftLzh
117   shiftRLzh
118   int2Wordzh
119   word2Intzh
120
121   narrow8Intzh
122   narrow16Intzh
123   narrow32Intzh
124   narrow8Wordzh
125   narrow16Wordzh
126   narrow32Wordzh
127
128 #if WORD_SIZE_IN_BITS < 32
129   Int32zh
130   Word32zh
131 #endif
132
133 #if WORD_SIZE_IN_BITS < 64
134   Int64zh
135   Word64zh
136 #endif
137
138   Addrzh
139   nullAddrzh
140   plusAddrzh
141   minusAddrzh
142   remAddrzh
143 #if (WORD_SIZE_IN_BITS == 32 || WORD_SIZE_IN_BITS == 64)
144   addr2Intzh
145   int2Addrzh
146 #endif
147   gtAddrzh
148   geAddrzh
149   eqAddrzh
150   neAddrzh
151   ltAddrzh
152   leAddrzh
153
154   Floatzh
155   gtFloatzh
156   geFloatzh
157   eqFloatzh
158   neFloatzh
159   ltFloatzh
160   leFloatzh
161   plusFloatzh
162   minusFloatzh
163   timesFloatzh
164   divideFloatzh
165   negateFloatzh
166   float2Intzh
167   int2Floatzh
168   expFloatzh
169   logFloatzh
170   sqrtFloatzh
171   sinFloatzh
172   cosFloatzh
173   tanFloatzh
174   asinFloatzh
175   acosFloatzh
176   atanFloatzh
177   sinhFloatzh
178   coshFloatzh
179   tanhFloatzh
180   powerFloatzh
181   decodeFloatzh
182
183   Doublezh
184   zgzhzh
185   zgzezhzh
186   zezezhzh
187   zszezhzh
188   zlzhzh
189   zlzezhzh
190   zpzhzh
191   zmzhzh
192   ztzhzh
193   zszhzh
194   negateDoublezh
195   double2Intzh
196   int2Doublezh
197   double2Floatzh
198   float2Doublezh
199   expDoublezh
200   logDoublezh
201   sqrtDoublezh
202   sinDoublezh
203   cosDoublezh
204   tanDoublezh
205   asinDoublezh
206   acosDoublezh
207   atanDoublezh
208   sinhDoublezh
209   coshDoublezh
210   tanhDoublezh
211   ztztzhzh
212   decodeDoublezh
213
214   cmpIntegerzh
215   cmpIntegerIntzh
216   plusIntegerzh
217   minusIntegerzh
218   timesIntegerzh
219   gcdIntegerzh
220   quotIntegerzh
221   remIntegerzh
222   gcdIntegerzh
223   gcdIntegerIntzh
224   divExactIntegerzh
225   quotRemIntegerzh
226   divModIntegerzh
227   integer2Intzh
228   integer2Wordzh
229   int2Integerzh
230   word2Integerzh
231 #if WORD_SIZE_IN_BITS < 32
232   integerToInt32zh
233   integerToWord32zh
234   int32ToIntegerzh
235   word32ToIntegerzh
236 #endif  
237 #if WORD_SIZE_IN_BITS < 64
238   integerToInt64zh
239   integerToWord64zh
240   int64ToIntegerzh
241   word64ToIntegerzh
242 #endif
243   andIntegerzh
244   orIntegerzh
245   xorIntegerzh
246   complementIntegerzh
247
248   Arrayzh
249   ByteArrayzh
250   MutableArrayzh
251   MutableByteArrayzh
252   sameMutableArrayzh
253   sameMutableByteArrayzh
254   newArrayzh
255   newByteArrayzh
256   newPinnedByteArrayzh
257   byteArrayContentszh
258
259   indexArrayzh
260   indexCharArrayzh
261   indexWideCharArrayzh
262   indexIntArrayzh
263   indexWordArrayzh
264   indexAddrArrayzh
265   indexFloatArrayzh
266   indexDoubleArrayzh
267   indexStablePtrArrayzh
268   indexInt8Arrayzh
269   indexInt16Arrayzh
270   indexInt32Arrayzh
271   indexInt64Arrayzh
272   indexWord8Arrayzh
273   indexWord16Arrayzh
274   indexWord32Arrayzh
275   indexWord64Arrayzh
276
277   readArrayzh
278   readCharArrayzh
279   readWideCharArrayzh
280   readIntArrayzh
281   readWordArrayzh
282   readAddrArrayzh
283   readFloatArrayzh
284   readDoubleArrayzh
285   readStablePtrArrayzh
286   readInt8Arrayzh
287   readInt16Arrayzh
288   readInt32Arrayzh
289   readInt64Arrayzh
290   readWord8Arrayzh
291   readWord16Arrayzh
292   readWord32Arrayzh
293   readWord64Arrayzh
294
295   writeArrayzh
296   writeCharArrayzh
297   writeWideCharArrayzh
298   writeIntArrayzh
299   writeWordArrayzh
300   writeAddrArrayzh
301   writeFloatArrayzh
302   writeDoubleArrayzh
303   writeStablePtrArrayzh
304   writeInt8Arrayzh
305   writeInt16Arrayzh
306   writeInt32Arrayzh
307   writeInt64Arrayzh
308   writeWord8Arrayzh
309   writeWord16Arrayzh
310   writeWord32Arrayzh
311   writeWord64Arrayzh
312
313   indexCharOffAddrzh
314   indexWideCharOffAddrzh
315   indexIntOffAddrzh
316   indexWordOffAddrzh
317   indexAddrOffAddrzh
318   indexFloatOffAddrzh
319   indexDoubleOffAddrzh
320   indexStablePtrOffAddrzh
321   indexInt8OffAddrzh
322   indexInt16OffAddrzh
323   indexInt32OffAddrzh
324   indexInt64OffAddrzh
325   indexWord8OffAddrzh
326   indexWord16OffAddrzh
327   indexWord32OffAddrzh
328   indexWord64OffAddrzh
329
330   readCharOffAddrzh
331   readWideCharOffAddrzh
332   readIntOffAddrzh
333   readWordOffAddrzh
334   readAddrOffAddrzh
335   readFloatOffAddrzh
336   readDoubleOffAddrzh
337   readStablePtrOffAddrzh
338   readInt8OffAddrzh
339   readInt16OffAddrzh
340   readInt32OffAddrzh
341   readInt64OffAddrzh
342   readWord8OffAddrzh
343   readWord16OffAddrzh
344   readWord32OffAddrzh
345   readWord64OffAddrzh
346
347   writeCharOffAddrzh
348   writeWideCharOffAddrzh
349   writeIntOffAddrzh
350   writeWordOffAddrzh
351   writeAddrOffAddrzh
352   writeForeignObjOffAddrzh
353   writeFloatOffAddrzh
354   writeDoubleOffAddrzh
355   writeStablePtrOffAddrzh
356   writeInt8OffAddrzh
357   writeInt16OffAddrzh
358   writeInt32OffAddrzh
359   writeInt64OffAddrzh
360   writeWord8OffAddrzh
361   writeWord16OffAddrzh
362   writeWord32OffAddrzh
363   writeWord64OffAddrzh
364
365   eqForeignObjzh
366   indexCharOffForeignObjzh
367   indexWideCharOffForeignObjzh
368   indexIntOffForeignObjzh
369   indexWordOffForeignObjzh
370   indexAddrOffForeignObjzh
371   indexFloatOffForeignObjzh
372   indexDoubleOffForeignObjzh
373   indexStablePtrOffForeignObjzh
374   indexInt8OffForeignObjzh
375   indexInt16OffForeignObjzh
376   indexInt32OffForeignObjzh
377   indexInt64OffForeignObjzh
378   indexWord8OffForeignObjzh
379   indexWord16OffForeignObjzh
380   indexWord32OffForeignObjzh
381   indexWord64OffForeignObjzh
382
383   unsafeFreezzeArrayzh          -- Note zz in the middle
384   unsafeFreezzeByteArrayzh      -- Ditto
385
386   unsafeThawArrayzh
387
388   sizzeofByteArrayzh            -- Ditto
389   sizzeofMutableByteArrayzh     -- Ditto
390
391   MutVarzh
392   newMutVarzh
393   readMutVarzh
394   writeMutVarzh
395   sameMutVarzh
396
397   catchzh
398   raisezh
399
400   Weakzh
401   mkWeakzh
402   deRefWeakzh
403   finalizzeWeakzh
404
405   ForeignObjzh
406   mkForeignObjzh
407   writeForeignObjzh
408   foreignObjToAddrzh
409   touchzh
410
411   StablePtrzh
412   makeStablePtrzh
413   deRefStablePtrzh
414   eqStablePtrzh
415
416   StableNamezh
417   makeStableNamezh
418   eqStableNamezh
419   stableNameToIntzh
420
421   reallyUnsafePtrEqualityzh
422
423   newBCOzh
424   BCOzh
425   mkApUpd0zh
426
427   unsafeCoercezh
428   addrToHValuezh
429 ;
430
431 -- Export PrelErr.error, so that others do not have to import PrelErr
432 __export PrelErr error ;
433
434
435 --------------------------------------------------
436 instance {CCallable Charzh} = zdfCCallableCharzh;
437 instance {CCallable Doublezh} = zdfCCallableDoublezh;
438 instance {CCallable Floatzh} = zdfCCallableFloatzh;
439 instance {CCallable Intzh} = zdfCCallableIntzh;
440 instance {CCallable Addrzh} = zdfCCallableAddrzh;
441 instance {CCallable Int64zh} = zdfCCallableInt64zh;
442 instance {CCallable Word64zh} = zdfCCallableWord64zh;
443 instance {CCallable Wordzh} = zdfCCallableWordzh;
444 instance {CCallable ByteArrayzh} = zdfCCallableByteArrayzh;
445 instance __forall s => {CCallable (MutableByteArrayzh s)} = zdfCCallableMutableByteArrayzh;
446 instance {CCallable ForeignObjzh} = zdfCCallableForeignObjzh;
447 instance __forall s => {CCallable (StablePtrzh s)} = zdfCCallableStablePtrzh;
448 -- CCallable and CReturnable have kind (Type AnyBox) so that
449 -- things like Int# can be instances of CCallable. 
450 1 class CCallable a :: ? ;
451 1 class CReturnable a :: ? ;
452
453 1 assert :: __forall a => PrelBase.Bool -> a -> a ;
454
455 -- These guys do not really exist:
456 --
457 1 zdfCCallableCharzh :: {CCallable Charzh} ;
458 1 zdfCCallableDoublezh :: {CCallable Doublezh} ;
459 1 zdfCCallableFloatzh :: {CCallable Floatzh} ;
460 1 zdfCCallableIntzh :: {CCallable Intzh} ;
461 1 zdfCCallableAddrzh :: {CCallable Addrzh} ;
462 1 zdfCCallableInt64zh :: {CCallable Int64zh} ;
463 1 zdfCCallableWord64zh :: {CCallable Word64zh} ;
464 1 zdfCCallableWordzh :: {CCallable Wordzh} ;
465 1 zdfCCallableByteArrayzh :: {CCallable ByteArrayzh} ;
466 1 zdfCCallableMutableByteArrayzh :: __forall s => {CCallable (MutableByteArrayzh s)} ;
467 1 zdfCCallableForeignObjzh :: {CCallable ForeignObjzh} ;
468 1 zdfCCallableStablePtrzh :: __forall a => {CCallable (StablePtrzh a)} ;
469