/* -*- Mode: idl; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
/*
 * MateComponent_Application.idl: Unique application support (some would call
 * it--or can be used for--Automation).
 *
 */

#ifndef MATECOMPONENT_APPLICATION_IDL
#define MATECOMPONENT_APPLICATION_IDL

#include "MateComponent_Unknown.idl"

module MateComponent {
  
	interface Application : MateComponent::Unknown {

                typedef sequence<any>    ArgList;
                typedef sequence<string> argv_t;

                struct MessageDesc {
                        string             name;
                        sequence<TypeCode> types;
                        TypeCode           return_type;
                        string             description;
                };

                typedef sequence<MessageDesc> MessageList;

	        any         message      (in string  msg,
                                          in ArgList args);
                long	    newInstance  (in argv_t argv);
                MessageList listMessages ();
                string	    getName      ();

                void unimplemented1 ();
                void unimplemented2 ();
                void unimplemented3 ();
                void unimplemented4 ();
                void unimplemented5 ();
                void unimplemented6 ();
                void unimplemented7 ();
                void unimplemented8 ();
  	};

};

#endif /* MATECOMPONENT_APPLICATION_IDL */

