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