/**************************************************************
 *
 * 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_script_Invocation_idl__
#define __com_sun_star_script_Invocation_idl__

#ifndef __com_sun_star_lang_XSingleServiceFactory_idl__
#include <com/sun/star/lang/XSingleServiceFactory.idl>
#endif


//=============================================================================

 module com {  module sun {  module star {  module script {

//=============================================================================
/** factory service that allows construction of Invocation objects.

	<p>Invoke createInstanceWithArguments() of XSingleServiceFactory
	to create an Invocation adapter for the passed object (Invoking
	createInstance() will fail).</p>
	<p>
	The adapter has to support <type scope="com::sun::star::script">XInvocation</type>.
	The adapter may also support <type scope="com::sun::star::script">XInvocation2</type>.
	</p>
 */
published service Invocation
{
	/// Interface to specify the object to be mapped by the invocation service.
	interface com::sun::star::lang::XSingleServiceFactory;

};

//=============================================================================

}; }; }; };

#endif
