//
// Copyright (c) 1997 X/Open Company Ltd., A member of The Open Group.
//
// All rights reserved. No part of this source code may be reproduced,
// stored in a retrieval system, or transmitted, in any form or by any
// means, electronic, mechanical, photocopying, recording or otherwise,
// except as stated in the end-user licence agreement, without the prior
// permission of the copyright owners.
//
// Developed for X/Open by ApTest Ireland Limited.
//
// Project: CORVAL2
//


typedef struct Avocado{
  struct Mango{
    float ButterBean;
    struct Starfruit{
      double Cinnamon;
      struct Dates{
        long BreadFruit;
        struct Lime{
          short BambooShoot;
          struct Leek{
            unsigned long Fennell;
            struct Ginger{
              unsigned short Pineapple;
              struct Mint{
                char Radish;
                struct GardenPeas{
                  boolean Damsons;
                  struct Sultana{
                    octet Mullberry;
                  } Mint;
                } Asparagus;
              } Parsnip;
            } Celery;
          } Aniseed;
        } Pumpkin;
      } Tofu;
    } Onion;
  } Plum;
} Banana;

interface idlServer {

  exception BananaExcpt{
    ::Banana ex1;
  };

  attribute ::Banana BananaAttr;

  ::Banana BananaOp(
    in    ::Banana p1,
    out   ::Banana p2,
    inout ::Banana p3
  ) raises (BananaExcpt);

  exception AvocadoExcpt{
    ::Avocado ex1;
  };

  attribute ::Avocado AvocadoAttr;

  ::Avocado AvocadoOp(
    in    ::Avocado p1,
    out   ::Avocado p2,
    inout ::Avocado p3
  ) raises (AvocadoExcpt);

  exception MangoExcpt{
    ::Avocado::Mango ex1;
  };

  attribute ::Avocado::Mango MangoAttr;

  ::Avocado::Mango MangoOp(
    in    ::Avocado::Mango p1,
    out   ::Avocado::Mango p2,
    inout ::Avocado::Mango p3
  ) raises (MangoExcpt);

  exception StarfruitExcpt{
    ::Avocado::Mango::Starfruit ex1;
  };

  attribute ::Avocado::Mango::Starfruit StarfruitAttr;

  ::Avocado::Mango::Starfruit StarfruitOp(
    in    ::Avocado::Mango::Starfruit p1,
    out   ::Avocado::Mango::Starfruit p2,
    inout ::Avocado::Mango::Starfruit p3
  ) raises (StarfruitExcpt);

  exception DatesExcpt{
    ::Avocado::Mango::Starfruit::Dates ex1;
  };

  attribute ::Avocado::Mango::Starfruit::Dates DatesAttr;

  ::Avocado::Mango::Starfruit::Dates DatesOp(
    in    ::Avocado::Mango::Starfruit::Dates p1,
    out   ::Avocado::Mango::Starfruit::Dates p2,
    inout ::Avocado::Mango::Starfruit::Dates p3
  ) raises (DatesExcpt);

  exception LimeExcpt{
    ::Avocado::Mango::Starfruit::Dates::Lime ex1;
  };

  attribute ::Avocado::Mango::Starfruit::Dates::Lime LimeAttr;

  ::Avocado::Mango::Starfruit::Dates::Lime LimeOp(
    in    ::Avocado::Mango::Starfruit::Dates::Lime p1,
    out   ::Avocado::Mango::Starfruit::Dates::Lime p2,
    inout ::Avocado::Mango::Starfruit::Dates::Lime p3
  ) raises (LimeExcpt);

  exception LeekExcpt{
    ::Avocado::Mango::Starfruit::Dates::Lime::Leek ex1;
  };

  attribute ::Avocado::Mango::Starfruit::Dates::Lime::Leek LeekAttr;

  ::Avocado::Mango::Starfruit::Dates::Lime::Leek LeekOp(
    in    ::Avocado::Mango::Starfruit::Dates::Lime::Leek p1,
    out   ::Avocado::Mango::Starfruit::Dates::Lime::Leek p2,
    inout ::Avocado::Mango::Starfruit::Dates::Lime::Leek p3
  ) raises (LeekExcpt);

  exception GingerExcpt{
    ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger ex1;
  };

  attribute ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger GingerAttr;

  ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger GingerOp(
    in    ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger p1,
    out   ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger p2,
    inout ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger p3
  ) raises (GingerExcpt);

  exception MintExcpt{
    ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint ex1;
  };

  attribute ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint MintAttr;

  ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint MintOp(
    in    ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint p1,
    out   ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint p2,
    inout ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint p3
  ) raises (MintExcpt);

  exception GardenPeasExcpt{
    ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas ex1;
  };

  attribute ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas GardenPeasAttr;

  ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas GardenPeasOp(
    in    ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas p1,
    out   ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas p2,
    inout ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas p3
  ) raises (GardenPeasExcpt);

  exception SultanaExcpt{
    ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas::Sultana ex1;
  };

  attribute ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas::Sultana SultanaAttr;

  ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas::Sultana SultanaOp(
    in    ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas::Sultana p1,
    out   ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas::Sultana p2,
    inout ::Avocado::Mango::Starfruit::Dates::Lime::Leek::Ginger::Mint::GardenPeas::Sultana p3
  ) raises (SultanaExcpt);
};

