Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] View of /trunk/src/compiler/fields/raw-types.sml
ViewVC logotype

View of /trunk/src/compiler/fields/raw-types.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 435 - (download) (annotate)
Tue Oct 19 13:14:20 2010 UTC (8 years, 9 months ago) by jhr
File size: 1641 byte(s)
  Upated URL in header to diderot-language.cs.uchicago.edu
(* raw-types.sml
 *
 * COPYRIGHT (c) 2010 The Diderot Project (http://diderot-language.cs.uchicago.edu)
 * All rights reserved.
 *
 * This file defines the representation of the raw scalar types used to
 * define image data in the NRRD file format.
 *)

structure RawTypes =
  struct

  (* raw numeric types as supported by NRRD *)
    datatype ty
      = RT_Int8 | RT_UInt8
      | RT_Int16 | RT_UInt16
      | RT_Int32 | RT_UInt32
      | RT_Int64 | RT_UInt64
      | RT_Float | RT_Double

    fun same (a : ty, b) = (a = b)

    fun hash RT_Int8	= 0w17
      | hash RT_UInt8	= 0w59
      | hash RT_Int16	= 0w103
      | hash RT_UInt16	= 0w157
      | hash RT_Int32	= 0w211
      | hash RT_UInt32	= 0w269
      | hash RT_Int64	= 0w331
      | hash RT_UInt64	= 0w389
      | hash RT_Float	= 0w449
      | hash RT_Double	= 0w509

    fun fromString ty = (case ty
	   of "signed char" => RT_Int8
	    | "unsigned char" => RT_UInt8
	    | "short" => RT_Int16
	    | "unsigned short" => RT_UInt16
	    | "int" => RT_Int32
	    | "unsigned int" => RT_UInt32
	    | "long long int" => RT_Int64
	    | "unsigned long long int" => RT_UInt64
	    | "float" => RT_Float
	    | "double" => RT_Double
	    | _ => raise Fail("unknown raw type "^ty)
	  (* end case *))

    fun toString ty = (case ty
	   of RT_Int8 => "signed char"
	    | RT_UInt8 => "unsigned char"
	    | RT_Int16 => "short"
	    | RT_UInt16 => "unsigned short"
	    | RT_Int32 => "int"
	    | RT_UInt32 => "unsigned int"
	    | RT_Int64 => "long long int"
	    | RT_UInt64 => "unsigned long long int"
	    | RT_Float => "float"
	    | RT_Double => "double"
	  (* end case *))

  end

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