[project @ 2000-04-11 20:44:17 by panne]
[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 PrelGHC 2 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   isEmptyMVarzh
49   
50   -- Parallel
51   seqzh
52   parzh
53   parGlobalzh
54   parLocalzh
55   parAtzh
56   parAtAbszh
57   parAtRelzh
58   parAtForNowzh
59
60   -- Character Type
61   Charzh 
62   gtCharzh
63   geCharzh
64   eqCharzh
65   neCharzh
66   ltCharzh
67   leCharzh
68   ordzh
69   chrzh
70   
71   -- Int Type
72   Intzh
73   zgzh
74   zgzezh
75   zezezh
76   zszezh
77   zlzh
78   zlzezh
79   zpzh
80   zmzh
81   ztzh
82   quotIntzh
83   remIntzh
84   gcdIntzh
85   negateIntzh
86   iShiftLzh
87   iShiftRAzh
88   iShiftRLzh
89   addIntCzh
90   subIntCzh
91   mulIntCzh
92   
93   Wordzh
94   gtWordzh
95   geWordzh
96   eqWordzh
97   neWordzh
98   ltWordzh
99   leWordzh
100   quotWordzh
101   remWordzh
102   andzh
103   orzh
104   notzh
105   xorzh
106   shiftLzh
107 --  shiftRAzh
108   shiftRLzh
109   int2Wordzh
110   word2Intzh
111   
112   Word64zh
113
114   Int64zh
115
116   Addrzh
117   gtAddrzh
118   geAddrzh
119   eqAddrzh
120   neAddrzh
121   ltAddrzh
122   leAddrzh
123   int2Addrzh
124   addr2Intzh
125   addr2Integerzh
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   
209   Arrayzh
210   ByteArrayzh
211   MutableArrayzh
212   MutableByteArrayzh
213   
214   sameMutableArrayzh
215   sameMutableByteArrayzh
216   
217   newArrayzh
218   newCharArrayzh
219   newIntArrayzh
220   newWordArrayzh
221   newFloatArrayzh
222   newDoubleArrayzh
223   newAddrArrayzh
224   newStablePtrArrayzh
225   
226   indexArrayzh
227   indexCharArrayzh
228   indexIntArrayzh
229   indexWordArrayzh
230   indexFloatArrayzh
231   indexDoubleArrayzh
232   indexAddrArrayzh
233   indexStablePtrArrayzh
234   indexInt64Arrayzh
235   indexWord64Arrayzh
236   
237 --  indexOffAddrzh
238   indexCharOffAddrzh
239   indexIntOffAddrzh
240   indexWordOffAddrzh
241   indexAddrOffAddrzh
242   indexFloatOffAddrzh
243   indexDoubleOffAddrzh
244   indexStablePtrOffAddrzh
245   indexInt64OffAddrzh
246   indexWord64OffAddrzh
247   
248   readCharOffAddrzh
249   readIntOffAddrzh
250   readWordOffAddrzh
251   readAddrOffAddrzh
252   readForeignObjOffAddrzh
253   readFloatOffAddrzh
254   readDoubleOffAddrzh
255   readStablePtrOffAddrzh
256   readInt64OffAddrzh
257   readWord64OffAddrzh
258
259   writeCharOffAddrzh
260   writeIntOffAddrzh
261   writeWordOffAddrzh
262   writeAddrOffAddrzh
263   writeForeignObjOffAddrzh
264   writeFloatOffAddrzh
265   writeDoubleOffAddrzh
266   writeStablePtrOffAddrzh
267   writeInt64OffAddrzh
268   writeWord64OffAddrzh
269
270 --  indexOffForeignObjzh
271   indexCharOffForeignObjzh
272   indexIntOffForeignObjzh
273   indexWordOffForeignObjzh
274   indexAddrOffForeignObjzh
275   indexFloatOffForeignObjzh
276   indexDoubleOffForeignObjzh
277   indexStablePtrOffForeignObjzh
278   indexInt64OffForeignObjzh
279   indexWord64OffForeignObjzh
280   
281   writeArrayzh
282   writeCharArrayzh
283   writeIntArrayzh
284   writeWordArrayzh
285   writeFloatArrayzh
286   writeDoubleArrayzh
287   writeAddrArrayzh
288   writeStablePtrArrayzh
289   writeInt64Arrayzh
290   writeWord64Arrayzh
291   
292   readArrayzh
293   readCharArrayzh
294   readIntArrayzh
295   readWordArrayzh
296   readFloatArrayzh
297   readDoubleArrayzh
298   readAddrArrayzh
299   readStablePtrArrayzh
300   readInt64Arrayzh
301   readWord64Arrayzh
302
303   unsafeFreezzeArrayzh          -- Note zz in the middle
304   unsafeFreezzeByteArrayzh      -- Ditto
305
306   unsafeThawArrayzh
307
308   sizzeofByteArrayzh            -- Ditto
309   sizzeofMutableByteArrayzh     -- Ditto
310
311   MutVarzh
312   newMutVarzh
313   readMutVarzh
314   writeMutVarzh
315   sameMutVarzh
316
317   catchzh
318   raisezh
319
320   Weakzh
321   mkWeakzh
322   deRefWeakzh
323   finalizzeWeakzh
324
325   ForeignObjzh
326   mkForeignObjzh
327   writeForeignObjzh
328
329   StablePtrzh
330   makeStablePtrzh
331   deRefStablePtrzh
332   eqStablePtrzh
333
334   StableNamezh
335   makeStableNamezh
336   eqStableNamezh
337   stableNameToIntzh
338
339   reallyUnsafePtrEqualityzh
340
341   unsafeCoercezh
342 ;
343
344 instance {CCallable Charzh} = zdfCCallableCharzh;
345 instance {CCallable Doublezh} = zdfCCallableDoublezh;
346 instance {CCallable Floatzh} = zdfCCallableFloatzh;
347 instance {CCallable Intzh} = zdfCCallableIntzh;
348 instance {CCallable Addrzh} = zdfCCallableAddrzh;
349 instance {CCallable Int64zh} = zdfCCallableInt64zh;
350 instance {CCallable Word64zh} = zdfCCallableWord64zh;
351 instance {CCallable Wordzh} = zdfCCallableWordzh;
352 instance {CCallable ByteArrayzh} = zdfCCallableByteArrayzh;
353 instance __forall [s] => {CCallable (MutableByteArrayzh s)} = zdfCCallableMutableByteArrayzh;
354 instance {CCallable ForeignObjzh} = zdfCCallableForeignObjzh;
355 instance __forall [s] => {CCallable (StablePtrzh s)} = zdfCCallableStablePtrzh;
356 -- CCallable and CReturnable have kind (Type AnyBox) so that
357 -- things like Int# can be instances of CCallable. 
358 1 class CCallable a :: ? ;
359 1 class CReturnable a :: ? ;
360
361 1 assert :: __forall [a] => PrelBase.Bool -> a -> a ;
362
363 -- These guys don't really exist:
364 --
365 1 zdfCCallableCharzh :: {CCallable Charzh} ;
366 1 zdfCCallableDoublezh :: {CCallable Doublezh} ;
367 1 zdfCCallableFloatzh :: {CCallable Floatzh} ;
368 1 zdfCCallableIntzh :: {CCallable Intzh} ;
369 1 zdfCCallableAddrzh :: {CCallable Addrzh} ;
370 1 zdfCCallableInt64zh :: {CCallable Int64zh} ;
371 1 zdfCCallableWord64zh :: {CCallable Word64zh} ;
372 1 zdfCCallableWordzh :: {CCallable Wordzh} ;
373 1 zdfCCallableByteArrayzh :: {CCallable ByteArrayzh} ;
374 1 zdfCCallableMutableByteArrayzh :: __forall [s] => {CCallable (MutableByteArrayzh s)} ;
375 1 zdfCCallableForeignObjzh :: {CCallable ForeignObjzh} ;
376 1 zdfCCallableStablePtrzh :: __forall [a] => {CCallable (StablePtrzh a)} ;