# EssOtlVerifyOutline

Description

EssOtlVerifyOutline() verifies that an outline is correct. The function returns both global outline errors and errors for each incorrect member.

Syntax

    ESS_FUNC_M EssOtlVerifyOutline (hOutline, pulErrors, pulCount, pMbrErrors);

ESS_HOUTLINE_T | hOutline
ESS_PULONG_T | pulErrors
ESS_PULONG_T | pulCount
ESS_PPOUTERROR_T | pMbrErrors

Parameters

hOutline | Outline context handle.
pulErrors | Pointer to bitmask destination for global outline errors. Currently, this field has only one value: ESS_OUTERROR_CURTOOMANYDIMS
pulCount | Count of members with errors. This defines the number of elements of the pMbrErrors array.
pMbrErrors | Pointer to an array with *pulCount members. Each element of the array contains the errors for a single member.

Return Value

Returns 0 if successful; otherwise one of the following:

ESS_OUTERROR_SHAREUDA
ESS_OUTERROR_DUPGENLEVNAME

Notes

- This function checks for:
  - Duplicate user attributes in shared members
  - Duplicate level or generation names or aliases
  - Restrictions on adding and associating attributes
- Saving the outline to the server succeeds only when the outline is free of errors (*pulErrors == 0 and *pulCount == 0).
- Use EssFree() to free the pMbrErrors array.

Example

    #include <essapi.h>
    #include <essotl.h>

    ESS_STS_T          sts = 0;
    ESS_OBJDEF_T       Object;
    ESS_HOUTLINE_T     hOutline;
    ESS_ULONG_T        ulErrors;
    ESS_ULONG_T        ulCount;
    ESS_POUTERROR_T    pMbrErrors = ESS_NULL;
    ESS_APPNAME_T      szAppName;
    ESS_DBNAME_T       szDbName;
    ESS_OBJNAME_T      szFileName;

    memset(&Object, '\0', sizeof(Object));
    Object.hCtx = hCtx;
    Object.ObjType = ESS_OBJTYPE_OUTLINE;
    strcpy(szAppName, "Sample");
    strcpy(szDbName, "Basic");
    strcpy(szFileName, "Basic");
    Object.AppName = szAppName;
    Object.DbName = szDbName;
    Object.FileName = szFileName;

    sts = EssOtlOpenOutline(hCtx, &Object, ESS_TRUE,
         ESS_TRUE, &hOutline);

    if (!sts)
    {
       sts = EssOtlVerifyOutline(hOutline, &ulErrors,
             &ulCount, &pMbrErrors);
    }

    if (pMbrErrors)
    {
       EssFree(hInst, pMbrErrors);
    }

See Also

EssOtlNewOutline()
EssOtlOpenOutline()
EssOtlWriteOutline()