use cocoa::base::id;
use std::collections::HashMap;
#[allow(unused_imports)]
use sys::MTLCompileOptions;

pub struct CompileOptions {
    pub fast_math_enabled: bool,
    pub language_version: (), // Todo(George): Make this field the right type
    pub preprocessor_macros: HashMap<String, PreprocessorMacroValue>
} 

impl CompileOptions {
    pub fn into_mtl_compile_options(self) -> id {
        unimplemented!();
    }
}

pub enum PreprocessorMacroValue {
    Numeric(f64),
    String(String)
}

use cocoa::base::id;
use std::collections::HashMap;
#[allow(unused_imports)]
use sys::MTLCompileOptions;

pub struct CompileOptions {
    pub fast_math_enabled: bool,
    pub language_version: (), // Todo(George): Make this field the right type
    pub preprocessor_macros: HashMap<String, PreprocessorMacro>
} 

impl CompileOptions {
    pub fn into_mtl_compile_options(self) -> id {
        unimplemented!();
    }
}

pub enum PreprocessorMacro {
    Integral(i64),
    String(String)
}

--- 
+++ 
@@ -6,7 +6,7 @@
 pub struct CompileOptions {
     pub fast_math_enabled: bool,
     pub language_version: (), // Todo(George): Make this field the right type
-    pub preprocessor_macros: HashMap<String, PreprocessorMacro>
+    pub preprocessor_macros: HashMap<String, PreprocessorMacroValue>
 } 
 
 impl CompileOptions {
@@ -15,7 +15,7 @@
     }
 }
 
-pub enum PreprocessorMacro {
-    Integral(i64),
+pub enum PreprocessorMacroValue {
+    Numeric(f64),
     String(String)
 }
Rename `PreprocessorMacro` type to `PreprocessorMacroValue`, and Integral preprocessor values are now called `Numeric`, and can be floats
