/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/


#ifndef __com_sun_star_packages_manifest_XManifestWriter_idl__ 
#define __com_sun_star_packages_manifest_XManifestWriter_idl__ 

#ifndef __com_sun_star_beans_PropertyValue_idl__
#include <com/sun/star/beans/PropertyValue.idl> 
#endif 

#ifndef __com_sun_star_io_XOutputStream_idl__
#include <com/sun/star/io/XOutputStream.idl> 
#endif 

//============================================================================= 
 
module com {  module sun {  module star {   module packages {  module manifest {
 
/** This interface writes the manifest data to a file. The user
	calls writeManifestSequence() with the XOutputStream to write the data to
	and the sequence of manifest entries to be written passed as parameters.
	Each manifest entry is represented by a sequence of PropertyValues.*/

//============================================================================= 
published interface XManifestWriter: com::sun::star::uno::XInterface
{
	/** Writes the supplied sequence of manifest entries to the supplied
	    XOutputStream
	*/
	void writeManifestSequence([in] com::sun::star::io::XOutputStream rStream, 
							   [in] sequence < sequence < com::sun::star::beans::PropertyValue > > rSequence );
};
}; }; }; }; };
#endif 
