/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   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 .
 */

#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/beans/XPropertySet.idl>
#include <com/sun/star/uno/Exception.idl>
#include <com/sun/star/uno/Any.idl>

module com { module sun { module star { module lib { module uno {
module protocols { module urp {

    struct TestPrimitiveStruct {
        boolean        zBool;
        short          zShort;
        unsigned short zUShort;
        long           zLong;
        unsigned long  zULong;
        hyper          zHyper;
        unsigned hyper zUHyper;
        float          zFloat;
        double         zDouble;
        char           zChar;
        byte           zByte;
        string         zString;
        any            zAny;
    };

    struct TestPrimitiveSeqStruct {
        sequence<boolean>        zBool;
        sequence<short>          zShort;
        sequence<unsigned short> zUShort;
        sequence<long>           zLong;
        sequence<unsigned long>  zULong;
        sequence<hyper>          zHyper;
        sequence<unsigned hyper> zUHyper;
        sequence<float>          zFloat;
        sequence<double>         zDouble;
        sequence<char>           zChar;
        sequence<byte>           zByte;
        sequence<string>         zString;
        sequence<any>            zAny;
    };

    struct TestNestedStruct {
        TestPrimitiveStruct    primitiveStruct;
        TestPrimitiveSeqStruct primitiveSeqStruct;
    };

    struct TestNestedSeqStruct {
        sequence< sequence< long > > val;
    };

    interface TestXInterface : com::sun::star::uno::XInterface {
        void method1([in] com::sun::star::uno::XInterface itf) raises( com::sun::star::uno::Exception );
        void method2([out] com::sun::star::uno::XInterface itf) raises( com::sun::star::uno::Exception );
        void method3([inout] com::sun::star::uno::XInterface itf) raises( com::sun::star::uno::Exception );
        com::sun::star::uno::XInterface method4() raises( com::sun::star::uno::Exception );

        any returnAny() raises( com::sun::star::uno::Exception );

        void  method() raises( com::sun::star::uno::Exception );
        void  methodWithInParameter([in] string text) raises( com::sun::star::uno::Exception );
        void  methodWithOutParameter([out] string text) raises( com::sun::star::uno::Exception );
        void  methodWithInOutParameter([inout] string text) raises( com::sun::star::uno::Exception );
        string  methodWithResult() raises( com::sun::star::uno::Exception );

        string MethodWithIn_Out_InOut_Paramters_and_result([in] string text, [out] string outtext, [inout] string inouttext) raises( com::sun::star::uno::Exception );
    };

    struct TestInterfaceStruct
    {
        com::sun::star::uno::XInterface hallo;

        com::sun::star::beans::XPropertySet hallo2;
    };

    enum TestEnum {
        A = 7,
        B = 8,
        C = 11
    };

}; }; }; }; }; }; };

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
