Information technology — SEDRIS —
Part 1: Functional specification
Table 8.1 lists the topics in this clause.
This clause provides a detailed definition of the syntax and semantics of each API function. The API provides the means for creating, accessing, and modifying transmittals.
The following convention is used to present information about the API. Table 8.2 itemizes the different properties of the API functions. All functions use only the DRM classes defined in 6.2 DRM class specificagtions and data types defined in 5 Fundamental data types.
Table 8.2 — API presentation format
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
A specification of the operation of the function. |
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
A list of success status codes that may apply when this function terminates. |
||||
|
Failure status codes |
A list of failure status codes that may apply when this function terminates. |
The functions declared in this clause are used to create, modify, and access transmittals. There are also functions that interface with the error handling mechanism specified by the API.
Table 8.3 — AddAssociateRelationship
| Property | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
Semantics |
Add an associate relationship from from_object to to_object provided that the following criteria are met:
It should be noted that relationships between DRM objects in different transmittals are not implicitly bi-directional, so the make_two_way parameter will have an effect in inter-transmittal referencing only if:
If only the from_object is resolved, the association can only be one way. If the DRM specifies that a link object is required for a relationship, the link_object parameter shall be used. If the DRM does not allow for the link object to exist in a relationship, the link_object parameter shall not be used. If the requested relationship has already been established, another such relationship is established and SUCCESS is returned. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||||||||
|
Input parameters |
| ||||||||||
|
Input/output parameters |
|
||||||||||
|
Output parameters |
|
||||||||||
|
Success status codes |
SUCCESS |
||||||||||
|
Failure status codes |
INVALID_ACCESS_MODE |
Table 8.4 — AddComponentRelationship
| Property | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
Semantics |
This function adds a composition relationship from aggregate_object to component_object, provided that the following criteria are met:
If the DRM specifies that a link object is required for a relationship, the link_object parameter shall be used. If the DRM does not allow for the link object to exist in a relationship, the link_object parameter shall not be used. If the requested relationship has already been established, no action is taken and SUCCESS is returned. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||||||
|
Input parameters |
|
||||||||
|
Input/output parameters |
|
||||||||
|
Output parameters |
|
||||||||
|
Success status codes |
SUCCESS |
||||||||
|
Failure status codes |
UNPUBLISHED_OBJECT |
Table 8.5 — CloneObjectHandle
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function creates a new handle to the same DRM object referenced by original_object. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
DELETED_OBJECT |
Table 8.6 — CloseTransmittal
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function closes the transmittal specified by transmittal and frees any and all memory allocated to hold the representation of the transmittal. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.7 — CreateObject
| Property | Description | ||||||
|---|---|---|---|---|---|---|---|
|
Semantics |
This function creates a new DRM object of the DRM class specified by new_object_class and inserts it into the transmittal specified by transmittal. The Fields are initialized to the default values for the specified class (see Annex D Default Field values). When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||||
|
Input parameters |
|
||||||
|
Input/output parameters |
|
||||||
|
Output parameters |
|
||||||
|
Success status codes |
SUCCESS |
||||||
|
Failure status codes |
INVALID_ACCESS_MODE |
Table 8.8 — CreateSearchFilter
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function defines a set of rules that can be used to filter DRM objects from a transmittal so that only the DRM objects that pass the rules will be returned to the user. This function only defines a set of rules; to use a set of rules after they have been defined, the set of rules is passed to an iterator creation function. The iterator will then use that set of rules to filter all DRM objects that will be returned by that iterator. The search filter referenced by search_filter can be freed at any time; a search filter does not need to stay in existence until the iterator(s) that depend on that filter are freed. (An iterator retains a copy of any search filter used to initialize that iterator). See 5.3.3.220 Search_Rule for further details on how to construct a valid set of rules. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
OUT_OF_MEMORY |
Table 8.9 — CreateSpatialSearchBoundary
| Property | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Semantics |
This function creates a spatial search boundary to limit the scope of a component iterator’s search. The spatial search boundary can be used in a later call to 8.3.56 InitializeComponentIterator to limit the spatial area that the iterator will search. Spatial search boundaries can be freed at any time; a spatial search boundary does not need to stay in existence until the iterator(s) that depend on that boundary are freed. (An iterator is expected to retain a copy of any search boundary used to initialize that iterator). If no spatial search boundary is supplied, the set of DRM objects an iterator will iterate over will be determined solely by the search rules and the starting DRM object of the search. The search_bounds parameter specifies the spatial extents of the search. The search_bounds_closure parameter specifies the boundaries to be included in the spatial extents of the search. The search_quality parameter specifies whether the location data of a DRM object should be evaluated as one point, a box containing all points, or each individual point. The inclusion parameter specifies whether to include DRM objects fully included or only partially included in the spatial extents of the search. The search_dimension parameter specifies the dimensionality of the location data to be used for evaluation. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||||||||||
|
Input parameters |
|
||||||||||||
|
Input/output parameters |
|
||||||||||||
|
Output parameters |
|
||||||||||||
|
Success status codes |
SUCCESS |
||||||||||||
|
Failure status codes |
OUT_OF_MEMORY |
Table 8.10 — DetermineSpatialInclusion
| Property | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Semantics |
This function determines whether a DRM object specified by test_object is contained within the user-specified spatial area. DetermineSpatialInclusion supplements the normal method of filtering DRM objects by spatial location (i.e., the use of search boundaries with component iterators as described under 8.3.8 CreateSpatialSearchBoundary). While DetermineSpatialInclusion can be used with any DRM object, its intended use is to find out more information about the relationship of a DRM object returned by a component iterator to the search bounds used in that iterator. The canonical example is to have the component iterator created with a partial inclusion choice, then to check DRM objects for full inclusion with DetermineSpatialInclusion. In addition to determining whether a DRM object is partly or completely inside the user-defined search bounds, this function, unlike a search boundary, will also determine whether a two-dimensional or three-dimensional DRM object completely includes the spatial extents. The search_bounds parameter specifies the spatial extents of the search. The search_bounds_closure parameter specifies the boundaries to be included in the spatial extents of the search. The search_quality parameter specifies whether the location data of a DRM object should be evaluated as one point, a box containing all points, or each individual point. The search_dimension parameter specifies the dimensionality of the location data to be used for evaluation. Three output parameters provide the results of the evaluation. The parameter object_fully_included returns whether the DRM object specified by test_object is fully included in the search area. The parameter object_partly_included returns whether test_object is partially included in the spatial extents. The parameter object_includes_search_bounds returns whether test_object fully includes the search extents. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||||||||||
|
Input parameters |
|
||||||||||||
|
Input/output parameters |
|
||||||||||||
|
Output parameters |
|
||||||||||||
|
Success status codes |
SUCCESS |
||||||||||||
|
Failure status codes |
UNRESOLVED_INPUT_OBJECT |
Table 8.11 — FreeIterator
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function frees the memory directly associated with the iterator specified by to_free_iterator. The handle to the iterator is invalid following a call to this function. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.12 — FreeObject
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function frees the memory directly associated with the DRM object handle specified by to_free_object. If multiple DRM object handles corresponding to the same DRM object have been retrieved through this API, FreeObject shall not release the memory for that DRM object until the last handle to the DRM object is passed in to FreeObject. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INVALID_OBJECT |
Table 8.13 — FreePackedHierarchy
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function frees the data associated with the Fields of a Packed_Hierarchy instance returned by 8.3.38 GetPackedHierarchy specified by to_free_hierarchy, including decrementing the reference counts of all DRM object handles in records of the object_list Field. All memory allocated by GetPackedHierarchy is freed when this function completes successfully. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.14 — FreeRemainingObjectsList
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function frees the data associated with the Fields of a Remaining_Objects_List value returned by 8.3.43 GetRemainingObjectsList and specified by to_free_list, including decrementing the reference counts of all DRM object handles in the remaining_objects_list and remaining_link_objects_list Fields. All memory allocated by 8.3.43 GetRemainingObjectsList is freed when this function completes successfully. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.15 — FreeRemainingPackedHierarchiesList
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function frees the data associated with the Fields of a Remaining_Packed_Hierarchies_List returned from 8.3.44 GetRemainingPackedHierarchies and specified by to_free_hierarchies_list including decrementing the reference counts of all DRM object handles in the records of the object_list Field contained within each Packed_Hierarchy record in the hierarchy_list Field. All memory allocated by GetRemainingPackedHierarchiesList is freed when this function completes successfully. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.16 — FreeSearchFilter
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function frees the memory directly associated with the search filter handle specified by to_free_filter. The memory was allocated during an earlier call to 8.3.7 CreateSearchFilter. The handle to the search filter is invalid following a call to this function. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.17 — FreeSpatialSearchBoundary
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function frees the memory directly associated with the spatial search boundary handle specified by to_free_boundary. The memory was allocated by this API during an earlier call to 8.3.8 CreateSpatialSearchBoundary. The handle to the spatial search boundary is invalid following a call to this function. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.18 — FreeTransmittal
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function frees the memory directly associated with the transmittal handle specified by to_free_transmittal. The memory was allocated by an earlier call to 8.3.47 GetTransmittalFromObject. The handle to the transmittal is invalid following a call to this function. Transmittal handles returned from 8.3.62 OpenTransmittalByLocation or 8.3.63 OpenTransmitalByName shall not be provided to this function. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.19 — GetAggregate
| Property | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
Semantics |
This function retrieves the instance of the DRM class of aggregate DRM object specified by drm_class that directly contains the DRM object specified by component_object as a component. If more than one valid aggregate of the specified class has component_object as a component, the first encountered aggregate is retrieved. EXAMPLE If GetAggregate is called with a <DRM Model> instance as the DRM object component_object, the <DRM Model Library> instance would be returned in component_object, since the <DRM Model Library> instance is the aggregate DRM object that contains the <DRM Model> instance as a component. The itr_traversal parameter specifies how the function will behave when it encounters an ITR reference. The function could:
This is a short form, single instance version of an aggregate iterator. It combines the creation of an iterator, making a call to 8.3.31 GetNextObject, and freeing the iterator, in the case where one and only one aggregate should be retrieved. When this function completes successfully, one of the following actions occurs:
When this function completes in error, one of the following actions occurs:
|
||||||||
|
Input parameters |
|
||||||||
|
Input/output parameters |
|
||||||||
|
Output parameters |
|
||||||||
|
Success status codes |
SUCCESS |
||||||||
|
Failure status codes |
UNRESOLVED_INPUT_OBJECT |
Table 8.20 — GetAssociate
| Property | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
Semantics |
Given a DRM object (associating_object) and the DRM class of associate for which to search (drm_class), this function retrieves an immediately associated DRM object of the given drm_class. Only DRM objects at the “to” end of a one-way association, or at either end of a two-way association, is retrieved by this function. The itr_traversal parameter specifies how the function will behave when it encounters an ITR reference. The function could:
This is a short form, single instance version of an associate iterator. It combines the creation of an iterator, making a call to 8.3.31 GetNextObject, and freeing the iterator, in the case when one and only one associate should be retrieved. When this function completes successfully, one of the following actions occurs:
When this function completes in error, one of the following actions occurs:
|
||||||||
|
Input parameters |
|
||||||||
|
Input/output parameters |
|
||||||||
|
Output parameters |
|
||||||||
|
Success status codes |
SUCCESS |
||||||||
|
Failure status codes |
UNRESOLVED_INPUT_OBJECT |
Table 8.21 — GetColourModel
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function returns the colour model currently being used in colour_model when returning <DRM Colour Data> instances from the transmittal specified by transmittal. The value returned depends on the last call made to 8.3.74 SetColourModel and/or 8.3.86 UseDefaultColourModel functions and the manner in which the transmittal was produced. Case 1: 8.3.74 SetColourModel was called more recently than 8.3.86 UseDefaultColourModel. The colour model selected by 8.3.74 SetColourModel is still the current colour model, and that colour model data will be returned. It does not matter which colour model was originally used to produce the given transmittal, since the 8.3.74 SetColourModel function was used to override any default colour model choices and forces all <DRM Colour Data> instances to be of the colour model specified by the current colour model. Case 2: 8.3.86 UseDefaultColourModel was called more recently than 8.3.74 SetColourModel or 8.3.74 SetColourModel was never called. In this case, the colour model that will be used to return <DRM Colour Data> instances from the given transmittal depends entirely on the transmittal. The colour model used to return data will be the colour model that was used when producing the transmittal. This is the default case. When this function completes successfully, the following action occurs:
When this function completes in error, the following action occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
INACTIONABLE_FAILURE |
Table 8.22 — GetComponent
| Property | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Semantics |
This function retrieves a component DRM object of the DRM class specified by drm_class (or, if drm_class specifies an abstract class, a subclass of the class specified by drm_class) from the DRM object specified by aggregate_object. If the directly_attach_table_components parameter has the value FALSE, the actual DRM objects will be retrieved. However, if the value is TRUE, the following adjustments are made:
If the value of process_inheritance is TRUE, inherited components will be considered as well as immediate components. If the value is FALSE, only immediate components will be considered. EXAMPLE Setting the process_inheritance parameter to TRUE allows asking for the <DRM Inline Colour> component of a <DRM Polygon> instance without regard to whether the <DRM Inline Colour> component was an immediate or inherited component of the <DRM Polygon> instance. An immediate component shall always take precedence over an inherited component. The itr_traversal parameter specifies how the function will behave when it encounters an ITR reference. The function could:
When this function completes successfully, one of the following actions occurs:
When this function completes in error, one of the following actions occurs:
|
||||||||||||
|
Input parameters |
|
||||||||||||
|
Input/output parameters |
|
||||||||||||
|
Output parameters |
|
||||||||||||
|
Success status codes |
SUCCESS |
||||||||||||
|
Failure status codes |
UNRESOLVED_INPUT_OBJECT |
Table 8.23 — GetContextTransformation
| Property | Description | ||||
|---|---|---|---|---|---|
|
Semantics |
This function retrieves a copy of the currently effective composition of <DRM Transformation> instances that apply to transformed_object. This is the accumulation of all transformations for one of two possible cases as described below. In the first case, the accumulated transformation is from the <DRM Environment Root> instance down to transformed_object, including any transformation components directly aggregated by that DRM object. If transformed_object, or any of the DRM objects between it and its <DRM Transmittal Root> instance, are referenced as a component from another transmittal and that transmittal is open, the accumulation is from the other transmittal’s <DRM Transmittal Root> instance. Otherwise, the accumulation is from the <DRM Transmittal Root> instance within transformed_object’s own transmittal. In the second case, the accumulated transformation is from the <DRM Model> instance down to transformed_object, including any <DRM Transformation> components directly aggregated by that DRM object. If no matrices were accumulated by transformed_object, the identity matrix shall be returned. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||
|
Input parameters |
|
||||
|
Input/output parameters |
|
||||
|
Output parameters |
|
||||
|
Success status codes |
SUCCESS |
||||
|
Failure status codes |
DELETED_OBJECT |
Table 8.24 — GetDataTableData
| Property | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
Semantics |
Given a <DRM Data Table> instance specified by data_table_object, this function copies the selected cell elements from the selected area of interest into a space in memory to which the user has direct access. The range of data cells to be retrieved is specified by extents. The number of data elements within each cell that are to be retrieved is specified by element_count. The component index of each of the data elements is specified by element_indices. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occurs:
|
||||||||||
|
Input parameters |
|
||||||||||
|
Input/output parameters |
|
||||||||||
|
Output parameters |
|
||||||||||
|
Success status codes |
SUCCESS |
||||||||||
|
Failure status codes |
UNRESOLVED_INPUT_OBJECT |
Table 8.25 — GetDRMClass
| Property | Description |
|---|---|
|
Semantics |
This function identifies the DRM class of the DRM object specified by the object parameter. When this function completes successfully, the following action occurs:
When this function completes in error, one of the following actions occ |