// $Id: keyword_clash.idl 91815 2010-09-17 08:35:19Z johnnyw $
/**
 * @file keyword_clash.idl
 * @author Jeff Parsons <j.parsons@vanderbilt.edu>
 *
 * Tests handling of C++ keywords and escaped identifiers (IDL
 * keywords) in mapping IDL3 to IDL2, and mapping the resulting
 * IDL2 to C++.
 */

#ifndef CONVERTIDL3_KEYWORD_CLASH_IDL
#define CONVERTIDL3_KEYWORD_CLASH_IDL

#include "Components.idl"

module _interface
{
  interface _attribute
  {
    exception _inout {};
  };
};

module static
{
  module _readonly
  {
    module protected
    {
      interface virtual
      {
      };

      eventtype _eventtype
      {
        private virtual _public;
      };
    };
  };
};

eventtype _eventtype
{
  factory friend (in string _wstring);
};

interface _oneway {};

module _component
{
  component _out supports static::_readonly::protected::virtual
  {
    provides _interface::_attribute _local;
    provides _oneway else;
    provides static::_readonly::protected::virtual while;

    attribute long _abstract;

    uses multiple _interface::_attribute if;
    uses multiple _oneway mutable;
    uses multiple static::_readonly::protected::virtual register;

    uses _interface::_attribute _union;
    uses _oneway _struct;
    uses static::_readonly::protected::virtual volatile;

    publishes _eventtype _object;
    publishes static::_readonly::protected::_eventtype do;

    consumes _eventtype _const;
    consumes static::_readonly::protected::_eventtype const_cast;

    emits _eventtype class;
    emits static::_readonly::protected::_eventtype delete;
  };

  home new manages _out
  {
    static::_readonly::protected::virtual
    catch (
        inout static::_readonly::protected::_eventtype try)
      raises (_interface::_attribute::_inout);

    finder continue (in _interface::_attribute _inout);
  };
};

#endif /* CONVERTIDL3_KEYWORD_CLASH_IDL */

