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