char * idl_genXMLmeta ( c_type type) { sd_serializer metaSer; sd_serializedData serData; char *metaDescription = NULL; c_iter replaceInfo; c_iter replaceInfoStac; replaceInfo = idl_catsDefConvertAll(idl_catsDefDefGet()); replaceInfoStac = idl_stacDefConvertAll(idl_stacDefDefGet()); metaSer = sd_serializerXMLTypeinfoNew (c_getBase(c_object(type)), TRUE); if (metaSer) { serData = sd_serializerSerialize (metaSer, c_object(type)); if (serData) { metaDescription = sd_serializerToString (metaSer, serData); } sd_serializerFree (metaSer); } idl_catsDefRestoreAll(idl_catsDefDefGet(), replaceInfo); idl_stacDefRestoreAll(idl_stacDefDefGet(), replaceInfoStac); return metaDescription; }
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; }