EssOtlVaryingGetAttributeIndepDims

指定した属性メンバーの、独立次元を戻します(ある場合)。

構文

            ESS_FUNC_M EssOtlVaryingGetAttributeIndepDims (
            hOutline, hAttrMember, *pCountOfIndepDims, **ppIndepDims, **ppucIndependentTypes
            );
         
パラメータデータ型説明

hOutline

ESS_HOUTLINE_T

アウトラインのコンテキスト・ハンドル

hAttrMember

ESS_HMEMBER_T

属性メンバーのハンドル

*pCountOfIndepDims

ESS_INT32_T

可変属性を制御する独立次元の数へのポインタ

**ppIndepDims

ESS_HMEMBER_T

独立次元についてのメンバー・ハンドルの配列へのポインタ

**ppucIndependentTypes

ESS_UCHAR_T

*pIndepDimsに含まれる独立次元の配列へのポインタ

備考

独立次元は、属性の関連付けが変化する可能性がある状況を識別する値を持つ次元です。独立次元は属性次元が基本次元と関連付けられる場合に選択されます。VaryingGetAttributeIndepdimsは、指定した属性の次元と関連付けられた独立次元のリストを戻します。

戻り値

成功の場合、0が戻されます。

         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);
}
      

関連トピック