

// %CopyrightBegin%
// 
// Copyright Ericsson AB 1997-2016. All Rights Reserved.
// 
// Licensed 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.
// 
// %CopyrightEnd%

//
// Check all types in IDL
//

typedef long T01;
typedef unsigned long T02;
typedef short T03;
typedef unsigned short T04;
typedef float T05;
typedef double T06;
typedef char T07;
typedef boolean T08;
typedef octet T09;
typedef any T10;
typedef Object T11;
typedef T01 T12;

// Template types
typedef sequence <long> T21;
typedef sequence <unsigned long> T22;
typedef sequence <short, 2> T23;
typedef sequence <unsigned short, 6> T24;
typedef sequence <float, 12> T25;
typedef sequence <double> T26;
typedef sequence <char, 1> T27;
typedef sequence <boolean> T28;
typedef sequence <octet, 9> T29;
typedef sequence <any> T30;
typedef sequence <Object,2 > T31;
typedef sequence <T01> T32;
typedef sequence <sequence <sequence <T32> > > T33;

struct S1 {
  long a;
  boolean b;
};

struct S2 {
  long a;
  struct S3 {
    long a;
    boolean b;
  } b;
};

union U1 switch (enum E1 {kalle1, sune1}) {
case kalle1: long a;
default: boolean b;
case sune1: octet c;
};

union U2 switch (enum E2 {kalle2, sune2}) {
case kalle2: long a;
default: struct S4 { long a; short  b;} b;
case sune2: octet c;
};

// Typedefs of above types

typedef struct S11 {
  long a;
  boolean b;
} T41;

typedef struct S21 {
  long a;
  struct S3 {
    long a;
    boolean b;
  } b;
} T42;

typedef union U11 switch (enum E3 {kalle3, sune3}) {
case kalle3: long a;
default: boolean b;
case sune3: octet c;
} T43;

typedef union U21 switch (enum E4 {kalle4, sune4}) {
case kalle4: long a;
default: struct S4 { long a; short  b;} b;
case sune4: octet c;
} T44;




// Array versions

typedef long T01_arr[99];
typedef unsigned long T02_arr[99];
typedef short T03_arr[99];
typedef unsigned short T04_arr[99];
typedef float T05_arr[99];
typedef double T06_arr[99];
typedef char T07_arr[99];
typedef boolean T08_arr[99];
typedef octet T09_arr[99];
typedef any T10_arr[99];
typedef Object T11_arr[99];
typedef T01 T12_arr[99];

typedef sequence <long> T21_arr[99];
typedef sequence <unsigned long> T22_arr[99];
typedef sequence <short, 2> T23_arr[99];
typedef sequence <unsigned short, 6> T24_arr[99];
typedef sequence <float, 12> T25_arr[99];
typedef sequence <double> T26_arr[99];
typedef sequence <char, 1> T27_arr[99];
typedef sequence <boolean> T28_arr[99];
typedef sequence <octet, 9> T29_arr[99];
typedef sequence <any> T30_arr[99];
typedef sequence <Object,2 > T31_arr[99];
typedef sequence <T01> T32_arr[99];
typedef sequence <sequence <sequence <T32> > > T33_arr[99];

struct S12 {
  long a;
  boolean b_arr[99];
};

struct S22 {
  long a_arr[99];
  struct S3 {
    long a_arr[99];
    boolean b_arr[99];
  } b;
};

union U12 switch (enum E12 {kalle12, sune12}) {
case kalle12: long a_arr[99];
default: boolean b;
case sune12: octet c;
};

union U22 switch (enum E22 {kalle22, sune22}) {
case kalle22: long a;
default: struct S4 { long a; short  b;} b_arr[99];
case sune22: octet c;
};

// Typedefs of above types

typedef struct S13 {
  long a_arr[99];
  boolean b;
} T41_arr[99];

typedef struct S23 {
  long a;
  struct S3 {
    long a;
    boolean b_arr[99];
    char c;
  } b;
} T42_arr[99];

typedef union U13 switch (enum E13 {kalle13, sune13}) {
case kalle13: long a;
default: boolean b_arr[99];
case sune13: octet c;
} T43_arr[99];

typedef union U23 switch (enum E23 {kalle23, sune23}) {
case kalle23: long a_arr[99];
default: struct S4 { long a; short  b;} b_arr[99];
case sune23: octet c_arr[99];
} T44_arr[99];



