static c_bool
idl_isCatsDefFor(
    c_metaObject scope,
    c_char *typeName,
    c_char *key)
{
    idl_catsDef catsDef = idl_catsDefDefGet();
    idl_catsMap catsMap;
    c_long catsMapIdx;
    c_iter catsList;
    os_uint32 catsListSize;
    os_uint32 catsIdx;

    if (catsDef != NULL) {
        /* check all cats definition list elements */
        for (catsMapIdx = 0; catsMapIdx < c_iterLength(catsDef->catsList); catsMapIdx++) {
            catsMap = c_iterObject(catsDef->catsList, catsMapIdx);
            if (c_metaCompare(scope, catsMap->scope) == E_EQUAL &&
                strcmp(typeName, catsMap->typeName) == 0)
            {
                /* for each cats in catsList, check if it's equal to key */
                catsList = c_splitString(catsMap->catsList, ",");
                catsListSize = c_iterLength(catsList);
                for(catsIdx = 0; catsIdx < catsListSize; catsIdx++)
                {
                    if (strcmp(c_iterTakeFirst(catsList), key) == 0) {
                        return OS_TRUE;
                    }
                }
            }
        }
    }

    return OS_FALSE;
}
示例#2
0
/* Check if there is a stac applied to the given key. */
c_bool
idl_isStacDefFor(
    c_metaObject scope,
    c_char *typeName,
    c_char *key)
{
    idl_stacDef stacDef = idl_stacDefDefGet();
    idl_stacMap stacMap;
    c_ulong stacMapIdx;
    c_iter stacList;
    os_uint32 stacListSize;
    os_uint32 stacIdx;
    os_boolean stacDefFor = OS_FALSE;

    if (stacDef != NULL) {
        /* check all stac definition list elements */
        for (stacMapIdx = 0; stacMapIdx < c_iterLength(stacDef->stacList) && !stacDefFor; stacMapIdx++) {
            stacMap = c_iterObject(stacDef->stacList, stacMapIdx);
            if (c_metaCompare(scope, stacMap->scope) == E_EQUAL &&
                strcmp(typeName, stacMap->typeName) == 0)
            {
                /* for each stac in stacList, check if it's equal to key */
                stacList = c_splitString(stacMap->stacList, ",");
                stacListSize = c_iterLength(stacList);
                if (stacListSize == 0) {
                    stacDefFor = OS_TRUE;
                }
                else if(idl_stacDefOnlyExclusionsDefined(stacMap->stacList))
                {
                    if(!idl_stacDefIsFieldExcluded(stacMap->stacList, key))
                    {
                        stacDefFor = OS_TRUE;
                    }
                } else
                {
                    for(stacIdx = 0; stacIdx < stacListSize; stacIdx++)
                    {
                        if (strcmp(c_iterTakeFirst(stacList), key) == 0) {
                            stacDefFor = OS_TRUE;
                        }
                    }
                }
            }
        }
    }
    return stacDefFor;
}