#include #include struct my_FcCharSetIter { FcCharSet *charset; FcChar32 map[FC_CHARSET_MAP_SIZE]; FcChar32 next; }; struct my_FcCharSetIter *my_FcCharSetIterCreate(FcCharSet *a) { struct my_FcCharSetIter *self = malloc(sizeof(struct my_FcCharSetIter)); self->charset = FcCharSetCopy(a); return self; } void my_FcCharSetIterDestroy(struct my_FcCharSetIter *self) { FcCharSetDestroy(self->charset); free(self); } FcChar32 my_FcCharSetIterStart(struct my_FcCharSetIter *self) { return FcCharSetFirstPage(self->charset, self->map, &self->next); } FcChar32 my_FcCharSetIterNext(struct my_FcCharSetIter *self) { return FcCharSetNextPage(self->charset, self->map, &self->next); } FcBool my_FcCharSetIterDone(FcChar32 chr) { return chr == FC_CHARSET_DONE; }