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



#include "com/sun/star/lang/ClassNotFoundException.idl"
#include "com/sun/star/lang/IllegalAccessException.idl"
#include "com/sun/star/uno/DeploymentException.idl"
#include "com/sun/star/uno/Exception.idl"
#include "com/sun/star/uno/RuntimeException.idl"
#include "com/sun/star/uno/XInterface.idl"
#include "com/sun/star/uno/XNamingService.idl"

module test { module codemaker { module javamaker {

enum Enum1 { VALUE1 = -100, VALUE2 = 100 };

enum Enum2 { VALUE0 = 0, VALUE1 = 1, VALUE2 = 2, VALUE4 = 4 };

struct Struct1 { long member1; };

struct PolyStruct<if,else> {
    if member1;
    long member2;
};

interface XTest {
    boolean test();

    [attribute, bound] long A1;
    [attribute, bound, readonly] long A2;
    [attribute] long A3 {
        get raises
            (com::sun::star::uno::Exception,
             com::sun::star::lang::ClassNotFoundException);
        set raises (com::sun::star::uno::RuntimeException);
    };
    [attribute, readonly] long A4 {
        get raises (com::sun::star::uno::DeploymentException);
    };
};

typedef boolean Boolean;
typedef byte Byte;
typedef short Short;
typedef unsigned short UnsignedShort;
typedef long Long;
typedef unsigned long UnsignedLong;
typedef hyper Hyper;
typedef unsigned hyper UnsignedHyper;
typedef float Float;
typedef double Double;
typedef char Char;
typedef string String;
typedef type Type;
typedef any Any;
typedef Enum2 Enum;
typedef Struct1 Struct;
typedef com::sun::star::uno::XInterface XInterface;
typedef com::sun::star::uno::XNamingService XNamingService;

typedef sequence< Boolean > SequenceBoolean;
typedef sequence< Byte > SequenceByte;
typedef sequence< Short > SequenceShort;
typedef sequence< UnsignedShort > SequenceUnsignedShort;
typedef sequence< Long > SequenceLong;
typedef sequence< UnsignedLong > SequenceUnsignedLong;
typedef sequence< Hyper > SequenceHyper;
typedef sequence< UnsignedHyper > SequenceUnsignedHyper;
typedef sequence< Float > SequenceFloat;
typedef sequence< Double > SequenceDouble;
typedef sequence< Char > SequenceChar;
typedef sequence< String > SequenceString;
typedef sequence< Type > SequenceType;
typedef sequence< Any > SequenceAny;
typedef sequence< Enum > SequenceEnum;
typedef sequence< Struct > SequenceStruct;
typedef sequence< XInterface > SequenceXInterface;
typedef sequence< XNamingService > SequenceXNamingService;

struct Struct2 {
    boolean p1;
    byte p2;
    short p3;
    unsigned short p4;
    long p5;
    unsigned long p6;
    hyper p7;
    unsigned hyper p8;
    float p9;
    double p10;
    char p11;
    string p12;
    type p13;
    any p14;
    Enum2 p15;
    Struct1 p16;
    com::sun::star::uno::XInterface p17;
    com::sun::star::uno::XNamingService p18;
    Boolean t1;
    Byte t2;
    Short t3;
    UnsignedShort t4;
    Long t5;
    UnsignedLong t6;
    Hyper t7;
    UnsignedHyper t8;
    Float t9;
    Double t10;
    Char t11;
    String t12;
    Type t13;
    Any t14;
    Enum t15;
    Struct t16;
    XInterface t17;
    XNamingService t18;
    sequence< boolean > a1;
    sequence< byte > a2;
    sequence< short > a3;
    sequence< unsigned short > a4;
    sequence< long > a5;
    sequence< unsigned long > a6;
    sequence< hyper > a7;
    sequence< unsigned hyper > a8;
    sequence< float > a9;
    sequence< double > a10;
    sequence< char > a11;
    sequence< string > a12;
    sequence< type > a13;
    sequence< any > a14;
    sequence< Enum2 > a15;
    sequence< Struct1 > a16;
    sequence< com::sun::star::uno::XInterface > a17;
    sequence< com::sun::star::uno::XNamingService > a18;
    sequence< sequence< boolean > > aa1;
    sequence< sequence< byte > > aa2;
    sequence< sequence< short > > aa3;
    sequence< sequence< unsigned short > > aa4;
    sequence< sequence< long > > aa5;
    sequence< sequence< unsigned long > > aa6;
    sequence< sequence< hyper > > aa7;
    sequence< sequence< unsigned hyper > > aa8;
    sequence< sequence< float > > aa9;
    sequence< sequence< double > > aa10;
    sequence< sequence< char > > aa11;
    sequence< sequence< string > > aa12;
    sequence< sequence< type > > aa13;
    sequence< sequence< any > > aa14;
    sequence< sequence< Enum2 > > aa15;
    sequence< sequence< Struct1 > > aa16;
    sequence< sequence< com::sun::star::uno::XInterface > > aa17;
    sequence< sequence< com::sun::star::uno::XNamingService > > aa18;
    sequence< SequenceBoolean > at1;
    sequence< SequenceByte > at2;
    sequence< SequenceShort > at3;
    sequence< SequenceUnsignedShort > at4;
    sequence< SequenceLong > at5;
    sequence< SequenceUnsignedLong > at6;
    sequence< SequenceHyper > at7;
    sequence< SequenceUnsignedHyper > at8;
    sequence< SequenceFloat > at9;
    sequence< SequenceDouble > at10;
    sequence< SequenceChar > at11;
    sequence< SequenceString > at12;
    sequence< SequenceType > at13;
    sequence< SequenceAny > at14;
    sequence< SequenceEnum > at15;
    sequence< SequenceStruct > at16;
    sequence< SequenceXInterface > at17;
    sequence< SequenceXNamingService > at18;
};

service S1: XTest {
    create1();

    create2([in] any... create2)
        raises (com::sun::star::uno::RuntimeException,
                com::sun::star::lang::ClassNotFoundException,
                com::sun::star::uno::Exception,
                com::sun::star::lang::IllegalAccessException,
                com::sun::star::uno::DeploymentException);

    create3([in] sequence<any> S1)
        raises (com::sun::star::uno::RuntimeException,
                com::sun::star::lang::ClassNotFoundException,
                com::sun::star::lang::IllegalAccessException,
                com::sun::star::uno::DeploymentException);

    create4([in] long javamaker, [in] long S1, [in] long create4);

    create5(
        [in] boolean p1,
        [in] byte p2,
        [in] short p3,
        [in] unsigned short p4,
        [in] long p5,
        [in] unsigned long p6,
        [in] hyper p7,
        [in] unsigned hyper p8,
        [in] float p9,
        [in] double p10,
        [in] char p11,
        [in] string p12,
        [in] type p13,
        [in] any p14,
        [in] Enum2 p15,
        [in] Struct1 p16,
        [in] com::sun::star::uno::XInterface p17,
        [in] com::sun::star::uno::XNamingService p18,
        [in] Boolean t1,
        [in] Byte t2,
        [in] Short t3,
        [in] UnsignedShort t4,
        [in] Long t5,
        [in] UnsignedLong t6,
        [in] Hyper t7,
        [in] UnsignedHyper t8,
        [in] Float t9,
        [in] Double t10,
        [in] Char t11,
        [in] String t12,
        [in] Type t13,
        [in] Any t14,
        [in] Enum t15,
        [in] Struct t16,
        [in] XInterface t17,
        [in] XNamingService t18,
        [in] sequence< boolean > a1,
        [in] sequence< byte > a2,
        [in] sequence< short > a3,
        [in] sequence< unsigned short > a4,
        [in] sequence< long > a5,
        [in] sequence< unsigned long > a6,
        [in] sequence< hyper > a7,
        [in] sequence< unsigned hyper > a8,
        [in] sequence< float > a9,
        [in] sequence< double > a10,
        [in] sequence< char > a11,
        [in] sequence< string > a12,
        [in] sequence< type > a13,
        [in] sequence< any > a14,
        [in] sequence< Enum2 > a15,
        [in] sequence< Struct1 > a16,
        [in] sequence< com::sun::star::uno::XInterface > a17,
        [in] sequence< com::sun::star::uno::XNamingService > a18,
        [in] sequence< sequence< boolean > > aa1,
        [in] sequence< sequence< byte > > aa2,
        [in] sequence< sequence< short > > aa3,
        [in] sequence< sequence< unsigned short > > aa4,
        [in] sequence< sequence< long > > aa5,
        [in] sequence< sequence< unsigned long > > aa6,
        [in] sequence< sequence< hyper > > aa7,
        [in] sequence< sequence< unsigned hyper > > aa8,
        [in] sequence< sequence< float > > aa9,
        [in] sequence< sequence< double > > aa10,
        [in] sequence< sequence< char > > aa11,
        [in] sequence< sequence< string > > aa12,
        [in] sequence< sequence< type > > aa13,
        [in] sequence< sequence< any > > aa14,
        [in] sequence< sequence< Enum2 > > aa15,
        [in] sequence< sequence< Struct1 > > aa16,
        [in] sequence< sequence< com::sun::star::uno::XInterface > > aa17,
        [in] sequence< sequence< com::sun::star::uno::XNamingService > > aa18,
        [in] sequence< SequenceBoolean > at1,
        [in] sequence< SequenceByte > at2,
        [in] sequence< SequenceShort > at3,
        [in] sequence< SequenceUnsignedShort > at4,
        [in] sequence< SequenceLong > at5,
        [in] sequence< SequenceUnsignedLong > at6,
        [in] sequence< SequenceHyper > at7,
        [in] sequence< SequenceUnsignedHyper > at8,
        [in] sequence< SequenceFloat > at9,
        [in] sequence< SequenceDouble > at10,
        [in] sequence< SequenceChar > at11,
        [in] sequence< SequenceString > at12,
        [in] sequence< SequenceType > at13,
        [in] sequence< SequenceAny > at14,
        [in] sequence< SequenceEnum > at15,
        [in] sequence< SequenceStruct > at16,
        [in] sequence< SequenceXInterface > at17,
        [in] sequence< SequenceXNamingService > at18);
};

service S2: XTest;

service S3 { interface XTest; };

module services {

service abstract: com::sun::star::uno::XInterface {
    abstract([in] long abstract); };
service assert: com::sun::star::uno::XInterface { assert([in] long assert); };
//TODO: boolean
service break: com::sun::star::uno::XInterface { break([in] long break); };
//TODO: byte
//TODO: case
service catch: com::sun::star::uno::XInterface { catch([in] long catch); };
//TODO: char
service class: com::sun::star::uno::XInterface { class([in] long class); };
//TODO: const
service continue: com::sun::star::uno::XInterface {
    continue([in] long continue); };
//TODO: default
service do: com::sun::star::uno::XInterface { do([in] long do); };
//TODO: double
service else: com::sun::star::uno::XInterface { else([in] long else); };
//TODO: enum
service extends: com::sun::star::uno::XInterface {
    extends([in] long extends); };
service final: com::sun::star::uno::XInterface { final([in] long final); };
service finally: com::sun::star::uno::XInterface {
    finally([in] long finally); };
//TODO: float
service for: com::sun::star::uno::XInterface { for([in] long for); };
service goto: com::sun::star::uno::XInterface { goto([in] long goto); };
service if: com::sun::star::uno::XInterface { if([in] long if); };
service implements: com::sun::star::uno::XInterface {
    implements([in] long implements); };
service import: com::sun::star::uno::XInterface { import([in] long import); };
service instanceof: com::sun::star::uno::XInterface {
    instanceof([in] long instanceof); };
service int: com::sun::star::uno::XInterface { int([in] long int); };
//TODO: interface
//TODO: long
service native: com::sun::star::uno::XInterface { native([in] long native); };
service new: com::sun::star::uno::XInterface { new([in] long new); };
service package: com::sun::star::uno::XInterface {
    package([in] long package); };
service private: com::sun::star::uno::XInterface {
    private([in] long private); };
service protected: com::sun::star::uno::XInterface {
    protected([in] long protected); };
service public: com::sun::star::uno::XInterface { public([in] long public); };
service return: com::sun::star::uno::XInterface { return([in] long return); };
//TODO: short
service static: com::sun::star::uno::XInterface { static([in] long static); };
service strictfp: com::sun::star::uno::XInterface {
    strictfp([in] long strictfp); };
service super: com::sun::star::uno::XInterface { super([in] long super); };
//TODO: switch
service synchronized: com::sun::star::uno::XInterface {
    synchronized([in] long synchronized); };
service this: com::sun::star::uno::XInterface { this([in] long this); };
service throw: com::sun::star::uno::XInterface { throw([in] long throw); };
service throws: com::sun::star::uno::XInterface { throws([in] long throws); };
//TODO: transient
service try: com::sun::star::uno::XInterface { try([in] long try); };
//TODO: void
service volatile: com::sun::star::uno::XInterface {
    volatile([in] long volatile); };
service while: com::sun::star::uno::XInterface { while([in] long while); };

};

singleton S4: XTest;

singleton S5 { service S2; };

singleton abstract: com::sun::star::uno::XNamingService;
singleton assert: com::sun::star::uno::XNamingService;
//TODO: singleton boolean: com::sun::star::uno::XNamingService;
singleton break: com::sun::star::uno::XNamingService;
//TODO: singleton byte: com::sun::star::uno::XNamingService;
//TODO: singleton case: com::sun::star::uno::XNamingService;
singleton catch: com::sun::star::uno::XNamingService;
//TODO: singleton char: com::sun::star::uno::XNamingService;
singleton class: com::sun::star::uno::XNamingService;
//TODO: singleton const: com::sun::star::uno::XNamingService;
singleton continue: com::sun::star::uno::XNamingService;
//TODO: singleton default: com::sun::star::uno::XNamingService;
singleton do: com::sun::star::uno::XNamingService;
//TODO: singleton double: com::sun::star::uno::XNamingService;
singleton else: com::sun::star::uno::XNamingService;
//TODO: singleton enum: com::sun::star::uno::XNamingService;
singleton extends: com::sun::star::uno::XNamingService;
singleton final: com::sun::star::uno::XNamingService;
singleton finally: com::sun::star::uno::XNamingService;
//TODO: singleton float: com::sun::star::uno::XNamingService;
singleton for: com::sun::star::uno::XNamingService;
singleton goto: com::sun::star::uno::XNamingService;
singleton if: com::sun::star::uno::XNamingService;
singleton implements: com::sun::star::uno::XNamingService;
singleton import: com::sun::star::uno::XNamingService;
singleton instanceof: com::sun::star::uno::XNamingService;
singleton int: com::sun::star::uno::XNamingService;
//TODO: singleton interface: com::sun::star::uno::XNamingService;
//TODO: singleton long: com::sun::star::uno::XNamingService;
singleton native: com::sun::star::uno::XNamingService;
singleton new: com::sun::star::uno::XNamingService;
singleton package: com::sun::star::uno::XNamingService;
singleton private: com::sun::star::uno::XNamingService;
singleton protected: com::sun::star::uno::XNamingService;
singleton public: com::sun::star::uno::XNamingService;
singleton return: com::sun::star::uno::XNamingService;
//TODO: singleton short: com::sun::star::uno::XNamingService;
singleton static: com::sun::star::uno::XNamingService;
singleton strictfp: com::sun::star::uno::XNamingService;
singleton super: com::sun::star::uno::XNamingService;
//TODO: singleton switch: com::sun::star::uno::XNamingService;
singleton synchronized: com::sun::star::uno::XNamingService;
singleton this: com::sun::star::uno::XNamingService;
singleton throw: com::sun::star::uno::XNamingService;
singleton throws: com::sun::star::uno::XNamingService;
//TODO: singleton transient: com::sun::star::uno::XNamingService;
singleton try: com::sun::star::uno::XNamingService;
//TODO: singleton void: com::sun::star::uno::XNamingService;
singleton volatile: com::sun::star::uno::XNamingService;
singleton while: com::sun::star::uno::XNamingService;

}; }; };
