public void storeMappings(IProject project, ProjectLanguageConfiguration config)
      throws CoreException {
    ICProjectDescription descriptor = getProjectDescription(project, true);
    ICStorageElement rootElement = descriptor.getStorage(LANGUAGE_MAPPING_ID, true);
    // clear all children and settings
    rootElement.clear();

    ICStorageElement projectMappings = rootElement.createChild(PROJECT_MAPPINGS);

    addProjectContentTypeMappings(config.getContentTypeMappings(), projectMappings);
    addFileMappings(config.getFileMappings(), projectMappings);
    CCorePlugin.getDefault().setProjectDescription(project, descriptor);
  }
 public ProjectLanguageConfiguration decodeMappings(IProject project) throws CoreException {
   ProjectLanguageConfiguration config = new ProjectLanguageConfiguration();
   ICProjectDescription descriptor = getProjectDescription(project, false);
   if (descriptor != null) {
     ICStorageElement rootElement = descriptor.getStorage(LANGUAGE_MAPPING_ID, false);
     if (rootElement != null) {
       ICStorageElement[] mappingElements = rootElement.getChildrenByName(PROJECT_MAPPINGS);
       if (mappingElements.length > 0) {
         ICStorageElement element = mappingElements[0];
         config.setContentTypeMappings(decodeProjectContentTypeMappings(element));
         config.setFileMappings(decodeFileMappings(element));
       }
     }
   }
   return config;
 }