1- (* Copyright (C) 2011-2012 by ForNeVeR, Hagane
1+ (* Copyright (C) 2011-2013 by ForNeVeR, Hagane
22
33Permission is hereby granted, free of charge, to any person obtaining a copy
44of this software and associated documentation files (the "Software"), to deal
@@ -24,47 +24,27 @@ open System
2424open System.Reflection
2525open System.Reflection .Emit
2626
27- type NumberGen () =
27+ type NumberGen < 'TNumber > () =
2828 interface IGenerator with
2929 member this.Generate _ = failwith " Failure: Tried to generate unreified number constant.\n "
30- member this.ReturnTypes () = failwithf " Failure: Tried to infer type of unreified numeric constant. \n "
30+ member this.ReturnTypes () = [ typeof < 'TNumber >]
3131
3232type Int32Gen ( number : Int32 ) =
33- class
34- inherit NumberGen()
35- interface IGenerator with
36- member this.Generate ilGen =
37- ilGen.Emit( OpCodes.Ldc_ I4, number)
38- member this.ReturnTypes () =
39- [ typeof< Int32>]
40- end
33+ inherit NumberGen< Int32>()
34+ interface IGenerator with
35+ member this.Generate ilGen = ilGen.Emit( OpCodes.Ldc_ I4, number)
4136
4237type Int64Gen ( number : Int64 ) =
43- class
44- inherit NumberGen()
45- interface IGenerator with
46- member this.Generate ilGen =
47- ilGen.Emit( OpCodes.Ldc_ I8, number)
48- member this.ReturnTypes () =
49- [ typeof< Int64>]
50- end
38+ inherit NumberGen< Int64>()
39+ interface IGenerator with
40+ member this.Generate ilGen = ilGen.Emit( OpCodes.Ldc_ I8, number)
5141
5242type SingleGen ( number : Single ) =
53- class
54- inherit NumberGen()
55- interface IGenerator with
56- member this.Generate ilGen =
57- ilGen.Emit( OpCodes.Ldc_ R4, number)
58- member this.ReturnTypes () =
59- [ typeof< Single>]
60- end
43+ inherit NumberGen< Single>()
44+ interface IGenerator with
45+ member this.Generate ilGen = ilGen.Emit( OpCodes.Ldc_ R4, number)
6146
6247type DoubleGen ( number : Double ) =
63- class
64- inherit NumberGen()
65- interface IGenerator with
66- member this.Generate ilGen =
67- ilGen.Emit( OpCodes.Ldc_ R8, number)
68- member this.ReturnTypes () =
69- [ typeof< Single>]
70- end
48+ inherit NumberGen< Double>()
49+ interface IGenerator with
50+ member this.Generate ilGen = ilGen.Emit( OpCodes.Ldc_ R8, number)
0 commit comments