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