[project @ 2002-02-12 11:44:54 by simonmar]
[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           -- Defined in MkId
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   uncheckedIShiftLzh
94   uncheckedIShiftRAzh
95   uncheckedIShiftRLzh
96   addIntCzh
97   subIntCzh
98   mulIntMayOflozh
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   uncheckedShiftLzh
117   uncheckedShiftRLzh
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    -- Defined in MkId
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 -- Integer is implemented by foreign imports on .NET, so no primops
215
216 #ifndef ILX
217   cmpIntegerzh
218   cmpIntegerIntzh
219   plusIntegerzh
220   minusIntegerzh
221   timesIntegerzh
222   gcdIntegerzh
223   quotIntegerzh
224   remIntegerzh
225   gcdIntegerzh
226   gcdIntegerIntzh
227   divExactIntegerzh
228   quotRemIntegerzh
229   divModIntegerzh
230   integer2Intzh
231   integer2Wordzh
232   int2Integerzh
233   word2Integerzh
234 #if WORD_SIZE_IN_BITS < 32
235   integerToInt32zh
236   integerToWord32zh
237   int32ToIntegerzh
238   word32ToIntegerzh
239 #endif  
240 #if WORD_SIZE_IN_BITS < 64
241   int64ToIntegerzh
242   word64ToIntegerzh
243 #endif
244   andIntegerzh
245   orIntegerzh
246   xorIntegerzh
247   complementIntegerzh
248 #endif
249
250   Arrayzh
251   ByteArrayzh
252   MutableArrayzh
253   MutableByteArrayzh
254   sameMutableArrayzh
255   sameMutableByteArrayzh
256   newArrayzh
257   newByteArrayzh
258   newPinnedByteArrayzh
259   byteArrayContentszh
260
261   indexArrayzh
262   indexCharArrayzh
263   indexWideCharArrayzh
264   indexIntArrayzh
265   indexWordArrayzh
266   indexAddrArrayzh
267   indexFloatArrayzh
268   indexDoubleArrayzh
269   indexStablePtrArrayzh
270   indexInt8Arrayzh
271   indexInt16Arrayzh
272   indexInt32Arrayzh
273   indexInt64Arrayzh
274   indexWord8Arrayzh
275   indexWord16Arrayzh
276   indexWord32Arrayzh
277   indexWord64Arrayzh
278
279   readArrayzh
280   readCharArrayzh
281   readWideCharArrayzh
282   readIntArrayzh
283   readWordArrayzh
284   readAddrArrayzh
285   readFloatArrayzh
286   readDoubleArrayzh
287   readStablePtrArrayzh
288   readInt8Arrayzh
289   readInt16Arrayzh
290   readInt32Arrayzh
291   readInt64Arrayzh
292   readWord8Arrayzh
293   readWord16Arrayzh
294   readWord32Arrayzh
295   readWord64Arrayzh
296
297   writeArrayzh
298   writeCharArrayzh
299   writeWideCharArrayzh
300   writeIntArrayzh
301   writeWordArrayzh
302   writeAddrArrayzh
303   writeFloatArrayzh
304   writeDoubleArrayzh
305   writeStablePtrArrayzh
306   writeInt8Arrayzh
307   writeInt16Arrayzh
308   writeInt32Arrayzh
309   writeInt64Arrayzh
310   writeWord8Arrayzh
311   writeWord16Arrayzh
312   writeWord32Arrayzh
313   writeWord64Arrayzh
314
315   indexCharOffAddrzh
316   indexWideCharOffAddrzh
317   indexIntOffAddrzh
318   indexWordOffAddrzh
319   indexAddrOffAddrzh
320   indexFloatOffAddrzh
321   indexDoubleOffAddrzh
322   indexStablePtrOffAddrzh
323   indexInt8OffAddrzh
324   indexInt16OffAddrzh
325   indexInt32OffAddrzh
326   indexInt64OffAddrzh
327   indexWord8OffAddrzh
328   indexWord16OffAddrzh
329   indexWord32OffAddrzh
330   indexWord64OffAddrzh
331
332   readCharOffAddrzh
333   readWideCharOffAddrzh
334   readIntOffAddrzh
335   readWordOffAddrzh
336   readAddrOffAddrzh
337   readFloatOffAddrzh
338   readDoubleOffAddrzh
339   readStablePtrOffAddrzh
340   readInt8OffAddrzh
341   readInt16OffAddrzh
342   readInt32OffAddrzh
343   readInt64OffAddrzh
344   readWord8OffAddrzh
345   readWord16OffAddrzh
346   readWord32OffAddrzh
347   readWord64OffAddrzh
348
349   writeCharOffAddrzh
350   writeWideCharOffAddrzh
351   writeIntOffAddrzh
352   writeWordOffAddrzh
353   writeAddrOffAddrzh
354   writeForeignObjOffAddrzh
355   writeFloatOffAddrzh
356   writeDoubleOffAddrzh
357   writeStablePtrOffAddrzh
358   writeInt8OffAddrzh
359   writeInt16OffAddrzh
360   writeInt32OffAddrzh
361   writeInt64OffAddrzh
362   writeWord8OffAddrzh
363   writeWord16OffAddrzh
364   writeWord32OffAddrzh
365   writeWord64OffAddrzh
366
367   eqForeignObjzh
368   indexCharOffForeignObjzh
369   indexWideCharOffForeignObjzh
370   indexIntOffForeignObjzh
371   indexWordOffForeignObjzh
372   indexAddrOffForeignObjzh
373   indexFloatOffForeignObjzh
374   indexDoubleOffForeignObjzh
375   indexStablePtrOffForeignObjzh
376   indexInt8OffForeignObjzh
377   indexInt16OffForeignObjzh
378   indexInt32OffForeignObjzh
379   indexInt64OffForeignObjzh
380   indexWord8OffForeignObjzh
381   indexWord16OffForeignObjzh
382   indexWord32OffForeignObjzh
383   indexWord64OffForeignObjzh
384
385   unsafeFreezzeArrayzh          -- Note zz in the middle
386   unsafeFreezzeByteArrayzh      -- Ditto
387
388   unsafeThawArrayzh
389
390   sizzeofByteArrayzh            -- Ditto
391   sizzeofMutableByteArrayzh     -- Ditto
392
393   MutVarzh
394   newMutVarzh
395   readMutVarzh
396   writeMutVarzh
397   sameMutVarzh
398
399   catchzh
400   raisezh
401
402   Weakzh
403   mkWeakzh
404   deRefWeakzh
405   finalizzeWeakzh
406
407   ForeignObjzh
408   mkForeignObjzh
409   writeForeignObjzh
410   foreignObjToAddrzh
411   touchzh
412
413   StablePtrzh
414   makeStablePtrzh
415   deRefStablePtrzh
416   eqStablePtrzh
417
418   StableNamezh
419   makeStableNamezh
420   eqStableNamezh
421   stableNameToIntzh
422
423   newBCOzh
424   BCOzh
425   mkApUpd0zh
426
427   unsafeCoercezh        -- unsafeCoerce# :: forall a b. a -> b
428                         -- It's defined in ghc/compiler/basicTypes/MkId.lhs
429   addrToHValuezh
430 ;
431
432 -- Export PrelErr.error, so that others do not have to import PrelErr
433 __export PrelErr error ;
434
435 infixr 0 seq ;
436
437 --------------------------------------------------
438 instance {CCallable Charzh} = zdfCCallableCharzh;
439 instance {CCallable Doublezh} = zdfCCallableDoublezh;
440 instance {CCallable Floatzh} = zdfCCallableFloatzh;
441 instance {CCallable Intzh} = zdfCCallableIntzh;
442 instance {CCallable Addrzh} = zdfCCallableAddrzh;
443 instance {CCallable Int64zh} = zdfCCallableInt64zh;
444 instance {CCallable Word64zh} = zdfCCallableWord64zh;
445 instance {CCallable Wordzh} = zdfCCallableWordzh;
446 instance {CCallable ByteArrayzh} = zdfCCallableByteArrayzh;
447 instance __forall s => {CCallable (MutableByteArrayzh s)} = zdfCCallableMutableByteArrayzh;
448 instance {CCallable ForeignObjzh} = zdfCCallableForeignObjzh;
449 instance __forall s => {CCallable (StablePtrzh s)} = zdfCCallableStablePtrzh;
450 -- CCallable and CReturnable have kind (Type AnyBox) so that
451 -- things like Int# can be instances of CCallable. 
452 1 class CCallable a :: ? ;
453 1 class CReturnable a :: ? ;
454
455 1 assert :: __forall a => PrelBase.Bool -> a -> a ;
456
457 -- These guys do not really exist:
458 --
459 1 zdfCCallableCharzh :: {CCallable Charzh} ;
460 1 zdfCCallableDoublezh :: {CCallable Doublezh} ;
461 1 zdfCCallableFloatzh :: {CCallable Floatzh} ;
462 1 zdfCCallableIntzh :: {CCallable Intzh} ;
463 1 zdfCCallableAddrzh :: {CCallable Addrzh} ;
464 1 zdfCCallableInt64zh :: {CCallable Int64zh} ;
465 1 zdfCCallableWord64zh :: {CCallable Word64zh} ;
466 1 zdfCCallableWordzh :: {CCallable Wordzh} ;
467 1 zdfCCallableByteArrayzh :: {CCallable ByteArrayzh} ;
468 1 zdfCCallableMutableByteArrayzh :: __forall s => {CCallable (MutableByteArrayzh s)} ;
469 1 zdfCCallableForeignObjzh :: {CCallable ForeignObjzh} ;
470 1 zdfCCallableStablePtrzh :: __forall a => {CCallable (StablePtrzh a)} ;
471