Frees memory dynamically allocated by EssGetAttributeInfo() and EssGetMemberInfo() for string type attribute information.
Syntax
Parameter | Data Type | Description |
---|---|---|
hInst; | ESS_HINST_T | The instance handle of the process that called EssGetAttributeInfo() or EssGetMemberInfo() to allocate the structure. |
structId; | ESS_ULONG_T | One of the following constant identifiers for the structure:
|
count; | ESS_ULONG_T | Number of structures |
structPtr; | ESS_PVOID_T | Pointer to memory |
Notes
Always call this function to free structures allocated with either EssGetAttributeInfo() or EssGetMemberInfo() before you leave the local routine.
Access
This function requires no special privileges.
Example
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); }
See Also