Module:    dylan-user
Author:    Keith Dennison
Copyright:    Original Code is Copyright (c) 1995-2004 Functional Objects, Inc.
              All rights reserved.
License:      See License.txt in this distribution for details.
Warranty:     Distributed WITHOUT WARRANTY OF ANY KIND

define module scepter-ast
  use generic-arithmetic-common-dylan, exclude: { union, format-to-string };
  use streams;
  use format;
  use table-extensions, exclude: { table };
  use scepter-driver;
  use scepter-front-end;
  use scepter-error;
  use scepter-utilities;

  export
    <idl-declarators-error>;

  export
    <ast-declarator>,
//    declarator-imported?,
    declarator-imported?-setter,
    declarator-scope,
    declarator-source,
    declarator-source-setter,
    declarator-scoped-name,
    declarator-local-name,
    declarator-pragmas,
    declarator-pragmas-setter,
    declarator-added?,
    declarator-base-type,
    declarator-repository-id,
    declarator-repository-id-internal,
    declarator-repository-id-internal-setter,
    declarator-repository-id-version,
    declarator-repository-id-version-setter,
    declarator-repository-id-prefix,
    declarator-name-as-string,
    add-declarator,

    <ast-module>,
    reopen-module,
    define-module,
    <ast-root>,
    <ast-type>,
    <ast-typedef>,
    <ast-identifier>,  identifier-label,
    typedef-base-type,

    <ast-concrete-type>,
	 <ast-predefined-type>,
	 predefined-type,
	 <ast-string>,
	 string-max-size,
	 string-local-name,
	 <ast-wstring>,
	 <ast-sequence>,
	 sequence-max-size,
	 sequence-base-type,
	 <ast-array>,
	 array-dimensions,
	 array-base-type,
         array-base-type-setter,
	 <ast-enum>,
	 enum-counter,
         <ast-enum-value>,
	 <ast-structure>,
	 <ast-union>,
	 union-discriminator-type,
	 <ast-exception>,
	 <ast-interface>,
	 interface-inherits,
         interface-inherits-setter,
	 interface-defined?,
         interface-defined?-setter,
	 <ast-forward-interface>,
	 full-definition,

	 <ast-constant>,
	 constant-value,
	 constant-expression-type,

	 <ast-field>,
	 field-type,
	 <ast-argument>,
	 argument-direction,
         argument-direction-name,
	 $in-argument-direction, $out-argument-direction, $inout-argument-direction,
	 <ast-attribute>,
	 attribute-read-only?,
	 <ast-union-branch>,
	 union-branch-labels,

	 <ast-operation>,
	 operation-return-type,
	 operation-flag,
	 operation-context,
	 operation-exceptions,

	 <ast-expression>,
	 expression-combinator,
	 expression-value,
	 expression-type,
	 left-subexpression,
	 right-subexpression,
	 expression-scoped-name,

         coerce,
         evaluate,
         $constant-evaluation-kind,

	 <operation-flag>,
	 operation-flag-name,
	 <exception-collection>,
	 collection,
         collection-setter,
	 <context-collection>,

	 <idl-type>,
	 dylan-type,
	 idl-type-name,
	 <real-idl-type>,
	 range-min,
	 range-max,
	 <short-idl-type>,
	 <ushort-idl-type>,
	 <long-idl-type>,
	 <ulong-idl-type>,
	 <longlong-idl-type>,
	 <ulonglong-idl-type>,
	 <float-idl-type>,
	 <double-idl-type>,
	 <longdouble-idl-type>,
	 <octet-idl-type>,
	 <char-idl-type>,
	 <wchar-idl-type>,
	 <boolean-idl-type>,
	 <string-idl-type>,
	 <wstring-idl-type>,
	 <any-idl-type>,
	 <void-idl-type>,
	 <none-idl-type>,
	 <pseudo-idl-type>,
	 <Object-idl-type>,
	 <TypeCode-idl-type>,
	 <Principal-idl-type>,
	 <NamedValue-idl-type>,

	 <ast-generic-union-branch-label>,
	 <ast-default-union-branch-label>,
	 <ast-union-branch-label>,
	 union-branch-label-value,

	 <expression-combinator>,
	 combinator-name,
	 dylan-function,
	 <binary-expression-combinator>,
	 <add-combinator>,
	 <minus-combinator>,
	 <multiply-combinator>,
	 <divide-combinator>,
	 <modulus-combinator>,
	 <or-combinator>,
	 <xor-combinator>,
	 <and-combinator>,
	 <left-shift-combinator>,
	 <right-shift-combinator>,
	 <unary-expression-combinator>,
	 <unary-plus-combinator>,
	 <unary-minus-combinator>,
	 <bitwise-negation-combinator>,
	 <no-combinator>,
	 <symbol-combinator>,

	 <evaluation-kind>,
	 <constant-evaluation-kind>,
	 <positive-integer-evaluation-kind>,

	 <scope>,
	 scope-declarators,
	 scope-declarators-table,
	 scope-referenced,
         scope-pragma-prefix-setter,
	 sequence-allows-recursive-types?,
         sequence-allows-recursive-types?-setter,
         call-add,

         <ast-scoped-name>,
         resolve-scoped-name,
         scoped-name-as-string;

  export
    illegal-recursive-type?,
    resolve-primitive-type,
    $void-idl-type,
    $short-idl-type,
    $ushort-idl-type,
    $long-idl-type,
    $ulong-idl-type,
    $longlong-idl-type,
    $ulonglong-idl-type,
    $float-idl-type,
    $double-idl-type,
    $longdouble-idl-type,
    $char-idl-type,
    $wchar-idl-type,
    $string-idl-type,
    $wstring-idl-type,
    $octet-idl-type,
    $boolean-idl-type,
    $any-idl-type,
    $Object-idl-type,
    $TypeCode-idl-type,
    $Principal-idl-type,
    $pseudo-idl-type,
    $predefined-types,

    $no-combinator,
    $symbol-combinator,
    $add-combinator,
    $minus-combinator,
    $multiply-combinator,
    $divide-combinator,
    $modulus-combinator,
    $or-combinator,
    $xor-combinator,
    $and-combinator,
    $left-shift-combinator,
    $right-shift-combinator,
    $unary-plus-combinator,
    $unary-minus-combinator,
    $bitwise-negation-combinator,

    $no-operation-flag,
    $oneway-operation-flag,
    $idempotent-operation-flag;
end module;

