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