static void _FcValuePrintFile(FILE *f, const FcValue v) { switch (v.type) { case FcTypeUnknown: fprintf(f, "<unknown>"); break; case FcTypeVoid: fprintf(f, "<void>"); break; case FcTypeInteger: fprintf(f, "%d(i)", v.u.i); break; case FcTypeDouble: fprintf(f, "%g(f)", v.u.d); break; case FcTypeString: fprintf(f, "\"%s\"", v.u.s); break; case FcTypeBool: fprintf(f, "%s", v.u.b ? "True" : "False"); break; case FcTypeMatrix: fprintf(f, "[%g %g; %g %g]", v.u.m->xx, v.u.m->xy, v.u.m->yx, v.u.m->yy); break; case FcTypeCharSet: /* XXX */ if (f == stdout) FcCharSetPrint(v.u.c); break; case FcTypeLangSet: FcLangSetPrint(v.u.l); break; case FcTypeFTFace: fprintf(f, "face"); break; } }
void FcValuePrint (const FcValue v) { switch (v.type) { case FcTypeVoid: printf (" <void>"); break; case FcTypeInteger: printf (" %d(i)", v.u.i); break; case FcTypeDouble: printf (" %g(f)", v.u.d); break; case FcTypeString: printf (" \"%s\"", v.u.s); break; case FcTypeBool: printf (" %s", v.u.b ? "FcTrue" : "FcFalse"); break; case FcTypeMatrix: printf (" (%f %f; %f %f)", v.u.m->xx, v.u.m->xy, v.u.m->yx, v.u.m->yy); break; case FcTypeCharSet: /* XXX */ printf (" set"); break; case FcTypeLangSet: printf (" "); FcLangSetPrint (v.u.l); break; case FcTypeFTFace: printf (" face"); break; } }
void FcExprPrint(const FcExpr *expr) { if (!expr) printf("none"); else switch (FC_OP_GET_OP(expr->op)) { case FcOpInteger: printf("%d", expr->u.ival); break; case FcOpDouble: printf("%g", expr->u.dval); break; case FcOpString: printf("\"%s\"", expr->u.sval); break; case FcOpMatrix: printf("["); FcExprPrint(expr->u.mexpr->xx); printf(" "); FcExprPrint(expr->u.mexpr->xy); printf("; "); FcExprPrint(expr->u.mexpr->yx); printf(" "); FcExprPrint(expr->u.mexpr->yy); printf("]"); break; case FcOpRange: break; case FcOpBool: printf("%s", expr->u.bval ? "true" : "false"); break; case FcOpCharSet: printf("charset\n"); break; case FcOpLangSet: printf("langset:"); FcLangSetPrint(expr->u.lval); printf("\n"); break; case FcOpNil: printf("nil\n"); break; case FcOpField: printf("%s ", FcObjectName(expr->u.name.object)); switch ((int)expr->u.name.kind) { case FcMatchPattern: printf("(pattern) "); break; case FcMatchFont: printf("(font) "); break; } break; case FcOpConst: printf("%s", expr->u.constant); break; case FcOpQuest: FcExprPrint(expr->u.tree.left); printf(" quest "); FcExprPrint(expr->u.tree.right->u.tree.left); printf(" colon "); FcExprPrint(expr->u.tree.right->u.tree.right); break; case FcOpAssign: case FcOpAssignReplace: case FcOpPrependFirst: case FcOpPrepend: case FcOpAppend: case FcOpAppendLast: case FcOpOr: case FcOpAnd: case FcOpEqual: case FcOpNotEqual: case FcOpLess: case FcOpLessEqual: case FcOpMore: case FcOpMoreEqual: case FcOpContains: case FcOpListing: case FcOpNotContains: case FcOpPlus: case FcOpMinus: case FcOpTimes: case FcOpDivide: case FcOpComma: FcExprPrint(expr->u.tree.left); printf(" "); switch (FC_OP_GET_OP(expr->op)) { case FcOpAssign: printf("Assign"); break; case FcOpAssignReplace: printf("AssignReplace"); break; case FcOpPrependFirst: printf("PrependFirst"); break; case FcOpPrepend: printf("Prepend"); break; case FcOpAppend: printf("Append"); break; case FcOpAppendLast: printf("AppendLast"); break; case FcOpOr: printf("Or"); break; case FcOpAnd: printf("And"); break; case FcOpEqual: printf("Equal"); FcOpFlagsPrint(expr->op); break; case FcOpNotEqual: printf("NotEqual"); FcOpFlagsPrint(expr->op); break; case FcOpLess: printf("Less"); break; case FcOpLessEqual: printf("LessEqual"); break; case FcOpMore: printf("More"); break; case FcOpMoreEqual: printf("MoreEqual"); break; case FcOpContains: printf("Contains"); break; case FcOpListing: printf("Listing"); FcOpFlagsPrint(expr->op); break; case FcOpNotContains: printf("NotContains"); break; case FcOpPlus: printf("Plus"); break; case FcOpMinus: printf("Minus"); break; case FcOpTimes: printf("Times"); break; case FcOpDivide: printf("Divide"); break; case FcOpComma: printf("Comma"); break; default: break; } printf(" "); FcExprPrint(expr->u.tree.right); break; case FcOpNot: printf("Not "); FcExprPrint(expr->u.tree.left); break; case FcOpFloor: printf("Floor "); FcExprPrint(expr->u.tree.left); break; case FcOpCeil: printf("Ceil "); FcExprPrint(expr->u.tree.left); break; case FcOpRound: printf("Round "); FcExprPrint(expr->u.tree.left); break; case FcOpTrunc: printf("Trunc "); FcExprPrint(expr->u.tree.left); break; case FcOpInvalid: printf("Invalid"); break; } }