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: */
|