om_create(3xom) — Subroutines
(c) Digital Equipment Corporation. 1994. All rights reserved.
Name
om_create − Creates a new private object that is an instance of a particular class.
Syntax
OM_return_code om_create(class, initialise, workspace, object)
| Argument | Data Type | Access |
| class | OM_object_identifier | read |
| initialise | OM_boolean | read |
| workspace | OM_workspace | read |
| object | OM_private_object | write |
| return_code | OM_return_code |
C Binding
OM_return_code om_create(class, initialise, workspace, object) OM_object_identifier class,
OM_boolean initialise,
OM_workspace workspace,
OM_private_object ∗object
Arguments
ClassThe class of the object you are creating. It must be a concrete class.
InitialiseIf you set this argument to OM_TRUE, the object that you create has some of its attributes initialized. These are the attributes for which initial values are specified in the class definition table. You can find these class definition tables in the documentation for the X.400 and X.500 APIs.
If you set this argument to OM_FALSE, the object you create has only its Class attribute initialized.
WorkspaceThe workspace in which the Service should create the object. The class you specify for the object must be in a package that you have already associated with this workspace.
ObjectThis is the created object. The Service returns this argument if the Return Code of the routine is OM_SUCCESS.
Description
This routine creates a private object in the workspace that you specify.
You can add new values and replace or remove existing values, any time after the object has been created. In this way, you can create any possible instance of the object’s class.
Return Values
| OM_SUCCESS | The routine has completed its task successfully |
| OM_FUNCTION_DECLINED | The routine does not apply to the object to which it is addressed |
| OM_FUNCTION_INTERRUPTED | The routine was aborted by external intervention |
| OM_MEMORY_INSUFFICIENT | There is not enough memory to complete the routine |
| OM_NETWORK_ERROR | The Service cannot use the underlying network |
| OM_NO_SUCH_CLASS | There is an undefined class identifier |
| OM_NO_SUCH_WORKSPACE | You have specified a nonexistent workspace |
| OM_NOT_CONCRETE | A class is abstract, not concrete |
| OM_PERMANENT_ERROR | The Service encountered a permanent problem for which there is no defined error code |
| OM_POINTER_INVALID | An invalid pointer was supplied as a routine argument |
| OM_SYSTEM_ERROR | The Service cannot use the operating system |
| OM_TEMPORARY_ERROR | The Service encountered a temporary problem for which there is no defined error code |
Examples
The first example shows how to create a private object of Message Handling (MH) class Local Per-recipient NDR, with the Initialise argument set to OM_FALSE; the routine does not initialize any of the object’s attributes.
OM_private_object ndr;
OM_workspace workspace;
OM_return_code result;
result = om_create (MH_C_LOCAL_PER_RECIP_NDR, /∗ class of object ∗/
OM_FALSE, /∗ do not init attribs ∗/
workspace, /∗ w/s in which obj created∗/
&ndr); /∗ created object ∗/
The second example shows the creation of a private object of X.500 class Entry-Info-Selection, with the Initialise argument set to OM_TRUE; the routine initializes two of the object’s attributes.
OM_private_object select_info;
OM_workspace workspace;
OM_return_code result;
result = om_create (DS_C_ENTRY_INFO_SELECTION,/∗ class of object ∗/
OM_TRUE, /∗ initialise attributes ∗/
workspace, /∗ w/s in which obj created∗/
&select_info); /∗ created object ∗/