[project @ 2000-04-13 14:27:15 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 "std" 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   takeMaybeMVarzh
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   addr2Integerzh
127
128   Floatzh
129   gtFloatzh
130   geFloatzh
131   eqFloatzh
132   neFloatzh
133   ltFloatzh
134   leFloatzh
135   plusFloatzh
136   minusFloatzh
137   timesFloatzh
138   divideFloatzh
139   negateFloatzh
140   float2Intzh
141   int2Floatzh
142   expFloatzh
143   logFloatzh
144   sqrtFloatzh
145   sinFloatzh
146   cosFloatzh
147   tanFloatzh
148   asinFloatzh
149   acosFloatzh
150   atanFloatzh
151   sinhFloatzh
152   coshFloatzh
153   tanhFloatzh
154   powerFloatzh
155   decodeFloatzh
156   
157   Doublezh
158   zgzhzh
159   zgzezhzh
160   zezezhzh
161   zszezhzh
162   zlzhzh
163   zlzezhzh
164   zpzhzh
165   zmzhzh
166   ztzhzh
167   zszhzh
168   negateDoublezh
169   double2Intzh
170   int2Doublezh
171   double2Floatzh
172   float2Doublezh
173   expDoublezh
174   logDoublezh
175   sqrtDoublezh
176   sinDoublezh
177   cosDoublezh
178   tanDoublezh
179   asinDoublezh
180   acosDoublezh
181   atanDoublezh
182   sinhDoublezh
183   coshDoublezh
184   tanhDoublezh
185   ztztzhzh
186   decodeDoublezh
187   
188   cmpIntegerzh
189   cmpIntegerIntzh
190   plusIntegerzh
191   minusIntegerzh
192   timesIntegerzh
193   gcdIntegerzh
194   quotIntegerzh
195   remIntegerzh
196   gcdIntegerzh
197   gcdIntegerIntzh
198   divExactIntegerzh
199   quotRemIntegerzh
200   divModIntegerzh
201   integer2Intzh
202   integer2Wordzh
203   int2Integerzh
204   word2Integerzh
205   integerToInt64zh
206   integerToWord64zh
207   int64ToIntegerzh
208   word64ToIntegerzh
209   
210   Arrayzh
211   ByteArrayzh
212   MutableArrayzh
213   MutableByteArrayzh
214   
215   sameMutableArrayzh
216   sameMutableByteArrayzh
217   
218   newArrayzh
219   newCharArrayzh
220   newIntArrayzh
221   newWordArrayzh
222   newFloatArrayzh
223   newDoubleArrayzh
224   newAddrArrayzh
225   newStablePtrArrayzh
226   
227   indexArrayzh
228   indexCharArrayzh
229   indexIntArrayzh
230   indexWordArrayzh
231   indexFloatArrayzh
232   indexDoubleArrayzh
233   indexAddrArrayzh
234   indexStablePtrArrayzh
235   indexInt64Arrayzh
236   indexWord64Arrayzh
237   
238 --  indexOffAddrzh
239   indexCharOffAddrzh
240   indexIntOffAddrzh
241   indexWordOffAddrzh
242   indexAddrOffAddrzh
243   indexFloatOffAddrzh
244   indexDoubleOffAddrzh
245   indexStablePtrOffAddrzh
246   indexInt64OffAddrzh
247   indexWord64OffAddrzh
248   
249   readCharOffAddrzh
250   readIntOffAddrzh
251   readWordOffAddrzh
252   readAddrOffAddrzh
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)} ;