/*************************************************************************
 *
 *  OpenOffice.org - a multi-platform office productivity suite
 *
 *  $RCSfile: XCallback_Impl.idl,v $
 *
 *  $Revision: 1.4 $
 *
 *  last change: $Author: rt $ $Date: 2005-09-08 20:57:01 $
 *
 *  The Contents of this file are made available subject to
 *  the terms of GNU Lesser General Public License Version 2.1.
 *
 *
 *    GNU Lesser General Public License Version 2.1
 *    =============================================
 *    Copyright 2005 by Sun Microsystems, Inc.
 *    901 San Antonio Road, Palo Alto, CA 94303, USA
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License version 2.1, as published by the Free Software Foundation.
 *
 *    This library is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *    Lesser General Public License for more details.
 *
 *    You should have received a copy of the GNU Lesser General Public
 *    License along with this library; if not, write to the Free Software
 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 *    MA  02111-1307  USA
 *
 ************************************************************************/
// XCallback_Impl.idl : IDL source for XCallback_Impl.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (XCallback_Impl.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
    [
        object,
        uuid(180FF55F-6F5C-11D4-8330-005004526AB4),
        dual,
        helpstring("ICallback Interface"),
        pointer_default(unique)
    ]
    interface ICallback : IDispatch
    {
        [id(1), helpstring("method func1")] HRESULT func1();
        [id(2), helpstring("method returnInterface")] HRESULT returnInterface([out, retval] IDispatch** ppdisp);
        [id(3), helpstring("method outInterface")] HRESULT outInterface([out] IDispatch** ppdisp);
        [id(4), helpstring("method outValuesMixed")] HRESULT outValuesMixed([in] long val, [out] long* pval, [in] BSTR string);
        [id(5), helpstring("method outValuesAll")] HRESULT outValuesAll([out] IDispatch** ppdisp, [out] IDispatch** ppSimpleStruct, [out] long* aSimpleEnum,
        [out] SAFEARRAY( VARIANT)* outSeq,
        [out] VARIANT* varAny,
        [out] VARIANT_BOOL * aBool,
           [out] short* aChar,
            [out] BSTR* aString ,
            [out] float* aFloat,
            [out] double* aDouble,
            [out] unsigned char*  aByte,
            [out] short* aShort,
            [out]long* aLong);
//      );
        [id(6), helpstring("method outStruct")] HRESULT outStruct([out] IDispatch** outStruct);
        [id(7), helpstring("method outEnum")] HRESULT outEnum([out] long* outEnum);
        [id(8), helpstring("method outSeqAny")] HRESULT outSeqAny([out] SAFEARRAY( VARIANT)* outSeq);
        [id(9), helpstring("method outAny")] HRESULT outAny([out] VARIANT* outAny);
        [id(10), helpstring("method outBool")] HRESULT outBool([out]VARIANT_BOOL* outBool);
        [id(11), helpstring("method outChar")] HRESULT outChar([out] short* outChar);
        [id(12), helpstring("method outString")] HRESULT outString([out] BSTR * outString);
        [id(13), helpstring("method outFloat")] HRESULT outFloat([out] float* outFloat);
        [id(14), helpstring("method outDouble")] HRESULT outDouble([out] double* outDouble);
        [id(16), helpstring("method outShort")] HRESULT outShort([out] short *outShort);
        [id(17), helpstring("method outLong")] HRESULT outLong([out] long* outLong);
        [id(20), helpstring("method outByte")] HRESULT outByte([out] unsigned char* outByte);
        [id(21), helpstring("method inoutInterface")] HRESULT inoutInterface([in,out] IDispatch** ppdisp);
        [id(22), helpstring("method inoutStruct")] HRESULT inoutStruct([in,out] IDispatch** inoutVal);
        [id(23), helpstring("method inoutEnum")] HRESULT inoutEnum([in,out] long * inoutVal);
        [id(24), helpstring("method inoutSeqAny")] HRESULT inoutSeqAny([in,out] SAFEARRAY(VARIANT)* pArray);
        [id(25), helpstring("method inoutAny")] HRESULT inoutAny([in,out] VARIANT* inoutVal);
        [id(26), helpstring("method inoutBool")] HRESULT inoutBool([in,out] VARIANT_BOOL * inoutVal);
        [id(27), helpstring("method inoutChar")] HRESULT inoutChar([in,out] short* inoutVal);
        [id(28), helpstring("method inoutString")] HRESULT inoutString([in,out] BSTR *inoutVal);
        [id(29), helpstring("method inoutFloat")] HRESULT inoutFloat([in,out] float* inoutVal);
        [id(30), helpstring("method inoutDouble")] HRESULT inoutDouble([in,out] double* inoutVal);
        [id(31), helpstring("method inoutByte")] HRESULT inoutByte([in,out] unsigned char* inoutVal);
        [id(32), helpstring("method inoutShort")] HRESULT inoutShort([in,out] short* inoutVal);
        [id(33), helpstring("method inoutLong")] HRESULT inoutLong([in,out] long* inoutVal);
        [id(34), helpstring("method inoutValueAll")] HRESULT inoutValuesAll(
                         [in,out] IDispatch** aXSimple,
                         [in,out] IDispatch** aStruct,
                         [in,out] long* aEnum,
                         [in,out]  SAFEARRAY( VARIANT)* aSeq,
                         [in,out] VARIANT* aAny,
                         [in,out] VARIANT_BOOL* aBool,
                         [in,out] short* aChar,
                         [in,out] BSTR* aString,
                         [in,out] float* aFloat,
                         [in,out] double* aDouble,
                         [in,out] unsigned char* aByte,
                         [in,out] short* aShort,
                         [in,out] long* aLong);
        [id(35), helpstring("method inValues")] HRESULT inValues([in]short aChar, [in] long aLong, [in] BSTR aString);
        [id(36), helpstring("method outSeqByte")] HRESULT outSeqByte([out] SAFEARRAY(unsigned char)* outVal);
        [id(37), helpstring("method inSeqByte")] HRESULT inSeqByte([in] SAFEARRAY(VARIANT) val);
        [id(38), helpstring("method inSeqXEventListener")] HRESULT inSeqXEventListener([in] SAFEARRAY(VARIANT) listener,
                                                                        [in] SAFEARRAY(VARIANT) event);

    };
    [
        object,
        uuid(180FF564-6F5C-11D4-8330-005004526AB4),
        dual,
        helpstring("ISimple Interface"),
        pointer_default(unique)
    ]
    interface ISimple : IDispatch
    {
        [id(1), helpstring("method func")] HRESULT func( [in] BSTR message);
        [id(2), helpstring("method func2")] HRESULT func2([in] BSTR message);
        [id(3), helpstring("method func3")] HRESULT func3([in] BSTR message);
        [propget, id(4), helpstring("property _implementedInterfaces")] HRESULT _implementedInterfaces([out, retval] SAFEARRAY(BSTR) *pVal);
    };



[
    uuid(180FF553-6F5C-11D4-8330-005004526AB4),
    version(1.0),
    helpstring("XCallback_Impl 1.0 Type Library")
]
library XCALLBACK_IMPLLib
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    [
        uuid(180FF560-6F5C-11D4-8330-005004526AB4),
        helpstring("Callback Class")
    ]
    coclass Callback
    {
        [default] interface ICallback;
    };
    [
        uuid(180FF565-6F5C-11D4-8330-005004526AB4),
        helpstring("Simple Class")
    ]
    coclass Simple
    {
        [default] interface ISimple;
    };
};


