/**
 * <copyright>
 *
 * Copyright (c) 2014 itemis and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
 *
 * Contributors:
 *     itemis - Initial API and implementation
 *
 * </copyright>
 */
package org.eclipse.sphinx.emf.serialization;

import org.eclipse.emf.ecore.xmi.XMLResource;

public interface XMLPersistenceMappingResource extends XMLResource {

	/**
	 * This option allows you to tailor the XML serialization of objects. You should provide an RMFExtendedMetaData as
	 * the value of this option.
	 *
	 * @see org.eclipse.rmf.serialization.RMFExtendedMetaData
	 */
	public static final String HREF = "_href"; //$NON-NLS-1$
	public static final String OPTION_PROGRESS_MONITOR = "progress monitor"; //$NON-NLS-1$
	public static final String OPTION_NAMEPSACE_TO_PREFIX_MAP = "namespace to prefix map"; //$NON-NLS-1$

}
