//
// %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%
//
module Module
{

  enum Enum {horse, pig, cow};

  struct Struct0 {
    long l;
    short s;
    char c;
  };

  struct Struct1 {
    string s;
    unsigned short us;
    unsigned long ul;
  };

  struct Struct2 {
    sequence <long> long_sequence;
    Enum e;
    octet o;
  };

   struct HEADER {
        short EID;
        short NDW;
        short SSID;
   };

  enum Enum1 {orange,banana, apple};
  
  union Union switch (short) {
  case 0: short First;
  case 1: string Second;
  case 2: char Third;
  };

  union Union1 switch (Enum){
  case horse: short horse;
  case pig: sequence <string> Second;
  case cow: Enum1 Third;
  };

  union Union2 switch (Enum){
  case horse: long a[10];
  case pig: Union u;
  case cow: Union1 u1;
  };

  exception Except1 {
    string why;
    sequence <string> rest_of_name;
  };
 
  exception Except2 {
    Enum1 e;
    Struct2 s;
  };
 
  exception Except3 {
    Union1 u;
    unsigned short s;
    Object o ;
  };
 
  exception Except4 {};

  interface I1 {
    void a();
  };

  interface I2 {
    void a();
  };

};