/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 * 
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * This file is part of OpenOffice.org.
 *
 * OpenOffice.org is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * OpenOffice.org is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License version 3 for more details
 * (a copy is included in the LICENSE file that accompanied this code).
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with OpenOffice.org.  If not, see
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 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;

}; }; };
