Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/ml-nlffi-lib/c.sig
ViewVC logotype

Diff of /sml/trunk/src/ml-nlffi-lib/c.sig

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1095, Tue Feb 26 13:20:40 2002 UTC revision 1096, Tue Feb 26 16:59:02 2002 UTC
# Line 67  Line 67 
67                                           * 'tag is drawn from the types                                           * 'tag is drawn from the types
68                                           * defined in the Tag module *)                                           * defined in the Tag module *)
69    
70        (* enumerations *)
71        eqtype 'tag enum
72    
73      (* primtypes (signed/unsigned char, int, short, long; float, double) *)      (* primtypes (signed/unsigned char, int, short, long; float, double) *)
74      eqtype schar  and uchar      eqtype schar  and uchar
75      eqtype sint   and uint      eqtype sint   and uint
# Line 89  Line 92 
92          val c_ulong  : MLRep.Unsigned.word  -> ulong          val c_ulong  : MLRep.Unsigned.word  -> ulong
93          val c_float  : MLRep.Real.real  -> float          val c_float  : MLRep.Real.real  -> float
94          val c_double : MLRep.Real.real -> double          val c_double : MLRep.Real.real -> double
95            val i2c_enum : MLRep.Signed.int    -> 'e enum
96    
97          (* C -> ML *)          (* C -> ML *)
98          val ml_schar  : schar  -> MLRep.Signed.int          val ml_schar  : schar  -> MLRep.Signed.int
# Line 101  Line 105 
105          val ml_ulong  : ulong  -> MLRep.Unsigned.word          val ml_ulong  : ulong  -> MLRep.Unsigned.word
106          val ml_float  : float  -> MLRep.Real.real          val ml_float  : float  -> MLRep.Real.real
107          val ml_double : double -> MLRep.Real.real          val ml_double : double -> MLRep.Real.real
108            val c2i_enum  : 'e enum -> MLRep.Signed.int
109      end      end
110    
111      (* type-abbreviations for a bit more convenience. *)      (* type-abbreviations for a bit more convenience. *)
# Line 115  Line 120 
120      type 'c float_obj = (float, 'c) obj      type 'c float_obj = (float, 'c) obj
121      type 'c double_obj = (double, 'c) obj      type 'c double_obj = (double, 'c) obj
122      type 'c voidptr_obj = (voidptr, 'c) obj      type 'c voidptr_obj = (voidptr, 'c) obj
123        type ('e, 'c) enum_obj = ('e enum, 'c) obj
124      type ('f, 'c) fptr_obj = ('f fptr, 'c) obj      type ('f, 'c) fptr_obj = ('f fptr, 'c) obj
125      type ('s, 'c) su_obj = ('s su, 'c) obj      type ('s, 'c) su_obj = ('s su, 'c) obj
126    
# Line 130  Line 136 
136      type 'c float_obj' = (float, 'c) obj'      type 'c float_obj' = (float, 'c) obj'
137      type 'c double_obj' = (double, 'c) obj'      type 'c double_obj' = (double, 'c) obj'
138      type 'c voidptr_obj' = (voidptr, 'c) obj'      type 'c voidptr_obj' = (voidptr, 'c) obj'
139        type ('e, 'c) enum_obj' = ('e enum, 'c) obj'
140      type ('f, 'c) fptr_obj' = ('f fptr, 'c) obj'      type ('f, 'c) fptr_obj' = ('f fptr, 'c) obj'
141      type ('s, 'c) su_obj' = ('s su, 'c) obj'      type ('s, 'c) su_obj' = ('s su, 'c) obj'
142    
# Line 245  Line 252 
252          val voidptr : voidptr size          val voidptr : voidptr size
253          val ptr : 'o ptr size          val ptr : 'o ptr size
254          val fptr : 'f fptr size          val fptr : 'f fptr size
255            val enum : 'tag enum size
256      end      end
257    
258      (* sub-structure for dealing with run-time type info *)      (* sub-structure for dealing with run-time type info *)
# Line 284  Line 292 
292          val double : double typ          val double : double typ
293    
294          val voidptr : voidptr typ          val voidptr : voidptr typ
295    
296            val enum : 'tag enum typ
297      end      end
298    
299      (* convert from regular (heavy) to alternative (light) versions *)      (* convert from regular (heavy) to alternative (light) versions *)
# Line 318  Line 328 
328          val ulong :  'c ulong_obj -> MLRep.Unsigned.word          val ulong :  'c ulong_obj -> MLRep.Unsigned.word
329          val float :  'c float_obj -> MLRep.Real.real          val float :  'c float_obj -> MLRep.Real.real
330          val double : 'c double_obj -> MLRep.Real.real          val double : 'c double_obj -> MLRep.Real.real
331            val enum :   ('e, 'c) enum_obj -> MLRep.Signed.int
332    
333          (* alt *)          (* alt *)
334          val schar' :  'c schar_obj' -> MLRep.Signed.int          val schar' :  'c schar_obj' -> MLRep.Signed.int
# Line 330  Line 341 
341          val ulong' :  'c ulong_obj' -> MLRep.Unsigned.word          val ulong' :  'c ulong_obj' -> MLRep.Unsigned.word
342          val float' :  'c float_obj' -> MLRep.Real.real          val float' :  'c float_obj' -> MLRep.Real.real
343          val double' : 'c double_obj' -> MLRep.Real.real          val double' : 'c double_obj' -> MLRep.Real.real
344            val enum' :   ('e, 'c) enum_obj' -> MLRep.Signed.int
345    
346          (* fetching pointers; results have to be abstract *)          (* fetching pointers; results have to be abstract *)
347          val ptr : ('o ptr, 'c) obj -> 'o ptr          val ptr : ('o ptr, 'c) obj -> 'o ptr
# Line 359  Line 371 
371          val ulong :  rw ulong_obj * MLRep.Unsigned.word -> unit          val ulong :  rw ulong_obj * MLRep.Unsigned.word -> unit
372          val float :  rw float_obj * MLRep.Real.real -> unit          val float :  rw float_obj * MLRep.Real.real -> unit
373          val double : rw double_obj * MLRep.Real.real -> unit          val double : rw double_obj * MLRep.Real.real -> unit
374            val enum :   ('e, rw) enum_obj * MLRep.Signed.int -> unit
375    
376          (* alt *)          (* alt *)
377          val schar' :  rw schar_obj' * MLRep.Signed.int -> unit          val schar' :  rw schar_obj' * MLRep.Signed.int -> unit
# Line 371  Line 384 
384          val ulong' :  rw ulong_obj' * MLRep.Unsigned.word -> unit          val ulong' :  rw ulong_obj' * MLRep.Unsigned.word -> unit
385          val float' :  rw float_obj' * MLRep.Real.real -> unit          val float' :  rw float_obj' * MLRep.Real.real -> unit
386          val double' : rw double_obj' * MLRep.Real.real -> unit          val double' : rw double_obj' * MLRep.Real.real -> unit
387            val enum' :   ('e, rw) enum_obj' * MLRep.Signed.int -> unit
388    
389          (* storing pointers; abstract *)          (* storing pointers; abstract *)
390          val ptr : ('o ptr, rw) obj * 'o ptr -> unit          val ptr : ('o ptr, rw) obj * 'o ptr -> unit
# Line 447  Line 461 
461           * type (not the element type!) *)           * type (not the element type!) *)
462          val cast : 'o ptr T.typ -> voidptr -> 'o ptr          val cast : 'o ptr T.typ -> voidptr -> 'o ptr
463    
464          (* alt *)          (* alt, needs explicit type constraint on result! *)
465          val cast' : 'o ptr T.typ -> voidptr -> 'o ptr'          val cast' : voidptr -> 'o ptr'
466    
467          (* NULL as void* *)          (* NULL as void* *)
468          val vNull : voidptr          val vNull : voidptr
# Line 510  Line 524 
524           * for unchecked access, go through arr_decay and ptr_sub *)           * for unchecked access, go through arr_decay and ptr_sub *)
525          val sub : (('t, 'n) arr, 'c) obj * int -> ('t, 'c) obj          val sub : (('t, 'n) arr, 'c) obj * int -> ('t, 'c) obj
526    
527          (* alt; needs explicit type (for array) *)          (* alt; needs element size and array dimension *)
528          val sub' : ('t, 'n) arr T.typ ->          val sub' : 't S.size * 'n Dim.dim ->
529                     (('t, 'n) arr, 'c) obj' * int -> ('t, 'c) obj'                     (('t, 'n) arr, 'c) obj' * int -> ('t, 'c) obj'
530    
531          (* let an array object decay, yielding pointer to first element *)          (* let an array object decay, yielding pointer to first element *)

Legend:
Removed from v.1095  
changed lines
  Added in v.1096

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0