1use std::ops::Deref;
2use ocl;
3use clay_core::{Context};
4
5
6pub fn parse<T: Deref<Target=str>, I: Iterator<Item=T>>(args: I) -> clay_core::Result<Context> {
7 let args = args.collect::<Vec<_>>();
8 let platform = if args.len() > 1 {
9 let platform_list = ocl::Platform::list();
10 let index = args[1].parse::<usize>().map_err(|e| e.to_string())?;
11 assert!(platform_list.len() > index);
12 platform_list[index]
13 } else {
14 ocl::Platform::default()
15 };
16 let device = ocl::Device::first(platform)?;
17 let context = Context::new(platform, device)?;
18 Ok(context)
19}