# EssFreeStructure

Description

EssFreeStructure() frees memory dynamically allocated by EssGetAttributeInfo() and EssGetMemberInfo() for string type attribute information.

Syntax

ESS_FUNC_M EssFreeStructure (hInst, structId, count, structPtr);

ESS_HINST_T | hInst;
ESS_ULONG_T | structId;
ESS_ULONG_T | count;
ESS_PVOID_T | structPtr;

Parameters

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: ESS_DT_STRUCT_ATTRIBUTEINFO ESS_DT_STRUCT_ATTRSPECS ESS_DT_STRUCT_MEMBERINFO
count | Number of structures
structPtr | Pointer to memory

Return Value

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

EssCheckAttributes()
EssGetAssociatedAttributesInfo()
EssGetAttributeInfo()
EssGetAttributeSpecifications()
EssOtlAssociateAttributeDimension()
EssOtlAssociateAttributeMember()
EssOtlDisassociateAttributeDimension()
EssOtlDisassociateAttributeMember()
EssOtlFindAttributeMembers()
EssOtlFreeStructure()
EssOtlGetAssociatedAttributes()
EssOtlGetAttributeInfo()
EssOtlGetAttributeSpecifications()
EssOtlQueryAttributes()
EssOtlSetAttributeSpecifications()