2e1c77c780570b015ba1a0f0aea9d0acb2f673ff
[ghc-hetmet.git] / ghc / lib / std / PrelGHC.hi-boot
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 __interface "rts" PrelGHC 1 0 where
9
10 __export PrelGHC
11
12   ZLzmzgZR      -- (->)
13
14   CCallable
15   CReturnable
16
17 -- Magical assert thingy
18   assert
19
20   -- constructor tags
21   tagToEnumzh
22   getTagzh
23   dataToTagzh
24
25   -- I/O primitives
26   RealWorld
27   realWorldzh
28   Statezh
29
30   -- Concurrency primitives
31   ThreadIdzh
32   myThreadIdzh
33   forkzh
34   yieldzh
35   killThreadzh
36   blockAsyncExceptionszh
37   unblockAsyncExceptionszh
38   delayzh
39   waitReadzh
40   waitWritezh
41
42   -- MVars
43   MVarzh
44   sameMVarzh
45   newMVarzh
46   takeMVarzh
47   putMVarzh
48   tryTakeMVarzh
49   isEmptyMVarzh
50   
51   -- Parallel
52   seqzh
53   parzh
54   parGlobalzh
55   parLocalzh
56   parAtzh
57   parAtAbszh
58   parAtRelzh
59   parAtForNowzh
60
61   -- Character Type
62   Charzh 
63   gtCharzh
64   geCharzh
65   eqCharzh
66   neCharzh
67   ltCharzh
68   leCharzh
69   ordzh
70   chrzh
71   
72   -- Int Type
73   Intzh
74   zgzh
75   zgzezh
76   zezezh
77   zszezh
78   zlzh
79   zlzezh
80   zpzh
81   zmzh
82   ztzh
83   quotIntzh
84   remIntzh
85   gcdIntzh
86   negateIntzh
87   iShiftLzh
88   iShiftRAzh
89   iShiftRLzh
90   addIntCzh
91   subIntCzh
92   mulIntCzh
93   
94   Wordzh
95   gtWordzh
96   geWordzh
97   eqWordzh
98   neWordzh
99   ltWordzh
100   leWordzh
101   quotWordzh
102   remWordzh
103   andzh
104   orzh
105   notzh
106   xorzh
107   shiftLzh
108 --  shiftRAzh
109   shiftRLzh
110   int2Wordzh
111   word2Intzh
112   
113   Word64zh
114
115   Int64zh
116
117   Addrzh
118   gtAddrzh
119   geAddrzh
120   eqAddrzh
121   neAddrzh
122   ltAddrzh
123   leAddrzh
124   int2Addrzh
125   addr2Intzh
126
127   Floatzh
128   gtFloatzh
129   geFloatzh
130   eqFloatzh
131   neFloatzh
132   ltFloatzh
133   leFloatzh
134   plusFloatzh
135   minusFloatzh
136   timesFloatzh
137   divideFloatzh
138   negateFloatzh
139   float2Intzh
140   int2Floatzh
141   expFloatzh
142   logFloatzh
143   sqrtFloatzh
144   sinFloatzh
145   cosFloatzh
146   tanFloatzh
147   asinFloatzh
148   acosFloatzh
149   atanFloatzh
150   sinhFloatzh
151   coshFloatzh
152   tanhFloatzh
153   powerFloatzh
154   decodeFloatzh
155   
156   Doublezh
157   zgzhzh
158   zgzezhzh
159   zezezhzh
160   zszezhzh
161   zlzhzh
162   zlzezhzh
163   zpzhzh
164   zmzhzh
165   ztzhzh
166   zszhzh
167   negateDoublezh
168   double2Intzh
169   int2Doublezh
170   double2Floatzh
171   float2Doublezh
172   expDoublezh
173   logDoublezh
174   sqrtDoublezh
175   sinDoublezh
176   cosDoublezh
177   tanDoublezh
178   asinDoublezh
179   acosDoublezh
180   atanDoublezh
181   sinhDoublezh
182   coshDoublezh
183   tanhDoublezh
184   ztztzhzh
185   decodeDoublezh
186   
187   cmpIntegerzh
188   cmpIntegerIntzh
189   plusIntegerzh
190   minusIntegerzh
191   timesIntegerzh
192   gcdIntegerzh
193   quotIntegerzh
194   remIntegerzh
195   gcdIntegerzh
196   gcdIntegerIntzh
197   divExactIntegerzh
198   quotRemIntegerzh
199   divModIntegerzh
200   integer2Intzh
201   integer2Wordzh
202   int2Integerzh
203   word2Integerzh
204   integerToInt64zh
205   integerToWord64zh
206   int64ToIntegerzh
207   word64ToIntegerzh
208   andIntegerzh
209   orIntegerzh
210   xorIntegerzh
211   complementIntegerzh
212
213   Arrayzh
214   ByteArrayzh
215   MutableArrayzh
216   MutableByteArrayzh
217   
218   sameMutableArrayzh
219   sameMutableByteArrayzh
220   
221   newArrayzh
222   newCharArrayzh
223   newIntArrayzh
224   newWordArrayzh
225   newFloatArrayzh
226   newDoubleArrayzh
227   newAddrArrayzh
228   newStablePtrArrayzh
229   
230   indexArrayzh
231   indexCharArrayzh
232   indexIntArrayzh
233   indexWordArrayzh
234   indexFloatArrayzh
235   indexDoubleArrayzh
236   indexAddrArrayzh
237   indexStablePtrArrayzh
238   indexInt64Arrayzh
239   indexWord64Arrayzh
240   
241 --  indexOffAddrzh
242   indexCharOffAddrzh
243   indexIntOffAddrzh
244   indexWordOffAddrzh
245   indexAddrOffAddrzh
246   indexFloatOffAddrzh
247   indexDoubleOffAddrzh
248   indexStablePtrOffAddrzh
249   indexInt64OffAddrzh
250   indexWord64OffAddrzh
251   
252   readCharOffAddrzh
253   readIntOffAddrzh
254   readWordOffAddrzh
255   readAddrOffAddrzh
256   readFloatOffAddrzh
257   readDoubleOffAddrzh
258   readStablePtrOffAddrzh
259   readInt64OffAddrzh
260   readWord64OffAddrzh
261
262   writeCharOffAddrzh
263   writeIntOffAddrzh
264   writeWordOffAddrzh
265   writeAddrOffAddrzh
266   writeForeignObjOffAddrzh
267   writeFloatOffAddrzh
268   writeDoubleOffAddrzh
269   writeStablePtrOffAddrzh
270   writeInt64OffAddrzh
271   writeWord64OffAddrzh
272
273 --  indexOffForeignObjzh
274   indexCharOffForeignObjzh
275   indexIntOffForeignObjzh
276   indexWordOffForeignObjzh
277   indexAddrOffForeignObjzh
278   indexFloatOffForeignObjzh
279   indexDoubleOffForeignObjzh
280   indexStablePtrOffForeignObjzh
281   indexInt64OffForeignObjzh
282   indexWord64OffForeignObjzh
283   
284   writeArrayzh
285   writeCharArrayzh
286   writeIntArrayzh
287   writeWordArrayzh
288   writeFloatArrayzh
289   writeDoubleArrayzh
290   writeAddrArrayzh
291   writeStablePtrArrayzh
292   writeInt64Arrayzh
293   writeWord64Arrayzh
294   
295   readArrayzh
296   readCharArrayzh
297   readIntArrayzh
298   readWordArrayzh
299   readFloatArrayzh
300   readDoubleArrayzh
301   readAddrArrayzh
302   readStablePtrArrayzh
303   readInt64Arrayzh
304   readWord64Arrayzh
305
306   unsafeFreezzeArrayzh          -- Note zz in the middle
307   unsafeFreezzeByteArrayzh      -- Ditto
308
309   unsafeThawArrayzh
310
311   sizzeofByteArrayzh            -- Ditto
312   sizzeofMutableByteArrayzh     -- Ditto
313
314   MutVarzh
315   newMutVarzh
316   readMutVarzh
317   writeMutVarzh
318   sameMutVarzh
319
320   catchzh
321   raisezh
322
323   Weakzh
324   mkWeakzh
325   deRefWeakzh
326   finalizzeWeakzh
327
328   ForeignObjzh
329   mkForeignObjzh
330   writeForeignObjzh
331   foreignObjToAddrzh
332   touchzh
333
334   StablePtrzh
335   makeStablePtrzh
336   deRefStablePtrzh
337   eqStablePtrzh
338
339   StableNamezh
340   makeStableNamezh
341   eqStableNamezh
342   stableNameToIntzh
343
344   indexPtrOffClosurezh
345   indexWordOffClosurezh
346   setPtrOffClosurezh
347   setWordOffClosurezh
348
349   reallyUnsafePtrEqualityzh
350
351   newBCOzh
352   getBCOPtrszh
353
354   unsafeCoercezh
355 ;
356
357 -- Export PrelErr.error, so that others don't have to import PrelErr
358 __export PrelErr error ;
359
360
361 --------------------------------------------------
362 instance {CCallable Charzh} = zdfCCallableCharzh;
363 instance {CCallable Doublezh} = zdfCCallableDoublezh;
364 instance {CCallable Floatzh} = zdfCCallableFloatzh;
365 instance {CCallable Intzh} = zdfCCallableIntzh;
366 instance {CCallable Addrzh} = zdfCCallableAddrzh;
367 instance {CCallable Int64zh} = zdfCCallableInt64zh;
368 instance {CCallable Word64zh} = zdfCCallableWord64zh;
369 instance {CCallable Wordzh} = zdfCCallableWordzh;
370 instance {CCallable ByteArrayzh} = zdfCCallableByteArrayzh;
371 instance __forall s => {CCallable (MutableByteArrayzh s)} = zdfCCallableMutableByteArrayzh;
372 instance {CCallable ForeignObjzh} = zdfCCallableForeignObjzh;
373 instance __forall s => {CCallable (StablePtrzh s)} = zdfCCallableStablePtrzh;
374 -- CCallable and CReturnable have kind (Type AnyBox) so that
375 -- things like Int# can be instances of CCallable. 
376 1 class CCallable a :: ? ;
377 1 class CReturnable a :: ? ;
378
379 1 assert :: __forall a => PrelBase.Bool -> a -> a ;
380
381 -- These guys don't really exist:
382 --
383 1 zdfCCallableCharzh :: {CCallable Charzh} ;
384 1 zdfCCallableDoublezh :: {CCallable Doublezh} ;
385 1 zdfCCallableFloatzh :: {CCallable Floatzh} ;
386 1 zdfCCallableIntzh :: {CCallable Intzh} ;
387 1 zdfCCallableAddrzh :: {CCallable Addrzh} ;
388 1 zdfCCallableInt64zh :: {CCallable Int64zh} ;
389 1 zdfCCallableWord64zh :: {CCallable Word64zh} ;
390 1 zdfCCallableWordzh :: {CCallable Wordzh} ;
391 1 zdfCCallableByteArrayzh :: {CCallable ByteArrayzh} ;
392 1 zdfCCallableMutableByteArrayzh :: __forall s => {CCallable (MutableByteArrayzh s)} ;
393 1 zdfCCallableForeignObjzh :: {CCallable ForeignObjzh} ;
394 1 zdfCCallableStablePtrzh :: __forall a => {CCallable (StablePtrzh a)} ;