TOC PREV NEXT INDEX

OMfind_subobj, OMlookup_subobj, OMfind_obj

Synopsis


OMobj_id OMfind_subobj (OMobj_id parent_id,
OMobj_name search_name, int mode);
OMobj_id OMlookup_subobj (OMobj_id parent_id,
OMobj_name search_name, int mode);
OMobj_id OMfind_obj (OMobj_id object_id,
OMobj_name search_name, int mode);

Description

These routines search for an object, which you specify by name, and return the object's id.The routines differ in the scope of their search.
This routine...
confines its search to...
OMfind_subobj
I mmediate subobjects of parent_id.This is the routine you typically call.
OMlookup_subobj
Any subobject of parent_id , including immediate subobjects and lower-level subobjects. If multiple instances of search_name exist, AVS/Express returns the id of the first one it finds.
OMfind_obj
The following objects, in order:The object specified by object_id .The immediate subobjects of object_id .An ancestor of object_id .
These routines extend their search beyond the scope described above when they encounter a global library object as a subobject. In this case, they will search through the subobjects of the global library as well. This functionality can be disabled by OR'ing in the flag OM_FIND_NO_LIBRARIES into the mode argument.

Arguments

parent_id object_id
An object id. The search is performed in the context of this object.
search_name
The unqualified name of the object to find.
mode
n integer code specifying the array's data type. AVS/Express provides the following symbolic constants, defined in <avs/dtype.h>:
number_of_elements
Indication of how the process intends to use the object.
Mode
Meaning
OM_OBJ_RD
The process intends to read the object, but not write to it (or any object that it might get using this id).
OM_OBJ_RW
The process intends to read and possibly write to the object.
Consider the following V code: group g { int a=1; }; g g1;When g1 is created, AVS/Express does not immediately create its subobjects. Rather, for each subobject, AVS/Express waits until the subobject is actually referenced, for example, a value is assigned to it.If mode is OM_OBJ_RD and the subobject has not yet been created, AVS/Express returns instead the id of the template subobject, in this example, g.a. This works provided the program intends only to read the object.If mode is OM_OBJ_RW, AVS/Express always returns the id of the subobject, in this example, g1.a. If the subobject does not yet exist, AVS/Express creates it.Optionally, you can OR into the mode parameter additional flags to qualify the object search.
Flag
Meaning
OM_FIND_NO_LIBRARIES
Do not search recursively for subobjects in global libraries.
OM_FIND_NO_VIRTUAL
Do not search for virtual objects.
OM_SUB_TEMPL
If parent_id is a group pointer or reference, by default AVS/Express returns the id of parent_id 's subobject.OM_SUB_TEMPL specifies that AVS/Express should instead return the id of the subobject in parent_id 's template object.

Returned value

The returned value is either the found object's id or, if OMfind_obj failed, OMnull_obj(see Return Status ).

Example 1


/* Find subobject x. Its parent's id is grp1_id. */
OMobj_id grp1_id, x_id;
...
x_id = OMfind_subobj(grp1_id, OMstr_to_name("x"),
OM_OBJ_RD);
if OMis_null_obj(x_id)
printf("Error searching for x\n");

Example 2


/* Find object x in the context of the object whose id
__is grp1_id. */
OMobj_id grp1_id, x_id;
...
x_id = OMfind_obj(grp1_id, OMstr_to_name("x"), OM_OBJ_RD);
if (OMis_null_obj(x_id))
printf("Error searching for x\n");

See Also

none.

TOC PREV NEXT INDEX