/*******************************************************************************
 * Copyright (c) 2009 xored software, Inc.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     xored software, Inc. - initial API and Implementation (Alex Panchenko)
 *******************************************************************************/
package org.eclipse.dltk.ui.formatter;

import java.io.File;
import java.io.InputStream;
import java.util.Collection;

import org.eclipse.core.runtime.CoreException;

public interface IProfileStore {

	void writeProfilesToFile(Collection<IProfile> profiles, File file)
			throws CoreException;

	Collection<IProfile> readProfilesFromFile(File file) throws CoreException;

	Collection<IProfile> readProfilesFromStream(InputStream is)
			throws CoreException;

}
