The Container interface describes attributes and operations that can contain objects:
Repository
ModuleDef
InterfaceDef
typedef sequence Contained ContainerSeq;
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(
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>);
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>);
InterfaceDef create_interface(
in RepositoryId <id>,
in Identifier <name>,
in VersionSpec <version>,
in InterfaceDefSeq <base_interfaces>);
ExceptionDef create_exception(in RepositoryId <id>,
in Identifier <name>,
in VersionSpec <version>,
in StructMemberSeq <members>);
};
This operation returns a list of all objects contained by the object.
ContainedSeq contents( in InterfaceName <restrict_type>, in boolean <exclude_inherited>);
<restrict_type>
<exclude_inherited>This creates a new AliasDef object within the target Container. The defined_in attribute is set to the target Container. The containing_repository attribute is set to the Repository in which the new AliasDef object is defined.
AliasDef create_alias(in RepositoryId <id>,
in Identifier <name>,
in VersionSpec <version>,
in IDLType <original_type>);
<id>AliasDef object. An error is returned if an Interface Repository object with the same <id> already exists in the object repository.
<name>AliasDef object. It is an error to specify a name that already exists in the object's Container when multiple versions are not supported.
<version>AliasDef.
<original_type> This operation creates a ConstantDef object within the target Container. The containing_repository attribute is set to the Repository in which the new ConstantDef object is defined.
ConstantDef create_constant(in RepositoryId <id>, in Identifier <name>, in VersionSpec <version>, in IDLType <type>, in any <value>);
<id>ConstantDef object. An error is returned if an Interface Repository object with the same id already exists in the object repository.
<name>ConstantDef object. It is an error to specify a name that already exists in the object's Container when multiple versions are not supported.
<version>ConstantDef.
<type>long, short, ulong, ushort, float, double, char, string, boolean).
<value>This operation creates a EnumDef object within the target Container. The containing_repository attribute is set to the Repository in which the new EnumDef object is defined.
EnumDef create_enum(in RepositoryId <id>, in Identifier <name>, in VersionSpec <version>, in EnumMemberSeq <members>);
<id>EnumDef object. An error is returned if an Interface Repository object with the same <id> already exists in the Object Repository.
<name>EnumDef object. It is an error to specify a name that already exists in the object's Container when multiple versions are not supported.
<version>EnumDef.
<members>EnumMember structures that describe each member of the new EnumDef object.This operation creates a ExceptionDef object within the target Container. The defined_in attribute is set to Container. The containing_repository attribute is set to the Repository in which the new ExceptionDef object is defined. The <type> attribute of the StructMember structures is ignored.
ExceptionDef create_exception(in RepositoryId <id>, in Identifier <name>, in VersionSpec <version>, in StructMemberSeq <members>);
<id>ExceptionDef object. An error is returned if an Interface Repository object with the same <id> already exists in the Object Repository.
<name>ExceptionDef object. It is an error to specify a name that already exists in the object's Container when multiple versions are not supported.
<version>ExceptionDef.
<members>StructMember structures that describe each member of the new ExceptionDef object.This operation creates a new empty InterfaceDef object within the target Container. The defined_in attribute is set to Container. The containing_repository attribute is set to the Repository in which the new InterfaceDef object is defined.
InterfaceDef create_interface( in RepositoryId <id>, in Identifier <name>, in VersionSpec <version>, in InterfaceDefSeq <base_interfaces>);
<id>InterfaceDef object. An error is returned if an Interface Repository object with the same <id> already exists in the Object Repository.
<name>InterfaceDef object. It is an error to specify a name that already exists in the object's Container when multiple versions are not supported.
<version>InterfaceDef.
<base_interfaces>InterfaceDef objects from which the new interface inherits.This operation creates an empty ModuleDef object within the target Container. The defined_in attribute is set to Container. The containing_repository attribute is set to the Repository in which the newly created ModuleDef object is defined.
ModuleDef create_module( in RepositoryId <id>, in Identifier <name>, in VersionSpec <version>);
<id>ModuleDef object. An error is returned if an Interface Repository object with the same <id> already exists in the Object Repository.
<name>ModuleDef object. It is an error to specify a name that already exists in the object's Container when multiple versions are not supported.
<version>ModuleDef.This operation creates a StructDef object within the target Container. The defined_in attribute is set to Container. The containing_repository attribute is set to the Repository in which the new StructDef object is defined. The type attribute of the StructMember structures is ignored.
StructDef create_struct( in RepositoryId <id>, in Identifier <name>, in VersionSpec <version>, in StructMemberSeq <members>);
<id>StructDef object. An error is returned if an Interface Repository object with the same <id> already exists in the Object Repository.
<name>StructDef object. It is an error to specify a name that already exists in the object's Container when multiple versions are not supported.
<version>StructDef.
<members>StructMember structures that describe each member of the new StructDef object.This operation creates a UnionDef object within the target Container. The defined_in attribute is set to Container. The containing_repository attribute is set to the Repository in which the new UnionDef object is defined. The type attribute of the UnionMember structures is ignored.
UnionDef create_union( in RepositoryId <id>, in Identifier <name>, in VersionSpec <version>, in IDLType <discriminator_type>, in UnionMemberSeq <members>);
<id>UnionDef object. An error is returned if an Interface Repository object with the same <id> already exists in the Object Repository.
<name>UnionDef object. It is an error to specify a name that already exists in the object's Container when multiple versions are not supported.
<version>UnionDef.
<discriminator_type>
<members>UnionMember structures that describe each member of the new UnionDef object.This operation returns a sequence of structures of type Container::Description. It is actually a combination of Contained::describe(nbsp;) and Container::contents(nbsp;).
DescriptionSeq describe_contents(
in DefinitionKind <limit_type>,
in boolean <exclude_inherited>,
in long <max_returned_objs>);
<limit_type>DefinitionKind for a specific interface, it returns only objects of that type.
<exclude_inherited>
<max_returned_objs>This operation locates an object name within the target container. The objects can be directly or indirectly defined in or inherited into the target container.
Contained lookup(in ScopedName <search_name>);
<search_name>This operation returns all objects with the name <search_name> from within an Interface Repository object.
ContainedSeq lookup_name(
in Identifier <search_name>,
in long <levels_to_search>,
in InterfaceName <limit_type>,
in boolean <exclude_inherited>);
<search_name>
<levels_to_search>
<limit_type>DefinitionKind for a specific interface, it returns only objects of that type.
<exclude_inherited>