cpp_to_rust 0.1.1

Automatic generator of C++ library wrappers
use std::path::PathBuf;
use std::collections::HashMap;
use std::fs::File;

extern crate serde;
extern crate serde_json;

#[derive(Debug, Clone)]
pub struct CppExtractedInfo {
  pub class_sizes: HashMap<String, i32>,
  pub enum_values: HashMap<String, HashMap<String, i32>>,
}

#[allow(dead_code)]
pub fn do_it(file_name: PathBuf) -> CppExtractedInfo {
  let f = File::open(file_name).unwrap();
  let data_value: serde_json::Value = serde_json::from_reader(f).unwrap();
  let data = data_value.as_object().unwrap();
  CppExtractedInfo {
    class_sizes: data.get("class_sizes")
      .unwrap()
      .as_object()
      .unwrap()
      .into_iter()
      .map(|(k, v)| (k.clone(), v.as_i64().unwrap() as i32))
      .collect(),
    enum_values: data.get("enum_values")
      .unwrap()
      .as_object()
      .unwrap()
      .into_iter()
      .map(|(k, v)| {
        (k.clone(),
         v.as_object()
          .unwrap()
          .into_iter()
          .map(|(k, v)| (k.clone(), v.as_i64().unwrap() as i32))
          .collect())
      })
      .collect(),
  }
}