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


interface Apple {
	const long Lemon = 3;
	typedef long Pumpkin;
	exception Oregano{
		long Sultana;
	};
};

interface Banana : Apple {
	const short Lemon = 3;
	typedef short Pumpkin;
	exception Oregano{
		short Sultana;
	};
};

interface Carrots : Apple{
	const float Lemon = 4.5;
	typedef float Pumpkin;
	exception Oregano{
		float Sultana;
	};
};

interface Dates : Banana, Carrots{
	const char Lemon = '6';
	typedef char Pumpkin;
	exception Oregano{
		char Sultana;
	};
};


interface idlServer: Dates {

	typedef short Melon[::Apple::Lemon];

	void Lemon(
		in Melon p1,
		inout ::Apple::Pumpkin p2,
		inout ::Banana::Pumpkin p3,
		inout ::Carrots::Pumpkin p4,
		inout ::Dates::Pumpkin p5) 
		raises (::Carrots::Oregano);
};




