EssOtlVaryingGetAttributeIndepDims

Returns the independent dimensions, if any, for the given attribute member.

Syntax

ESS_FUNC_M EssOtlVaryingGetAttributeIndepDims (hOutline, hAttrMember, *pCountOfIndepDims, **ppIndepDims, **ppucIndependentTypes);
ParameterData TypeDescription

hOutline

ESS_HOUTLINE_T

Outline context handle

hAttrMember

ESS_HMEMBER_T

Attribute member handle

*pCountOfIndepDims

ESS_INT32_T

Pointer to the number of independent dimensions that control the varying attributes

**ppIndepDims

ESS_HMEMBER_T

Pointer to an array of member handles for the independent dimensions

**ppucIndependentTypes

ESS_UCHAR_T

Pointer to an array of independent types contained in *pIndepDims

Notes

An independent dimension is a dimension the values of which identify where the attribute associations may change. Independent dimensions are selected when attribute dimensions are associated with a base dimension. VaryingGetAttributeIndepDims returns a list of independent dimensions associated with the dimension of the specified attribute.

Return Value

Returns 0 if successful.

Example

void TestEssOtlVaryingGetAttributeIndepDims()
{
	ESS_STS_T	sts = ESS_STS_NOERR;
	ESS_HOUTLINE_T	hOutline = ESS_NULL;
	ESS_OBJDEF_T	Object;
	ESS_STR_T	attrMbr, attrDim, baseMbr, baseDim;
	ESS_USHORT_T	i;
	ESS_HMEMBER_T	hAttrMbr;
	ESS_HMEMBER_T	hAttrDim;
	ESS_HMEMBER_T	hBaseMbr;
	ESS_HMEMBER_T	hBaseDim;
	ESS_INT32_T	pCountOfIndepDims;
	ESS_HMEMBER_T	*ppIndepDims;
	ESS_PMBRINFO_T	pMemberInfo;
	ESS_UCHAR_T	*pucIndependentTypes;


	memset(&Object, '\0', sizeof(Object)); 
	Object.hCtx = hCtx;
	Object.ObjType = ESS_OBJTYPE_OUTLINE;
	Object.AppName = szAppName;
	Object.DbName = szDbName;
	Object.FileName = szDbName;
 
	printf("\n");
	sts = EssOtlOpenOutline(hCtx, &Object, ESS_TRUE, ESS_TRUE, &hOutline);
	printf("EssOtlOpenOutline sts: %ld\n",sts);   

	printf("\nGet handles of members for tests:\n");
	attrMbr = "Contractor";
	sts = EssOtlFindMember(hOutline, attrMbr, &hAttrMbr);
	printf("EssOtlFindMember sts: %d\n", sts);
	attrDim = "Type";
	sts = EssOtlFindMember(hOutline, attrDim, &hAttrDim);
	printf("EssOtlFindMember sts: %d\n", sts);
	baseMbr = "Doe,Jane";
	sts = EssOtlFindMember(hOutline, baseMbr, &hBaseMbr);
	printf("EssOtlFindMember sts: %d\n", sts);
	baseDim = "Entities";
	sts = EssOtlFindMember(hOutline, baseDim, &hBaseDim);
	printf("EssOtlFindMember sts: %d\n", sts);

	/* Valid case with a valid attribute member handle. */
	printf("\nValid case with a valid attribute member handle:\n");
	sts = EssOtlVaryingGetAttributeIndepDims(hOutline, hAttrMbr, &pCountOfIndepDims, &ppIndepDims, &pucIndependentTypes);
	printf("EssOtlVaryingGetAttributeIndepDims sts: %d\n", sts);
	if(pCountOfIndepDims)
	{
		printf("Independent dimension(s) for attribute member %s:", attrMbr);
		for (i = 0; i < pCountOfIndepDims; i++)
		{
			sts = EssOtlGetMemberInfo(hOutline, ppIndepDims[i], &pMemberInfo);
			printf("\n\t%s", pMemberInfo->szMember);
			switch(pucIndependentTypes[i])
			{
				case ESS_ASSOCIATE_TYPE_CONTINUOUS:
					printf(" - (Continuous)");
					break;
				case ESS_ASSOCIATE_TYPE_DISCRETE:
					printf(" - (Discrete)");
					break;
			}
		}
		printf("\n");
	}
	else
		printf("\tAttribute member %s has no independent dimension.\n", attrMbr);

	sts = EssUnlockObject(hCtx, ESS_OBJTYPE_OUTLINE, Object.AppName, Object.DbName, Object.FileName);
	printf("\nEssUnlockObject sts: %d\n", sts);

	sts = EssOtlCloseOutline(hOutline);
	printf("EssOtlCloseOutline sts: %d\n",sts);
}

See Also