EssFreeStructure() frees memory dynamically allocated by EssGetAttributeInfo() and EssGetMemberInfo() for string type attribute information.
ESS_FUNC_M EssFreeStructure (hInst, structId, count, structPtr);
| ESS_HINST_T | hInst; |
| ESS_ULONG_T | structId; |
| ESS_ULONG_T | count; |
| ESS_PVOID_T | structPtr; |
| hInst | The instance handle of the process that called EssGetAttributeInfo() or EssGetMemberInfo() to allocate the structure. |
| structId | One of the following constant identifiers for the structure:
|
| count | Number of structures |
| structPtr | Pointer to memory |
This function requires no special privileges.
void ESS_GetAttributeSpecifications()
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_PATTRSPECS_T pAttrSpecs;
sts = EssGetAttributeSpecifications(hCtx, &pAttrSpecs);
printf("\n ---------Attribute Specifications--------\n\n");
if (sts) return(sts);
switch(pAttrSpecs->usGenNameBy)
{
case ESS_GENNAMEBY_PREFIX:
printf("\n Prefix/Suffix : Prefix");
break;
case ESS_GENNAMEBY_SUFFIX:
printf("\n Prefix/Suffix : Suffix");
break;
default:
printf("\n Prefix/Suffix : None");
break;
}
switch(pAttrSpecs->usUseNameOf)
{
case ESS_USENAMEOF_PARENT:
printf("\n Use Name of : Parent");
break;
case ESS_USENAMEOF_GRANDPARENTANDPARENT:
printf("\n Use Name of : Grand Parent and Parent");
break;
case ESS_USENAMEOF_ALLANCESTORS:
printf("\n Use Name of : All Ancestors");
break;
case ESS_USENAMEOF_DIMENSION:
printf("\n Use Name of : Dimension");
break;
case ESS_USENAMEOF_NONE:
printf("\n Use Name of : None");
break;
default:
printf("\n Use Name of : Invalid setting");
break;
}
switch(pAttrSpecs->cDelimiter)
{
case ESS_DELIMITER_PIPE:
printf("\n Delimiter : '|'");
break;
case ESS_DELIMITER_UNDERSCORE:
printf("\n Delimiter : '_'");
break;
case ESS_DELIMITER_CARET:
printf("\n Delimiter : '^'");
break;
default:
printf("\n Delimiter : Invalid setting");
break;
}
switch(pAttrSpecs->usDateFormat)
{
case ESS_DATEFORMAT_DDMMYYYY :
printf("\n Date Format : DD-MM-YYYY");
break;
case ESS_DATEFORMAT_MMDDYYYY :
printf("\n Date Format : MM-DD-YYYY");
break;
default:
printf("\n Date Format : Invalid setting");
break;
}
switch(pAttrSpecs->usBucketingType)
{
case ESS_UPPERBOUNDINCLUSIVE :
printf("\n Bucketing Type : Upper Bound inclusive");
break;
case ESS_UPPERBOUNDNONINCLUSIVE :
printf("\n Bucketing Type : Upper Bound non-inclusive");
break;
case ESS_LOWERBOUNDINCLUSIVE :
printf("\n Bucketing Type : Lower Bound inclusive");
break;
case ESS_LOWERBOUNDNONINCLUSIVE :
printf("\n Bucketing Type : Lower Bound non-inclusive");
break;
default:
printf("\n Bucketing Type : Invalid setting");
break;
}
printf("\n Default for TRUE : %s",pAttrSpecs->pszDefaultTrueString);
printf("\n Default for FALSE : %s",pAttrSpecs->pszDefaultFalseString);
printf("\n Default for Attr Calc : %s",pAttrSpecs->pszDefaultAttrCalcDimName);
printf("\n Default for Sum : %s",pAttrSpecs->pszDefaultSumMbrName);
printf("\n Default for Count : %s",pAttrSpecs->pszDefaultCountMbrName);
printf("\n Default for Average : %s",pAttrSpecs->pszDefaultAverageMbrName);
printf("\n Default for Min : %s",pAttrSpecs->pszDefaultMinMbrName);
printf("\n Default for Max : %s",pAttrSpecs->pszDefaultMaxMbrName);
printf("\n");
EssFreeStructure(hInst, ESS_DT_STRUCT_ATTRSPECS, 1,(ESS_PVOID_T)pAttrSpecs);
}
EssCheckAttributes()
EssGetAssociatedAttributesInfo()
EssGetAttributeInfo()
EssGetAttributeSpecifications()
EssOtlAssociateAttributeDimension()
EssOtlAssociateAttributeMember()
EssOtlDisassociateAttributeDimension()
EssOtlDisassociateAttributeMember()
EssOtlFindAttributeMembers()
EssOtlFreeStructure()
EssOtlGetAssociatedAttributes()
EssOtlGetAttributeInfo()
EssOtlGetAttributeSpecifications()
EssOtlQueryAttributes()
EssOtlSetAttributeSpecifications()