summaryrefslogtreecommitdiff
path: root/stoc/test/language_binding.idl
blob: 38ddce1c7650d7a04179c055a76c15acbc87e821 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/* -*- 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 .
 */

#ifndef _TEST_LANGUAGE_BINDING_IDL_
#define _TEST_LANGUAGE_BINDING_IDL_

#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/lang/IllegalArgumentException.idl>

module test
{

enum TestEnum
{
    TEST,
    ONE,
    TWO,
    CHECK,
    LOLA,
    PALOO,
    ZA
};

/**
 * simple c++ types
 */
struct TestSimple
{
    boolean                    Bool;
    char                       Char;
    byte                       Byte;
    short                      Short;
    unsigned short             UShort;
    long                       Long;
    unsigned long              ULong;
    hyper                      Hyper;
    unsigned hyper             UHyper;
    float                      Float;
    double                     Double;
    test::TestEnum             Enum;
};
/**
 * complex c++ types
 */
struct TestElement : test::TestSimple
{
    string                     String;
    com::sun::star::uno::XInterface   Interface;
    any                        Any;
};
struct TestDataElements : test::TestElement
{
    sequence<test::TestElement > Sequence;
};

typedef TestDataElements TestData;

/** Monster test interface to test language binding calls. */
interface XLBTestBase : com::sun::star::uno::XInterface
{
    /**
     * in parameter test, tests by calls reference also (complex types)
     */
    void setValues( [in] boolean bBool, [in] char cChar, [in] byte nByte,
                             [in] short nShort, [in] unsigned short nUShort,
                             [in] long nLong, [in] unsigned long nULong,
                             [in] hyper nHyper, [in] unsigned hyper nUHyper,
                             [in] float fFloat, [in] double fDouble,
                             [in] test::TestEnum eEnum, [in] string aString,
                             [in] com::sun::star::uno::XInterface xInterface, [in] any aAny,
                             [in] sequence<test::TestElement > aSequence,
                             [in] test::TestData aStruct );
    /**
     * inout parameter test
     */
    test::TestData setValues2( [inout] boolean bBool, [inout] char cChar, [inout] byte nByte,
                               [inout] short nShort, [inout] unsigned short nUShort,
                               [inout] long nLong, [inout] unsigned long nULong,
                               [inout] hyper nHyper, [inout] unsigned hyper nUHyper,
                               [inout] float fFloat, [inout] double fDouble,
                               [inout] test::TestEnum eEnum, [inout] string aString,
                               [inout] com::sun::star::uno::XInterface xInterface, [inout] any aAny,
                               [inout] sequence<test::TestElement > aSequence,
                               [inout] test::TestData aStruct );

    /**
     * out parameter test
     */
    test::TestData getValues( [out] boolean bBool, [out] char cChar, [out] byte nByte,
                              [out] short nShort, [out] unsigned short nUShort,
                              [out] long nLong, [out] unsigned long nULong,
                              [out] hyper nHyper, [out] unsigned hyper nUHyper,
                              [out] float fFloat, [out] double fDouble,
                              [out] test::TestEnum eEnum, [out] string aString,
                              [out] com::sun::star::uno::XInterface xInterface, [out] any aAny,
                              [out] sequence<test::TestElement > aSequence,
                              [out] test::TestData aStruct );

    [attribute] boolean                  Bool;
    [attribute] byte                     Byte;
    [attribute] char                     Char;
    [attribute] short                    Short;
    [attribute] unsigned short           UShort;
    [attribute] long                     Long;
    [attribute] unsigned long            ULong;
    [attribute] hyper                    Hyper;
    [attribute] unsigned hyper           UHyper;
    [attribute] float                    Float;
    [attribute] double                   Double;
    [attribute] test::TestEnum           Enum;
    [attribute] string                   String;
    [attribute] com::sun::star::uno::XInterface Interface;
    [attribute] any                      Any;
    [attribute] sequence<test::TestElement > Sequence;
    [attribute] test::TestData           Struct;
};


/** Inherting from monster; adds raiseException(). */
interface XLanguageBindingTest : test::XLBTestBase
{
    /**
     * params are there only for dummy, to test if all temp out params will be released.
     */
    test::TestData raiseException( [out] boolean bBool, [out] char cChar, [out] byte nByte,
                                   [out] short nShort, [out] unsigned short nUShort,
                                   [out] long nLong, [out] unsigned long nULong,
                                   [out] hyper nHyper, [out] unsigned hyper nUHyper,
                                   [out] float fFloat, [out] double fDouble,
                                   [out] test::TestEnum eEnum, [out] string aString,
                                   [out] com::sun::star::uno::XInterface xInterface, [out] any aAny,
                                   [out] sequence<test::TestElement > aSequence,
                                   [out] test::TestData aStruct )
        raises( com::sun::star::lang::IllegalArgumentException );

    /**
     * raises runtime exception
     */
    [attribute] long                     RuntimeException;
};

}; // test


#endif

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