blob: 3f1e1d1cf583ed2fd929e4e0fe68646671575dda [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef __com_sun_star_test_performance_XPerformanceTest_idl__
#define __com_sun_star_test_performance_XPerformanceTest_idl__
#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
module com
{
module sun
{
module star
{
module test
{
module performance
{
/** struct of simple types to be carried
*/
published struct SimpleTypes
{
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;
};
/** struct ComplexTypes adding Sequence, String, Interface, Any to SimpleTypes
*/
published struct ComplexTypes : SimpleTypes
{
sequence< long > Sequence;
string String;
com::sun::star::uno::XInterface Interface;
any Any;
};
/** A performance test object has to be implemented in a special way, that:
<ul>
<li>queryInterface() execution times remain (nearly) static</li>
<li>functions kept simple, thus there is (nearly) no execution time of the function itself</li>
<li>no dynamic data is ever returned except of createObject(), so return 0, empty strings etc.</li>
</ul>
The interface is divided into three sections:
<ul>
<li>measuring asynchron/ synchron calls</li>
<li>complex data calls with/out return value; in/out parameters</li>
<li>single data types like long, float, string etc.</li>
<li>method calls versa attribute calls</li>
<li>raising RuntimeException</li>
</ul>
*/
published interface XPerformanceTest : com::sun::star::uno::XInterface
{
[oneway] void async();
void sync();
ComplexTypes complex_in( [in] ComplexTypes aVal );
ComplexTypes complex_inout( [inout] ComplexTypes aVal );
[oneway] void complex_oneway( [in] ComplexTypes aVal );
void complex_noreturn( [in] ComplexTypes aVal );
XPerformanceTest createObject();
[attribute] long Long_attr;
[attribute] hyper Hyper_attr;
[attribute] float Float_attr;
[attribute] double Double_attr;
[attribute] string String_attr;
[attribute] com::sun::star::uno::XInterface Interface_attr;
[attribute] any Any_attr;
[attribute] sequence< com::sun::star::uno::XInterface > Sequence_attr;
[attribute] ComplexTypes Struct_attr;
long getLong();
void setLong( [in] long n );
hyper getHyper();
void setHyper( [in] hyper n );
float getFloat();
void setFloat( [in] float f );
double getDouble();
void setDouble( [in] double f );
string getString();
void setString( [in] string s );
com::sun::star::uno::XInterface getInterface();
void setInterface( [in] com::sun::star::uno::XInterface x );
any getAny();
void setAny( [in] any a );
sequence< com::sun::star::uno::XInterface > getSequence();
void setSequence( [in] sequence< com::sun::star::uno::XInterface > seq );
ComplexTypes getStruct();
void setStruct( [in] ComplexTypes c );
void raiseRuntimeException();
};
//=============================================================================
};
};
};
};
};
#endif