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>