1*cdf0e10cSrcweir/*************************************************************************
2*cdf0e10cSrcweir *
3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir *
5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir *
7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir *
9*cdf0e10cSrcweir * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir *
11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir *
15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir *
21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir *
26*cdf0e10cSrcweir ************************************************************************/
27*cdf0e10cSrcweir
28*cdf0e10cSrcweir#include "com/sun/star/lang/IllegalArgumentException.idl"
29*cdf0e10cSrcweir#include "com/sun/star/lang/XComponent.idl"
30*cdf0e10cSrcweir#include "com/sun/star/uno/XComponentContext.idl"
31*cdf0e10cSrcweir#include "com/sun/star/uno/XInterface.idl"
32*cdf0e10cSrcweir
33*cdf0e10cSrcweirmodule test { module testtools { module bridgetest {
34*cdf0e10cSrcweir
35*cdf0e10cSrcweirenum TestEnum
36*cdf0e10cSrcweir{
37*cdf0e10cSrcweir    TEST,
38*cdf0e10cSrcweir    ONE,
39*cdf0e10cSrcweir    TWO,
40*cdf0e10cSrcweir    CHECK,
41*cdf0e10cSrcweir    LOLA,
42*cdf0e10cSrcweir    PALOO,
43*cdf0e10cSrcweir    ZA
44*cdf0e10cSrcweir};
45*cdf0e10cSrcweir
46*cdf0e10cSrcweirenum TestBadEnum { M = 1 };
47*cdf0e10cSrcweir
48*cdf0e10cSrcweirstruct TestStruct
49*cdf0e10cSrcweir{
50*cdf0e10cSrcweir    long member;
51*cdf0e10cSrcweir};
52*cdf0e10cSrcweir
53*cdf0e10cSrcweir/**
54*cdf0e10cSrcweir * simple types
55*cdf0e10cSrcweir */
56*cdf0e10cSrcweirstruct TestSimple
57*cdf0e10cSrcweir{
58*cdf0e10cSrcweir    boolean                    Bool;
59*cdf0e10cSrcweir    char                       Char;
60*cdf0e10cSrcweir    byte                       Byte;
61*cdf0e10cSrcweir    short                      Short;
62*cdf0e10cSrcweir    unsigned short             UShort;
63*cdf0e10cSrcweir    long                       Long;
64*cdf0e10cSrcweir    unsigned long              ULong;
65*cdf0e10cSrcweir    hyper                      Hyper;
66*cdf0e10cSrcweir    unsigned hyper             UHyper;
67*cdf0e10cSrcweir    float                      Float;
68*cdf0e10cSrcweir    double                     Double;
69*cdf0e10cSrcweir    TestEnum                   Enum;
70*cdf0e10cSrcweir};
71*cdf0e10cSrcweir/**
72*cdf0e10cSrcweir * equal to max size returned in registers on x86_64
73*cdf0e10cSrcweir */
74*cdf0e10cSrcweirstruct SmallStruct
75*cdf0e10cSrcweir{
76*cdf0e10cSrcweir    hyper                      a;
77*cdf0e10cSrcweir    hyper                      b;
78*cdf0e10cSrcweir};
79*cdf0e10cSrcweir/**
80*cdf0e10cSrcweir * equal to max size returned in registers on ia64
81*cdf0e10cSrcweir */
82*cdf0e10cSrcweirstruct MediumStruct
83*cdf0e10cSrcweir{
84*cdf0e10cSrcweir    hyper                      a;
85*cdf0e10cSrcweir    hyper                      b;
86*cdf0e10cSrcweir    hyper                      c;
87*cdf0e10cSrcweir    hyper                      d;
88*cdf0e10cSrcweir};
89*cdf0e10cSrcweir/**
90*cdf0e10cSrcweir * bigger than max size returned in registers on ia64
91*cdf0e10cSrcweir */
92*cdf0e10cSrcweirstruct BigStruct
93*cdf0e10cSrcweir{
94*cdf0e10cSrcweir    hyper                      a;
95*cdf0e10cSrcweir    hyper                      b;
96*cdf0e10cSrcweir    hyper                      c;
97*cdf0e10cSrcweir    hyper                      d;
98*cdf0e10cSrcweir    hyper                      e;
99*cdf0e10cSrcweir    hyper                      f;
100*cdf0e10cSrcweir    hyper                      g;
101*cdf0e10cSrcweir    hyper                      h;
102*cdf0e10cSrcweir};
103*cdf0e10cSrcweir/**
104*cdf0e10cSrcweir * all floats, ia64 handles them specially
105*cdf0e10cSrcweir */
106*cdf0e10cSrcweirstruct AllFloats
107*cdf0e10cSrcweir{
108*cdf0e10cSrcweir    float                      a;
109*cdf0e10cSrcweir    float                      b;
110*cdf0e10cSrcweir    float                      c;
111*cdf0e10cSrcweir    float                      d;
112*cdf0e10cSrcweir};
113*cdf0e10cSrcweir/**
114*cdf0e10cSrcweir * complex types adding string, inteface, any
115*cdf0e10cSrcweir */
116*cdf0e10cSrcweirstruct TestElement : TestSimple
117*cdf0e10cSrcweir{
118*cdf0e10cSrcweir    string                     String;
119*cdf0e10cSrcweir    com::sun::star::uno::XInterface   Interface;
120*cdf0e10cSrcweir    any                        Any;
121*cdf0e10cSrcweir};
122*cdf0e10cSrcweir/**
123*cdf0e10cSrcweir * adding even more complexity, sequence< TestElement >
124*cdf0e10cSrcweir */
125*cdf0e10cSrcweirstruct TestDataElements : TestElement
126*cdf0e10cSrcweir{
127*cdf0e10cSrcweir    sequence< TestElement > Sequence;
128*cdf0e10cSrcweir};
129*cdf0e10cSrcweir
130*cdf0e10cSrcweir/**
131*cdf0e10cSrcweir * typedef used in interface
132*cdf0e10cSrcweir */
133*cdf0e10cSrcweirtypedef TestDataElements TestData;
134*cdf0e10cSrcweir
135*cdf0e10cSrcweirstruct TestPolyStruct<T> { T member; };
136*cdf0e10cSrcweirstruct TestPolyStruct2<T,C> {
137*cdf0e10cSrcweir    T member1;
138*cdf0e10cSrcweir    C member2;
139*cdf0e10cSrcweir};
140*cdf0e10cSrcweir
141*cdf0e10cSrcweirinterface XRecursiveCall : com::sun::star::uno::XInterface
142*cdf0e10cSrcweir{
143*cdf0e10cSrcweir    /***
144*cdf0e10cSrcweir     * @param nToCall If nToCall is 0, the method returns immeadiatly.
145*cdf0e10cSrcweir     *                Otherwise, call the given interface with nToCall -1
146*cdf0e10cSrcweir     *
147*cdf0e10cSrcweir     ***/
148*cdf0e10cSrcweir    void callRecursivly( [in] XRecursiveCall xCall , [in] long nToCall );
149*cdf0e10cSrcweir};
150*cdf0e10cSrcweir
151*cdf0e10cSrcweirinterface XMultiBase1 {
152*cdf0e10cSrcweir    [attribute] double att1; // initially 0.0
153*cdf0e10cSrcweir    long fn11([in] long arg); // return 11 * arg
154*cdf0e10cSrcweir    string fn12([in] string arg); // return "12" + arg
155*cdf0e10cSrcweir};
156*cdf0e10cSrcweir
157*cdf0e10cSrcweirinterface XMultiBase2: XMultiBase1 {
158*cdf0e10cSrcweir    long fn21([in] long arg); // return 21 * arg
159*cdf0e10cSrcweir    string fn22([in] string arg); // return "22" + arg
160*cdf0e10cSrcweir};
161*cdf0e10cSrcweir
162*cdf0e10cSrcweirinterface XMultiBase3 {
163*cdf0e10cSrcweir    [attribute] double att3; // initially 0.0
164*cdf0e10cSrcweir    long fn31([in] long arg); // return 31 * arg
165*cdf0e10cSrcweir    string fn32([in] string arg); // return "32" + arg
166*cdf0e10cSrcweir    long fn33(); // return 33
167*cdf0e10cSrcweir};
168*cdf0e10cSrcweir
169*cdf0e10cSrcweirinterface XMultiBase3a: XMultiBase3 {};
170*cdf0e10cSrcweir
171*cdf0e10cSrcweirinterface XMultiBase4 {
172*cdf0e10cSrcweir    long fn41([in] long arg); // return 41 * arg
173*cdf0e10cSrcweir};
174*cdf0e10cSrcweir
175*cdf0e10cSrcweirinterface XMultiBase5 {
176*cdf0e10cSrcweir    interface XMultiBase3;
177*cdf0e10cSrcweir    interface XMultiBase4;
178*cdf0e10cSrcweir    interface XMultiBase1;
179*cdf0e10cSrcweir};
180*cdf0e10cSrcweir
181*cdf0e10cSrcweirinterface XMultiBase6 {
182*cdf0e10cSrcweir    interface XMultiBase2;
183*cdf0e10cSrcweir    interface XMultiBase3a;
184*cdf0e10cSrcweir    interface XMultiBase5;
185*cdf0e10cSrcweir    long fn61([in] long arg); // return 61 * arg
186*cdf0e10cSrcweir    string fn62([in] string arg); // return "62" + arg
187*cdf0e10cSrcweir};
188*cdf0e10cSrcweir
189*cdf0e10cSrcweirinterface XMultiBase7 {
190*cdf0e10cSrcweir    long fn71([in] long arg); // return 71 * arg
191*cdf0e10cSrcweir    string fn72([in] string arg); // return "72" + arg
192*cdf0e10cSrcweir    long fn73(); // return 73
193*cdf0e10cSrcweir};
194*cdf0e10cSrcweir
195*cdf0e10cSrcweirinterface XMulti {
196*cdf0e10cSrcweir    interface XMultiBase6;
197*cdf0e10cSrcweir    interface XMultiBase7;
198*cdf0e10cSrcweir};
199*cdf0e10cSrcweir
200*cdf0e10cSrcweir/**
201*cdf0e10cSrcweir * Monster test interface to test bridge calls.
202*cdf0e10cSrcweir * An implementation of this object has to store given values and return whenever there
203*cdf0e10cSrcweir * is an out param or return value.
204*cdf0e10cSrcweir */
205*cdf0e10cSrcweirinterface XBridgeTestBase : com::sun::star::uno::XInterface
206*cdf0e10cSrcweir{
207*cdf0e10cSrcweir    /**
208*cdf0e10cSrcweir     * in parameter test, tests by calls reference also (complex types)
209*cdf0e10cSrcweir     */
210*cdf0e10cSrcweir    [oneway] void setValues( [in] boolean bBool, [in] char cChar, [in] byte nByte,
211*cdf0e10cSrcweir                             [in] short nShort, [in] unsigned short nUShort,
212*cdf0e10cSrcweir                             [in] long nLong, [in] unsigned long nULong,
213*cdf0e10cSrcweir                             [in] hyper nHyper, [in] unsigned hyper nUHyper,
214*cdf0e10cSrcweir                             [in] float fFloat, [in] double fDouble,
215*cdf0e10cSrcweir                             [in] TestEnum eEnum, [in] string aString,
216*cdf0e10cSrcweir                             [in] com::sun::star::uno::XInterface xInterface, [in] any aAny,
217*cdf0e10cSrcweir                             [in] sequence< TestElement > aSequence,
218*cdf0e10cSrcweir                             [in] TestData aStruct );
219*cdf0e10cSrcweir    /**
220*cdf0e10cSrcweir     * inout parameter test
221*cdf0e10cSrcweir     *
222*cdf0e10cSrcweir     * @return aStruct. The out parameter contain the values, that were previously set
223*cdf0e10cSrcweir     *         by setValues or (if not called before) default constructed values.
224*cdf0e10cSrcweir     *
225*cdf0e10cSrcweir     */
226*cdf0e10cSrcweir    TestData setValues2( [inout] boolean bBool, [inout] char cChar, [inout] byte nByte,
227*cdf0e10cSrcweir                         [inout] short nShort, [inout] unsigned short nUShort,
228*cdf0e10cSrcweir                         [inout] long nLong, [inout] unsigned long nULong,
229*cdf0e10cSrcweir                         [inout] hyper nHyper, [inout] unsigned hyper nUHyper,
230*cdf0e10cSrcweir                         [inout] float fFloat, [inout] double fDouble,
231*cdf0e10cSrcweir                         [inout] TestEnum eEnum, [inout] string aString,
232*cdf0e10cSrcweir                         [inout] com::sun::star::uno::XInterface xInterface, [inout] any aAny,
233*cdf0e10cSrcweir                         [inout] sequence< TestElement > aSequence,
234*cdf0e10cSrcweir                         [inout] TestData aStruct );
235*cdf0e10cSrcweir
236*cdf0e10cSrcweir    /**
237*cdf0e10cSrcweir     * out parameter test
238*cdf0e10cSrcweir     */
239*cdf0e10cSrcweir    TestData getValues( [out] boolean bBool, [out] char cChar, [out] byte nByte,
240*cdf0e10cSrcweir                        [out] short nShort, [out] unsigned short nUShort,
241*cdf0e10cSrcweir                        [out] long nLong, [out] unsigned long nULong,
242*cdf0e10cSrcweir                        [out] hyper nHyper, [out] unsigned hyper nUHyper,
243*cdf0e10cSrcweir                        [out] float fFloat, [out] double fDouble,
244*cdf0e10cSrcweir                        [out] TestEnum eEnum, [out] string aString,
245*cdf0e10cSrcweir                        [out] com::sun::star::uno::XInterface xInterface, [out] any aAny,
246*cdf0e10cSrcweir                        [out] sequence< TestElement > aSequence,
247*cdf0e10cSrcweir                        [out] TestData aStruct );
248*cdf0e10cSrcweir
249*cdf0e10cSrcweir    /**
250*cdf0e10cSrcweir     * register return test 1
251*cdf0e10cSrcweir     */
252*cdf0e10cSrcweir    SmallStruct echoSmallStruct( [in] SmallStruct aStruct );
253*cdf0e10cSrcweir
254*cdf0e10cSrcweir    /**
255*cdf0e10cSrcweir     * register return test 2
256*cdf0e10cSrcweir     */
257*cdf0e10cSrcweir    MediumStruct echoMediumStruct( [in] MediumStruct aStruct );
258*cdf0e10cSrcweir
259*cdf0e10cSrcweir    /**
260*cdf0e10cSrcweir     * register return test 3
261*cdf0e10cSrcweir     */
262*cdf0e10cSrcweir    BigStruct echoBigStruct( [in] BigStruct aStruct );
263*cdf0e10cSrcweir
264*cdf0e10cSrcweir    /**
265*cdf0e10cSrcweir     * register return test 4
266*cdf0e10cSrcweir     */
267*cdf0e10cSrcweir    AllFloats echoAllFloats( [in] AllFloats aStruct );
268*cdf0e10cSrcweir
269*cdf0e10cSrcweir    /**
270*cdf0e10cSrcweir     * register return test 4 (i107182)
271*cdf0e10cSrcweir     */
272*cdf0e10cSrcweir    long testPPCAlignment( [in] hyper l1, [in] hyper l2, [in] long i1, [in] hyper l3, [in] long i2 );
273*cdf0e10cSrcweir
274*cdf0e10cSrcweir    [attribute] boolean                  Bool;
275*cdf0e10cSrcweir    [attribute] byte                     Byte;
276*cdf0e10cSrcweir    [attribute] char                     Char;
277*cdf0e10cSrcweir    [attribute] short                    Short;
278*cdf0e10cSrcweir    [attribute] unsigned short           UShort;
279*cdf0e10cSrcweir    [attribute] long                     Long;
280*cdf0e10cSrcweir    [attribute] unsigned long            ULong;
281*cdf0e10cSrcweir    [attribute] hyper                    Hyper;
282*cdf0e10cSrcweir    [attribute] unsigned hyper           UHyper;
283*cdf0e10cSrcweir    [attribute] float                    Float;
284*cdf0e10cSrcweir    [attribute] double                   Double;
285*cdf0e10cSrcweir    [attribute] TestEnum                 Enum;
286*cdf0e10cSrcweir    [attribute] string                   String;
287*cdf0e10cSrcweir    [attribute] com::sun::star::uno::XInterface Interface;
288*cdf0e10cSrcweir    [attribute] any                      Any;
289*cdf0e10cSrcweir    [attribute] sequence< TestElement >  Sequence;
290*cdf0e10cSrcweir    [attribute] TestData                 Struct;
291*cdf0e10cSrcweir
292*cdf0e10cSrcweir    [attribute] long RaiseAttr1 {
293*cdf0e10cSrcweir        set raises (com::sun::star::lang::IllegalArgumentException);
294*cdf0e10cSrcweir    };
295*cdf0e10cSrcweir    [attribute, readonly] long RaiseAttr2 {
296*cdf0e10cSrcweir        get raises (com::sun::star::lang::IllegalArgumentException);
297*cdf0e10cSrcweir    };
298*cdf0e10cSrcweir
299*cdf0e10cSrcweir    TestPolyStruct<boolean> transportPolyBoolean(
300*cdf0e10cSrcweir        [in] TestPolyStruct<boolean> arg);
301*cdf0e10cSrcweir    void transportPolyHyper([inout] TestPolyStruct<hyper> arg);
302*cdf0e10cSrcweir    void transportPolySequence(
303*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<any> > arg1,
304*cdf0e10cSrcweir        [out] TestPolyStruct<sequence<any> > arg2);
305*cdf0e10cSrcweir
306*cdf0e10cSrcweir    TestPolyStruct<long> getNullPolyLong();
307*cdf0e10cSrcweir    TestPolyStruct<string> getNullPolyString();
308*cdf0e10cSrcweir    TestPolyStruct<type> getNullPolyType();
309*cdf0e10cSrcweir    TestPolyStruct<any> getNullPolyAny();
310*cdf0e10cSrcweir    TestPolyStruct<sequence<boolean> > getNullPolySequence();
311*cdf0e10cSrcweir    TestPolyStruct<TestEnum> getNullPolyEnum();
312*cdf0e10cSrcweir    TestPolyStruct<TestBadEnum> getNullPolyBadEnum();
313*cdf0e10cSrcweir    TestPolyStruct<TestStruct> getNullPolyStruct();
314*cdf0e10cSrcweir    TestPolyStruct<XBridgeTestBase> getNullPolyInterface();
315*cdf0e10cSrcweir
316*cdf0e10cSrcweir    /***
317*cdf0e10cSrcweir     * This method returns the parameter value.
318*cdf0e10cSrcweir     * Method to extensivly test anys.
319*cdf0e10cSrcweir     ****/
320*cdf0e10cSrcweir    any transportAny( [in] any value );
321*cdf0e10cSrcweir
322*cdf0e10cSrcweir    /***
323*cdf0e10cSrcweir     * methods to check sequence of calls. Call call() and callOneway
324*cdf0e10cSrcweir     * in an arbitrary sequence. Increase the callId for every call.
325*cdf0e10cSrcweir     * The testobject sets an error flag.
326*cdf0e10cSrcweir
327*cdf0e10cSrcweir        @see testSequencePassed
328*cdf0e10cSrcweir     ***/
329*cdf0e10cSrcweir    void call( [in] long nCallId, [in] long nWaitMUSEC );
330*cdf0e10cSrcweir    [oneway] void callOneway( [in] long nCallId, [in] long nWaitMUSEC );
331*cdf0e10cSrcweir    boolean sequenceOfCallTestPassed();
332*cdf0e10cSrcweir
333*cdf0e10cSrcweir    /****
334*cdf0e10cSrcweir     * methods to check, if threads thread identity is holded.
335*cdf0e10cSrcweir     *
336*cdf0e10cSrcweir     ***/
337*cdf0e10cSrcweir    void startRecursiveCall( [in] XRecursiveCall xCall , [in] long nToCall );
338*cdf0e10cSrcweir
339*cdf0e10cSrcweir    XMulti getMulti();
340*cdf0e10cSrcweir    string testMulti([in] XMulti multi);
341*cdf0e10cSrcweir};
342*cdf0e10cSrcweir
343*cdf0e10cSrcweir
344*cdf0e10cSrcweir/**
345*cdf0e10cSrcweir * Inherting from monster; adds raiseException(), attribute raising RuntimeException.
346*cdf0e10cSrcweir */
347*cdf0e10cSrcweirinterface XBridgeTest : XBridgeTestBase
348*cdf0e10cSrcweir{
349*cdf0e10cSrcweir    /**
350*cdf0e10cSrcweir     * the exception struct returned has to be filled with given arguments.
351*cdf0e10cSrcweir     * return value is for dummy.
352*cdf0e10cSrcweir     */
353*cdf0e10cSrcweir    TestData raiseException( [in] short ArgumentPosition,
354*cdf0e10cSrcweir                             [in] string Message,
355*cdf0e10cSrcweir                             [in] com::sun::star::uno::XInterface Context )
356*cdf0e10cSrcweir        raises( com::sun::star::lang::IllegalArgumentException );
357*cdf0e10cSrcweir
358*cdf0e10cSrcweir
359*cdf0e10cSrcweir    /**
360*cdf0e10cSrcweir     * Throws runtime exception.
361*cdf0e10cSrcweir     * check remote bridges handle exceptions during oneway calls properly.
362*cdf0e10cSrcweir     * Note that on client side the execption may fly or not. When it flies, it should
363*cdf0e10cSrcweir     * have the proper message and context.
364*cdf0e10cSrcweir     ***/
365*cdf0e10cSrcweir    [oneway] void raiseRuntimeExceptionOneway(  [in] string Message,
366*cdf0e10cSrcweir                                                [in] com::sun::star::uno::XInterface Context );
367*cdf0e10cSrcweir
368*cdf0e10cSrcweir    /**
369*cdf0e10cSrcweir     * raises runtime exception;
370*cdf0e10cSrcweir     * the exception struct returned has to be filled with formerly set test data.
371*cdf0e10cSrcweir     */
372*cdf0e10cSrcweir    [attribute] long                     RuntimeException;
373*cdf0e10cSrcweir};
374*cdf0e10cSrcweir
375*cdf0e10cSrcweir
376*cdf0e10cSrcweirexception BadConstructorArguments: com::sun::star::uno::Exception {};
377*cdf0e10cSrcweir
378*cdf0e10cSrcweirservice Constructors: com::sun::star::uno::XInterface {
379*cdf0e10cSrcweir    create1(
380*cdf0e10cSrcweir        [in] boolean arg0,
381*cdf0e10cSrcweir        [in] byte arg1,
382*cdf0e10cSrcweir        [in] short arg2,
383*cdf0e10cSrcweir        [in] unsigned short arg3,
384*cdf0e10cSrcweir        [in] long arg4,
385*cdf0e10cSrcweir        [in] unsigned long arg5,
386*cdf0e10cSrcweir        [in] hyper arg6,
387*cdf0e10cSrcweir        [in] unsigned hyper arg7,
388*cdf0e10cSrcweir        [in] float arg8,
389*cdf0e10cSrcweir        [in] double arg9,
390*cdf0e10cSrcweir        [in] char arg10,
391*cdf0e10cSrcweir        [in] string arg11,
392*cdf0e10cSrcweir        [in] type arg12,
393*cdf0e10cSrcweir        [in] any arg13,
394*cdf0e10cSrcweir        [in] sequence< boolean > arg14,
395*cdf0e10cSrcweir        [in] sequence< byte > arg15,
396*cdf0e10cSrcweir        [in] sequence< short > arg16,
397*cdf0e10cSrcweir        [in] sequence< unsigned short > arg17,
398*cdf0e10cSrcweir        [in] sequence< long > arg18,
399*cdf0e10cSrcweir        [in] sequence< unsigned long > arg19,
400*cdf0e10cSrcweir        [in] sequence< hyper > arg20,
401*cdf0e10cSrcweir        [in] sequence< unsigned hyper > arg21,
402*cdf0e10cSrcweir        [in] sequence< float > arg22,
403*cdf0e10cSrcweir        [in] sequence< double > arg23,
404*cdf0e10cSrcweir        [in] sequence< char > arg24,
405*cdf0e10cSrcweir        [in] sequence< string > arg25,
406*cdf0e10cSrcweir        [in] sequence< type > arg26,
407*cdf0e10cSrcweir        [in] sequence< any > arg27,
408*cdf0e10cSrcweir        [in] sequence< sequence< boolean > > arg28,
409*cdf0e10cSrcweir        [in] sequence< sequence< any > > arg29,
410*cdf0e10cSrcweir        [in] sequence< TestEnum > arg30,
411*cdf0e10cSrcweir        [in] sequence< TestStruct > arg31,
412*cdf0e10cSrcweir        [in] sequence< TestPolyStruct< boolean > > arg32,
413*cdf0e10cSrcweir        [in] sequence< TestPolyStruct< any > > arg33,
414*cdf0e10cSrcweir        [in] sequence< com::sun::star::uno::XInterface > arg34,
415*cdf0e10cSrcweir        [in] TestEnum arg35,
416*cdf0e10cSrcweir        [in] TestStruct arg36,
417*cdf0e10cSrcweir        [in] TestPolyStruct< boolean > arg37,
418*cdf0e10cSrcweir        [in] TestPolyStruct< any > arg38,
419*cdf0e10cSrcweir        [in] com::sun::star::uno::XInterface arg39)
420*cdf0e10cSrcweir        raises (BadConstructorArguments);
421*cdf0e10cSrcweir
422*cdf0e10cSrcweir    create2([in] any... args) raises (BadConstructorArguments);
423*cdf0e10cSrcweir
424*cdf0e10cSrcweir};
425*cdf0e10cSrcweir
426*cdf0e10cSrcweirservice Constructors2: XMultiBase1 {
427*cdf0e10cSrcweir
428*cdf0e10cSrcweir    create1(
429*cdf0e10cSrcweir        [in] TestPolyStruct<type> arg1,
430*cdf0e10cSrcweir        [in] TestPolyStruct<any> arg2,
431*cdf0e10cSrcweir        [in] TestPolyStruct<boolean> arg3,
432*cdf0e10cSrcweir        [in] TestPolyStruct<byte> arg4,
433*cdf0e10cSrcweir        [in] TestPolyStruct<short> arg5,
434*cdf0e10cSrcweir        [in] TestPolyStruct<long> arg6,
435*cdf0e10cSrcweir        [in] TestPolyStruct<hyper> arg7,
436*cdf0e10cSrcweir        [in] TestPolyStruct<char> arg8,
437*cdf0e10cSrcweir        [in] TestPolyStruct<string> arg9,
438*cdf0e10cSrcweir        [in] TestPolyStruct<float> arg10,
439*cdf0e10cSrcweir        [in] TestPolyStruct<double> arg11,
440*cdf0e10cSrcweir        [in] TestPolyStruct<com::sun::star::uno::XInterface> arg12,
441*cdf0e10cSrcweir        [in] TestPolyStruct<com::sun::star::lang::XComponent> arg13,
442*cdf0e10cSrcweir        [in] TestPolyStruct<TestEnum> arg14,
443*cdf0e10cSrcweir        [in] TestPolyStruct<TestPolyStruct2<char,any> > arg15,
444*cdf0e10cSrcweir        [in] TestPolyStruct<TestPolyStruct2<TestPolyStruct2<char,any>,string> > arg16,
445*cdf0e10cSrcweir        [in] TestPolyStruct2<string, TestPolyStruct2<char, TestPolyStruct<any> > > arg17,
446*cdf0e10cSrcweir        [in] TestPolyStruct2<TestPolyStruct2<char,any>, TestPolyStruct<char> > arg18,
447*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<type> > arg19,
448*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<any> > arg20,
449*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<boolean> > arg21,
450*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<byte> > arg22,
451*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<short> > arg23,
452*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<long> > arg24,
453*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<hyper> > arg25,
454*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<char> > arg26,
455*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<string> > arg27,
456*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<float> > arg28,
457*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<double> > arg29,
458*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<com::sun::star::uno::XInterface> > arg30,
459*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<com::sun::star::lang::XComponent> > arg31,
460*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<TestEnum> > arg32,
461*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<TestPolyStruct2<char, sequence<any> > > > arg33,
462*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<TestPolyStruct2<TestPolyStruct<char>, sequence<any> > > > arg34,
463*cdf0e10cSrcweir        [in] TestPolyStruct<sequence<sequence<long> > > arg35,
464*cdf0e10cSrcweir        [in] sequence<TestPolyStruct<long > > arg36,
465*cdf0e10cSrcweir        [in] sequence<TestPolyStruct<TestPolyStruct2<char,any> > > arg37,
466*cdf0e10cSrcweir        [in] sequence<TestPolyStruct<TestPolyStruct2<TestPolyStruct2<char,any>,string> > > arg38,
467*cdf0e10cSrcweir        [in] sequence<TestPolyStruct2<string, TestPolyStruct2<char, TestPolyStruct<any> > > > arg39,
468*cdf0e10cSrcweir        [in] sequence<TestPolyStruct2<TestPolyStruct2<char,any>, TestPolyStruct<char> > > arg40,
469*cdf0e10cSrcweir        [in] sequence<sequence<TestPolyStruct< char > > > arg41,
470*cdf0e10cSrcweir        [in] sequence<sequence<TestPolyStruct<TestPolyStruct2<char,any> > > >arg42,
471*cdf0e10cSrcweir        [in] sequence<sequence<TestPolyStruct<TestPolyStruct2<TestPolyStruct2<char,any>,string> > > > arg43,
472*cdf0e10cSrcweir        [in] sequence<sequence<TestPolyStruct2<string, TestPolyStruct2<char, TestPolyStruct<any> > > > > arg44,
473*cdf0e10cSrcweir        [in] sequence<sequence<TestPolyStruct2<TestPolyStruct2<char,any>, TestPolyStruct<char> > > > arg45
474*cdf0e10cSrcweir        );
475*cdf0e10cSrcweir};
476*cdf0e10cSrcweir
477*cdf0e10cSrcweirinterface XCurrentContextChecker {
478*cdf0e10cSrcweir    boolean perform(
479*cdf0e10cSrcweir        [in] XCurrentContextChecker other, [in] long setSteps,
480*cdf0e10cSrcweir        [in] long checkSteps);
481*cdf0e10cSrcweir};
482*cdf0e10cSrcweir
483*cdf0e10cSrcweir/** Extended tests with sequences.
484*cdf0e10cSrcweir */
485*cdf0e10cSrcweirinterface XBridgeTest2 : XBridgeTest
486*cdf0e10cSrcweir{
487*cdf0e10cSrcweir    sequence< boolean > setSequenceBool( [in] sequence< boolean > aSeq);
488*cdf0e10cSrcweir    sequence< char > setSequenceChar( [in] sequence< char > aSeq);
489*cdf0e10cSrcweir    sequence< byte> setSequenceByte( [in] sequence< byte > aSeq);
490*cdf0e10cSrcweir    sequence< short> setSequenceShort( [in] sequence< short > aSeq);
491*cdf0e10cSrcweir    sequence< unsigned short > setSequenceUShort( [in] sequence< unsigned short > aSeq);
492*cdf0e10cSrcweir    sequence< long > setSequenceLong( [in] sequence< long > aSeq);
493*cdf0e10cSrcweir    sequence< unsigned long > setSequenceULong( [in] sequence< unsigned long > aSeq);
494*cdf0e10cSrcweir    sequence< hyper > setSequenceHyper( [in] sequence< hyper > aSeq);
495*cdf0e10cSrcweir    sequence< unsigned hyper > setSequenceUHyper( [in] sequence< unsigned hyper > aSeq);
496*cdf0e10cSrcweir    sequence< float > setSequenceFloat( [in] sequence< float > aSeq);
497*cdf0e10cSrcweir    sequence< double > setSequenceDouble( [in] sequence< double > aSeq);
498*cdf0e10cSrcweir    sequence< TestEnum > setSequenceEnum( [in] sequence< TestEnum > aSeq);
499*cdf0e10cSrcweir    sequence< string > setSequenceString( [in] sequence< string > aString);
500*cdf0e10cSrcweir    sequence< com::sun::star::uno::XInterface > setSequenceXInterface(
501*cdf0e10cSrcweir        [in] sequence< com::sun::star::uno::XInterface > aSeq);
502*cdf0e10cSrcweir    sequence< any > setSequenceAny( [in] sequence< any > aSeq);
503*cdf0e10cSrcweir    sequence< TestElement > setSequenceStruct( [in] sequence< TestElement > aSeq);
504*cdf0e10cSrcweir
505*cdf0e10cSrcweir    sequence< sequence< long > > setDim2( [in] sequence< sequence< long > > aSeq);
506*cdf0e10cSrcweir    sequence< sequence < sequence < long > > > setDim3(
507*cdf0e10cSrcweir        [in] sequence< sequence < sequence < long > > > aSeq);
508*cdf0e10cSrcweir
509*cdf0e10cSrcweir    void setSequencesInOut( [inout] sequence< boolean > aSeqBoolean,
510*cdf0e10cSrcweir                       [inout] sequence< char > aSeqChar,
511*cdf0e10cSrcweir                       [inout] sequence< byte > aSeqByte,
512*cdf0e10cSrcweir                       [inout] sequence< short > aSeqShort,
513*cdf0e10cSrcweir                       [inout] sequence< unsigned short> aSeqUShort,
514*cdf0e10cSrcweir                       [inout] sequence< long > aSeqLong,
515*cdf0e10cSrcweir                       [inout] sequence< unsigned long > aSeqULong,
516*cdf0e10cSrcweir                       [inout] sequence< hyper > aSeqHyper,
517*cdf0e10cSrcweir                       [inout] sequence< unsigned hyper > aSeqUHyper,
518*cdf0e10cSrcweir                       [inout] sequence< float > aSeqFloat,
519*cdf0e10cSrcweir                       [inout] sequence< double > aSeqDouble,
520*cdf0e10cSrcweir                       [inout] sequence< TestEnum > aSeqEnum,
521*cdf0e10cSrcweir                       [inout] sequence< string > aSeqString,
522*cdf0e10cSrcweir                       [inout] sequence< com::sun::star::uno::XInterface > aSeqXInterface,
523*cdf0e10cSrcweir                       [inout] sequence< any > aSeqAny,
524*cdf0e10cSrcweir                       [inout] sequence< sequence< long > > aSeqDim2,
525*cdf0e10cSrcweir                       [inout] sequence< sequence < sequence < long > > > aSeqDim3);
526*cdf0e10cSrcweir
527*cdf0e10cSrcweir    void setSequencesOut( [out] sequence< boolean > aSeqBoolean,
528*cdf0e10cSrcweir                       [out] sequence< char > aSeqChar,
529*cdf0e10cSrcweir                       [out] sequence< byte > aSeqByte,
530*cdf0e10cSrcweir                       [out] sequence< short > aSeqShort,
531*cdf0e10cSrcweir                       [out] sequence< unsigned short> aSeqUShort,
532*cdf0e10cSrcweir                       [out] sequence< long > aSeqLong,
533*cdf0e10cSrcweir                       [out] sequence< unsigned long > aSeqULong,
534*cdf0e10cSrcweir                       [out] sequence< hyper > aSeqHyper,
535*cdf0e10cSrcweir                       [out] sequence< unsigned hyper > aSeqUHyper,
536*cdf0e10cSrcweir                       [out] sequence< float > aSeqFloat,
537*cdf0e10cSrcweir                       [out] sequence< double > aSeqDouble,
538*cdf0e10cSrcweir                       [out] sequence< TestEnum > aSeqEnum,
539*cdf0e10cSrcweir                       [out] sequence< string > aSeqString,
540*cdf0e10cSrcweir                       [out] sequence< com::sun::star::uno::XInterface > aSeqXInterface,
541*cdf0e10cSrcweir                       [out] sequence< any > aSeqAny,
542*cdf0e10cSrcweir                       [out] sequence< sequence< long > > aSeqDim2,
543*cdf0e10cSrcweir                       [out] sequence< sequence < sequence < long > > > aSeqDim3);
544*cdf0e10cSrcweir
545*cdf0e10cSrcweir    void testConstructorsService(
546*cdf0e10cSrcweir        [in] com::sun::star::uno::XComponentContext context)
547*cdf0e10cSrcweir        raises (BadConstructorArguments);
548*cdf0e10cSrcweir
549*cdf0e10cSrcweir    XCurrentContextChecker getCurrentContextChecker();
550*cdf0e10cSrcweir};
551*cdf0e10cSrcweir
552*cdf0e10cSrcweir}; }; };
553