46 static const char dummy_str[] =
"\0";
59 return root->grp->groupName;
74 if ((pGroup == gref.ptr.group) ||
83 search = pGroup->hashIngred[
id & 0xff];
94 if ((pGroup == gref.ptr.group) ||
103 search = pGroup->hashIngred[
id & 0xff];
109 while (search && (search->root.id !=
id))
111 search = search->hnxt;
134 TRACE(TERROR, (
"INTERNAL: NULL params")) *
140 switch (params->generic.type)
144 *
object = MHEG5findObject(params->generic.value.o.gref, params->generic.value.o.id);
147 TRACE(TEVNTS, (
"Object reference %d not found", params->generic.value.o.id));
153 TRACE(TERROR, (
"INTERNAL: type=%d", params->generic.type)) *
189 TRACE(TERROR, (
"INTERNAL: NULL params"))
191 pgroupRef->ptr.group = 0;
197 if (params->generic.indirect)
200 object = MHEG5findObject(params->generic.value.o.gref, params->generic.value.o.id);
201 if (
object && object->clazz == MHEG5OBJECTREFVARIABLE)
211 pgroupRef->ptr.group =
object->grp;
218 pgroupRef->ptr.group = 0;
224 switch (params->generic.type)
227 if (params->generic.value.o.gref.len == 0)
231 pgroupRef->ptr.name = (MHEG5Byte *)dummy_str;
235 *pgroupRef = params->generic.value.o.gref;
236 *
id = params->generic.value.o.id;
240 TRACE(TERROR, (
"Invalid direct reference %d", params->generic.type));
242 pgroupRef->ptr.group = 0;
260 if (objref->clazz != MHEG5OBJECTREFVARIABLE)
262 TRACE(TERROR, (
"Indirect reference is not ObjRefVariable"))
268 TRACE(TERROR, (
"ObjRefVariable does not have target group"))
288 next = MHEG5resolveORef(params,
object);
289 if (params->generic.indirect && *
object != NULL)
291 *
object = MHEG5resolveRealObject( *
object );
300 MHEG5Bool *referenced, MHEG5Bool *valid)
316 if (params->generic.indirect)
318 next = MHEG5resolveORef(params, &
object);
321 if (object->clazz == MHEG5CONTENTREFVARIABLE)
324 *referenced = MHEG5TRUE;
327 else if (object->clazz == MHEG5OCTETSTRINGVARIABLE)
331 *referenced = MHEG5FALSE;
338 switch (params->generic.type)
340 case MHEG5OCTETSTRING:
341 *data = params->generic.value.s;
342 *referenced = MHEG5FALSE;
346 case MHEG5CONTENTREF:
347 *data = params->generic.value.s;
348 *referenced = MHEG5TRUE;
377 value->isfirst = MHEG5FALSE;
378 value->indirect = MHEG5FALSE;
379 if (params->generic.indirect)
381 next = MHEG5resolveORef(params, &
object);
384 switch (object->clazz)
386 case MHEG5BOOLEANVARIABLE:
387 value->type = MHEG5BOOL;
390 case MHEG5INTEGERVARIABLE:
391 value->type = MHEG5INT;
394 case MHEG5OCTETSTRINGVARIABLE:
395 value->type = MHEG5OCTETSTRING;
398 case MHEG5CONTENTREFVARIABLE:
399 value->type = MHEG5CONTENTREF;
402 case MHEG5OBJECTREFVARIABLE:
403 value->type = MHEG5OBJECTREF;
405 value->value.o.gref.len = objref->valueGrp.len;
406 value->value.o.gref.ptr.name = objref->valueGrp.data;
407 value->value.o.id = objref->valueId;
410 value->type = MHEG5NONE;
414 value->type = MHEG5NONE;
418 value->type = params->generic.type;
419 switch (params->generic.type)
422 value->value.b = params->generic.value.b;
426 value->value.i = params->generic.value.i;
429 case MHEG5OCTETSTRING:
430 value->value.s = params->generic.value.s;
433 case MHEG5CONTENTREF:
434 value->value.s = params->generic.value.s;
438 value->type = MHEG5OBJECTREF;
444 value->type = MHEG5NONE;
460 next = MHEG5resolveGenericGeneric(params, &g);
461 if (g.type == MHEG5BOOL)
480 MHEG5Bool *invalidString)
486 assert(invalidString);
489 next = MHEG5resolveGenericGeneric(params, &g);
491 if (g.type == MHEG5OCTETSTRING)
495 *invalidString = MHEG5FALSE;
502 *invalidString = MHEG5TRUE;
516 next = MHEG5resolveGenericGeneric(params, &g);
517 if (g.type == MHEG5INT)
MHEG5GList * MHEG5resolveGenericOctetString(MHEG5GList *params, MHEG5String *value, MHEG5Bool *invalidString)
Resolve a parameter reference to a generic octet string. The reference can be either direct or indire...
MHEG5Bool MHEG5sameGroup(MH5GroupPtr gptr, MH5GroupRef gref)
Compares group ptr with group ref to see whether they both reference the same group. The first is pointer to group, the second can be a relative group name and will be converted to absolute prior to the comparison, so two different references that resolve to reference the same group name produces a True return value.
Implement the MHEG5 Stream Class Stream Class Defines the behaviour of a composition of continuous me...
Implement the MHEG5 Variable Class 21 Variable Class Defines a variable within the context of a Group...
This file defines the profile for the MHEG engine.
Implement Functions to support Service Gateways. Functions for standarizing several GroupIDs like +DS...
MHEG5String MHEG5getGroupId(MHEG5Root *root)
<Function description>="">
MHEG5GList * MHEG5resolveGenericORefProper(MHEG5GList *params, MH5GroupRef *pgroupRef, MHEG5Int *id)
Resolve a generic object reference, returning the object reference. The reference can be direct or in...
Implement functions to retrieve MHEG5objects by GroupID and ID.
Implementation of the MHEG5 Application Class Defines a set of Ingredient objects, which are shared within an application scope. Base class: Group Subclasses: None Status: Concrete class.
Implementation of the MHEG5 Scene Class Scene Class Defines a set of Ingredient objects to be activat...
Mheg5 logging and debug printing.
MHEG5Scene * MHEG5getCurrentScene(void)
<Function description>="">
MHEG5Application * MHEG5getCurrentApplication(void)
<Function description>="">