]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcdbg.c
Fix unary operator parsing. Add floor, ceil, trunc and round unary
[fontconfig.git] / src / fcdbg.c
index b682f9fc86a0a8a23c8892a7e6b50c2657b6449c..8d4439b944b7931c01f73606e4ca78fa0bfcfabf 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * $XFree86: xc/lib/fontconfig/src/fcdbg.c,v 1.3 2002/06/02 21:07:56 keithp Exp $
+ * $RCSId: xc/lib/fontconfig/src/fcdbg.c,v 1.10 2002/08/22 18:53:22 keithp Exp $
  *
- * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
+ * Copyright © 2000 Keith Packard
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
 #include "fcint.h"
 
 void
-FcValuePrint (FcValue v)
+FcValuePrint (const FcValue v)
 {
     switch (v.type) {
     case FcTypeVoid:
        printf (" <void>");
        break;
     case FcTypeInteger:
-       printf (" %d", v.u.i);
+       printf (" %d(i)", v.u.i);
        break;
     case FcTypeDouble:
-       printf (" %g", v.u.d);
+       printf (" %g(f)", v.u.d);
        break;
     case FcTypeString:
        printf (" \"%s\"", v.u.s);
@@ -51,6 +51,10 @@ FcValuePrint (FcValue v)
     case FcTypeCharSet:        /* XXX */
        printf (" set");
        break;
+    case FcTypeLangSet:
+       printf (" ");
+       FcLangSetPrint (v.u.l);
+       break;
     case FcTypeFTFace:
        printf (" face");
        break;
@@ -58,14 +62,41 @@ FcValuePrint (FcValue v)
 }
 
 void
-FcValueListPrint (FcValueList *l)
+FcValueListPrint (const FcValueList *l)
 {
     for (; l; l = l->next)
+    {
        FcValuePrint (l->value);
+       switch (l->binding) {
+       case FcValueBindingWeak:
+           printf ("(w)");
+           break;
+       case FcValueBindingStrong:
+           printf ("(s)");
+           break;
+       case FcValueBindingSame:
+           printf ("(=)");
+           break;
+       }
+    }
+}
+
+void
+FcLangSetPrint (const FcLangSet *ls)
+{
+    FcStrBuf   buf;
+    FcChar8    init_buf[1024];
+    
+    FcStrBufInit (&buf, init_buf, sizeof (init_buf));
+    if (FcNameUnparseLangSet (&buf, ls) && FcStrBufChar (&buf,'\0'))
+       printf ("%s", buf.buf);
+    else
+       printf ("langset (alloc error)");
+    FcStrBufDestroy (&buf);
 }
 
 void
-FcPatternPrint (FcPattern *p)
+FcPatternPrint (const FcPattern *p)
 {
     int                    i;
     FcPatternElt   *e;
@@ -108,12 +139,13 @@ FcOpPrint (FcOp op)
     case FcOpOr: printf ("Or"); break;
     case FcOpAnd: printf ("And"); break;
     case FcOpEqual: printf ("Equal"); break;
-    case FcOpContains: printf ("Contains"); break;
     case FcOpNotEqual: printf ("NotEqual"); 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 FcOpNotContains: printf ("NotContains"); break;
     case FcOpPlus: printf ("Plus"); break;
     case FcOpMinus: printf ("Minus"); break;
     case FcOpTimes: printf ("Times"); break;
@@ -121,14 +153,19 @@ FcOpPrint (FcOp op)
     case FcOpNot: printf ("Not"); break;
     case FcOpNil: printf ("Nil"); break;
     case FcOpComma: printf ("Comma"); break;
+    case FcOpFloor: printf ("Floor"); break;
+    case FcOpCeil: printf ("Ceil"); break;
+    case FcOpRound: printf ("Round"); break;
+    case FcOpTrunc: printf ("Trunc"); break;
     case FcOpInvalid: printf ("Invalid"); break;
     }
 }
 
 void
-FcExprPrint (FcExpr *expr)
+FcExprPrint (const FcExpr *expr)
 {
-    switch (expr->op) {
+    if (!expr) printf ("none");
+    else switch (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;
@@ -136,10 +173,10 @@ FcExprPrint (FcExpr *expr)
                              expr->u.mval->xx,
                              expr->u.mval->xy,
                              expr->u.mval->yx,
-                             expr->u.mval->yy);
+                             expr->u.mval->yy); break;
     case FcOpBool: printf ("%s", expr->u.bval ? "true" : "false"); break;
     case FcOpCharSet: printf ("charset\n"); break;
-    case FcOpNil: printf ("nil\n");
+    case FcOpNil: printf ("nil\n"); break;
     case FcOpField: printf ("%s", expr->u.field); break;
     case FcOpConst: printf ("%s", expr->u.constant); break;
     case FcOpQuest:
@@ -158,12 +195,13 @@ FcExprPrint (FcExpr *expr)
     case FcOpOr:
     case FcOpAnd:
     case FcOpEqual:
-    case FcOpContains:
     case FcOpNotEqual:
     case FcOpLess:
     case FcOpLessEqual:
     case FcOpMore:
     case FcOpMoreEqual:
+    case FcOpContains:
+    case FcOpNotContains:
     case FcOpPlus:
     case FcOpMinus:
     case FcOpTimes:
@@ -181,12 +219,13 @@ FcExprPrint (FcExpr *expr)
        case FcOpOr: printf ("Or"); break;
        case FcOpAnd: printf ("And"); break;
        case FcOpEqual: printf ("Equal"); break;
-       case FcOpContains: printf ("Contains"); break;
        case FcOpNotEqual: printf ("NotEqual"); 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 FcOpNotContains: printf ("NotContains"); break;
        case FcOpPlus: printf ("Plus"); break;
        case FcOpMinus: printf ("Minus"); break;
        case FcOpTimes: printf ("Times"); break;
@@ -201,13 +240,37 @@ FcExprPrint (FcExpr *expr)
        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;
     }
 }
 
 void
-FcTestPrint (FcTest *test)
+FcTestPrint (const FcTest *test)
 {
+    switch (test->kind) {
+    case FcMatchPattern:
+       printf ("pattern ");
+       break;
+    case FcMatchFont:
+       printf ("font ");
+       break;
+    }
     switch (test->qual) {
     case FcQualAny:
        printf ("any ");
@@ -230,7 +293,7 @@ FcTestPrint (FcTest *test)
 }
 
 void
-FcEditPrint (FcEdit *edit)
+FcEditPrint (const FcEdit *edit)
 {
     printf ("Edit %s ", edit->field);
     FcOpPrint (edit->op);
@@ -239,7 +302,7 @@ FcEditPrint (FcEdit *edit)
 }
 
 void
-FcSubstPrint (FcSubst *subst)
+FcSubstPrint (const FcSubst *subst)
 {
     FcEdit     *e;
     FcTest     *t;
@@ -261,7 +324,7 @@ FcSubstPrint (FcSubst *subst)
 }
 
 void
-FcFontSetPrint (FcFontSet *s)
+FcFontSetPrint (const FcFontSet *s)
 {
     int            i;