[fclang] Implement FcLangSetGetLangs() (#18846)

This commit is contained in:
Behdad Esfahbod 2009-02-13 16:30:43 -08:00
parent cdfb76585e
commit d62b85af21
3 changed files with 43 additions and 0 deletions

View File

@ -123,6 +123,14 @@ function returns FcLangDiffentTerritory. If <parameter>ls</parameter>
has no matching language, this function returns FcLangDifferentLang.
@@
@RET@ FcStrSet *
@FUNC@ FcLangSetGetLangs
@TYPE1@ const FcLangSet * @ARG1@ ls
@PURPOSE@ get the list of languages in the langset
@DESC@
Returns a string set of all languages in <parameter>langset</parameter>.
@@
@RET@ FcStrSet *
@FUNC@ FcGetLangs
@TYPE1@ void

View File

@ -597,6 +597,9 @@ FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
FcPublic FcChar32
FcLangSetHash (const FcLangSet *ls);
FcPublic FcStrSet *
FcLangSetGetLangs (const FcLangSet *ls);
/* fclist.c */
FcPublic FcObjectSet *
FcObjectSetCreate (void);

View File

@ -744,6 +744,38 @@ FcLangSetSerialize(FcSerialize *serialize, const FcLangSet *l)
*l_serialize = *l;
return l_serialize;
}
FcStrSet *
FcLangSetGetLangs (const FcLangSet *ls)
{
FcStrSet *langs;
int i;
langs = FcStrSetCreate();
if (!langs)
return 0;
for (i = 0; i < NUM_LANG_CHAR_SET; i++)
if (FcLangSetBitGet (ls, i))
FcStrSetAdd (langs, fcLangCharSets[i].lang);
if (ls->extra)
{
FcStrList *list = FcStrListCreate (ls->extra);
FcChar8 *extra;
if (list)
{
while ((extra = FcStrListNext (list)))
FcStrSetAdd (langs, extra);
FcStrListDone (list);
}
}
return langs;
}
#define __fclang__
#include "fcaliastail.h"
#include "fcftaliastail.h"