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()