6.11.1 IDLの定義

interface Container:IRObject {
   Contained lookup(in ScopedName search_name);
   ContainedSeq contents(
       in DefinitionKind limit_type,
       in boolean exclude_inherited);
   ContainedSeq lookup_name(
       in Identifier search_name,
       in long levels_to_search,
       in DefinitionKind limit_type,
       in boolean exclude_inherited
   );
   struct Description {
       Contained contained_object;
       DefinitionKind kind;
       any value;
   };
   typedef sequence<Description>DescriptionSeq;

   DescriptionSeq describe_contents(
       in DefinitionKind limit_type,
       in boolean exclude_inherited,
       in long max_returned_objs);
   ModuleDef create_module,
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version);

   ConstantDef create_constant(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version,
       in IDLType type,
       in any value);
   StructDef create_struct(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version,
       in StructMemberSeq members);

   NativeDef create_native(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version);

   UnionDef create_union(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version,
       in IDLType discriminator_type,
       in UnionMemberSeq members);

   EnumDef create_enum(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version,
       in EnumMemberSeq members);

   AliasDef create_alias(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version,
       in IDLType original_type);

   ExceptionDef create_exception(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version,
       in StructMemberSeq members);

   InterfaceDef create_interface(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version,
       in InterfaceDefSeq base_interfaces,
       in boolean is_abstract);

   ValueDef create_value(
       in RepositoryId id,
       in Identifier name,
       in VersionSpec version,
       in boolean is_custom,
       in boolean is_abstract,
       in ValueDef base_value,
       in boolean is_truncatable,
       in ValueDefSeq abstract_base_values,
       in InterfaceDefSeq supported_interfaces,
       in InitializerSeq initializers);
};