/*
 * matecomponent-item-container.idl: Implements a generic container for objects
 *
 * Copyright (C) 2000  Helix Code, Inc.
 *
 * Author:
 *	Miguel de Icaza (miguel@helixcode.com)
 */

#ifndef MATECOMPONENT_ITEM_CONTAIER_IDL
#define MATECOMPONENT_ITEM_CONTAIER_IDL

#include "MateComponent_Unknown.idl"

module MateComponent {

	interface ItemContainer : Unknown {
		typedef sequence<string> ObjectNames;

		/**
		 * enumObjects:
		 *
		 * Returns: a list of names of contained objects
		 */
		ObjectNames enumObjects ();

		/**
		 * NotFound{}:
		 * 
		 * This exception is raised if the specified name could not
		 * be found
		 */
		exception NotFound {};

		/**
		 * SyntaxError{}:
		 *
		 * This exception is launched if there is a syntax error
		 * during the name parsing
		 */
		exception SyntaxError {};

		/**
		 * getObjectByName:
		 * @item_name: Item name to bind to
		 * @only_if_exists: if TRUE, only bind if this object currently exists
		 * otherwise, it will try to create the server for it.
		 */
		Unknown getObjectByName (in string  item_name,
					 in boolean only_if_exists)
			raises (SyntaxError, NotFound);

		void unImplemented1 ();
		void unImplemented2 ();
		void unImplemented3 ();
		void unImplemented4 ();
	};
};

#endif /* MATECOMPONENT_ITEM_CONTAIER_IDL */
