#pragma prefix "jacorb.org"

module org {
  module jacorb {
    module test {
      module notification {
	typedef sequence<string> StringSeq;
	typedef sequence<long> NumberSeq;
	
	struct TimingTest {
	  long id;
	  long currentTime;
	};
	
	struct Address {
	  string street;
	  string city;
	  long number;
	};
	
	struct NamedValue {
	  string name;
	  string value;
	};

	typedef sequence<NamedValue> NamedValueSeq;

	enum Profession {STUDENT, PROFESSOR};
	
	struct Person {
	  string first_name;
	  string last_name;
	  long age;
	  Address home_address;
	  string phone_numbers[2];
	  NamedValue nv[2];
	  Profession person_profession;
	  StringSeq aliases;
	  NumberSeq numbers;
	};
	
	union TestUnion switch (short) {
	case 0:
	case 1: long long_;
	case 2: string string_;
	case 3: NamedValue named_value_;
	case 4: Person person_;
	case 5: NamedValue named_value_array[1];
	default:  Person default_person;
	};

	interface EchoServer {
	  void acceptAny(in any param);
	};
      };
    };
  };
};
