Code

Clean up type strings
authorishmal <ishmal@users.sourceforge.net>
Fri, 28 Apr 2006 21:26:40 +0000 (21:26 +0000)
committerishmal <ishmal@users.sourceforge.net>
Fri, 28 Apr 2006 21:26:40 +0000 (21:26 +0000)
src/dom/xpathtoken.cpp
src/dom/xpathtoken.h

index bed02294333e2d6144caa3fa13e05e5325e483e0..5de011959ee8d5403b7d1c03904ca59cdce3e81a 100644 (file)
@@ -42,6 +42,111 @@ namespace dom
 namespace xpath\r
 {\r
 \r
+//########################################################################\r
+//# X P A T H    T O K E N\r
+//########################################################################\r
+\r
+typedef struct\r
+{\r
+    int ival;\r
+    char *sval;\r
+} TokenStringPair;\r
+\r
+static TokenStringPair tokenStrings[] =\r
+{\r
+    //primitives\r
+    { Token::TOK_NOP,                     "nop"                     },\r
+    { Token::TOK_STR,                     "str"                     },\r
+    { Token::TOK_INT,                     "int"                     },\r
+    { Token::TOK_FLOAT,                   "float"                   },\r
+    //operators\r
+    { Token::TOK_AND,                     "and"                     },\r
+    { Token::TOK_OR,                      "or"                      },\r
+    { Token::TOK_MOD,                     "mod"                     },\r
+    { Token::TOK_DIV,                     "div"                     },\r
+    { Token::TOK_MULTIPLY,                "multiply"                },\r
+    { Token::TOK_DOUBLE_SLASH,            "double-slash"            },\r
+    { Token::TOK_SLASH,                   "slash"                   },\r
+    { Token::TOK_PIPE,                    "pipe"                    },\r
+    { Token::TOK_PLUS,                    "plus"                    },\r
+    { Token::TOK_MINUS,                   "minus"                   },\r
+    { Token::TOK_NEG,                     "neg"                     },\r
+    { Token::TOK_EQUALS,                  "equals"                  },\r
+    { Token::TOK_NOT_EQUALS,              "not-equals"              },\r
+    { Token::TOK_LESS_THAN_EQUALS,        "less-than-equals"        },\r
+    { Token::TOK_LESS_THAN,               "less-than"               },\r
+    { Token::TOK_GREATER_THAN_EQUALS,     "greater-than-equals"     },\r
+    { Token::TOK_GREATER_THAN,            "greater-than"            },\r
+    //path types\r
+    { Token::TOK_ABSOLUTE,                "absolute"                },\r
+    { Token::TOK_RELATIVE,                "relative"                },\r
+    { Token::TOK_STEP,                    "step"                    },\r
+    { Token::TOK_NAME_TEST,               "name-test"               },\r
+    { Token::TOK_EXPR,                    "expr"                    },\r
+    { Token::TOK_UNION,                   "union"                   },\r
+    //axis types\r
+    { Token::TOK_AXIS_ANCESTOR_OR_SELF,   "axis-ancestor-or-self"   },\r
+    { Token::TOK_AXIS_ANCESTOR,           "axis-ancestor"           },\r
+    { Token::TOK_AXIS_ATTRIBUTE,          "axis-attribute"          },\r
+    { Token::TOK_AXIS_CHILD,              "axis-child"              },\r
+    { Token::TOK_AXIS_DESCENDANT_OR_SELF, "axis-descendant-or-self" },\r
+    { Token::TOK_AXIS_DESCENDANT,         "axis-descendant"         },\r
+    { Token::TOK_AXIS_FOLLOWING_SIBLING,  "axis-following-sibling"  },\r
+    { Token::TOK_AXIS_FOLLOWING,          "axis-following"          },\r
+    { Token::TOK_AXIS_NAMESPACE,          "axis-namespace"          },\r
+    { Token::TOK_AXIS_PARENT,             "axis-parent"             },\r
+    { Token::TOK_AXIS_PRECEDING_SIBLING,  "axis-preceding-sibling"  },\r
+    { Token::TOK_AXIS_PRECEDING,          "axis-preceding"          },\r
+    { Token::TOK_AXIS_SELF,               "axis-self"               },\r
+    //function types\r
+    { Token::TOK_FUNC_LAST,               "func-last"               },\r
+    { Token::TOK_FUNC_POSITION,           "func-position"           },\r
+    { Token::TOK_FUNC_COUNT,              "func-count"              },\r
+    { Token::TOK_FUNC_ID,                 "func-id"                 },\r
+    { Token::TOK_FUNC_LOCAL_NAME,         "func-local-name"         },\r
+    { Token::TOK_FUNC_NAMESPACE_URI,      "func-namespace-uri"      },\r
+    { Token::TOK_FUNC_NAME,               "func-name"               },\r
+    { Token::TOK_FUNC_STRING,             "func-string"             },\r
+    { Token::TOK_FUNC_CONCAT,             "func-concat"             },\r
+    { Token::TOK_FUNC_STARTS_WITH,        "func-starts-with"        },\r
+    { Token::TOK_FUNC_CONTAINS,           "func-contains"           },\r
+    { Token::TOK_FUNC_SUBSTRING_BEFORE,   "func-substring-before"   },\r
+    { Token::TOK_FUNC_SUBSTRING_AFTER,    "func-substring-after"    },\r
+    { Token::TOK_FUNC_SUBSTRING,          "func-substring"          },\r
+    { Token::TOK_FUNC_STRING_LENGTH,      "func-string-length"      },\r
+    { Token::TOK_FUNC_NORMALIZE_SPACE,    "func-normalize-space"    },\r
+    { Token::TOK_FUNC_TRANSLATE,          "func-translate"          },\r
+    { Token::TOK_FUNC_BOOLEAN,            "func-boolean"            },\r
+    { Token::TOK_FUNC_NOT,                "func-not"                },\r
+    { Token::TOK_FUNC_TRUE,               "func-true"               },\r
+    { Token::TOK_FUNC_FALSE,              "func-false"              },\r
+    { Token::TOK_FUNC_LANG,               "func-lang"               },\r
+    { Token::TOK_FUNC_NUMBER,             "func-number"             },\r
+    { Token::TOK_FUNC_SUM,                "func-sum"                },\r
+    { Token::TOK_FUNC_FLOOR,              "func-floor"              },\r
+    { Token::TOK_FUNC_CEILING,            "func-ceiling"            },\r
+    { Token::TOK_FUNC_ROUND,              "func-round"              },\r
+    { -1,                                 (char *)0                 }\r
+};\r
+\r
+\r
+/**\r
+ *  Return the enumerated TokenType of this token\r
+ *  (in the .cpp file)\r
+ */\r
+DOMString Token::getTypeString()\r
+{\r
+    DOMString ret;\r
+    for (TokenStringPair *pair = tokenStrings ; pair->sval ; pair++)\r
+        {\r
+        if (pair->ival == type)\r
+            {\r
+            ret = pair->sval;\r
+            break;\r
+            }\r
+        }\r
+    return ret;\r
+}\r
 \r
 //########################################################################\r
 //# X P A T H    S T A C K    I T E M\r
index f81a59cc268d62438e0e5c3b9f3cb863512a65c0..8961f80aa92809ce7620cb6dc4aec0c2ba4bb2e8 100644 (file)
@@ -185,6 +185,7 @@ public:
      */\r
     typedef enum\r
         {\r
+        //primitives\r
         TOK_NOP = 0,\r
         TOK_STR,\r
         TOK_INT,\r
@@ -267,7 +268,6 @@ public:
     Token()\r
         {\r
         type     = TOK_NOP;\r
-        stype    = "nop";\r
         ival     = 0L;\r
         dval     = 0.0;\r
         }\r
@@ -278,7 +278,6 @@ public:
     Token(const Token &other)\r
         {\r
         type     = other.type;\r
-        stype    = other.stype;\r
         sval     = other.sval;\r
         ival     = other.ival;\r
         dval     = other.dval;\r
@@ -295,6 +294,11 @@ public:
      */\r
     virtual int getType()\r
         { return type; }\r
+    /**\r
+     *  Return the enumerated TokenType of this token\r
+     *  (in the .cpp file)\r
+     */\r
+    virtual DOMString getTypeString();\r
 \r
     /**\r
      *  Let this token execute itself on the given stack,\r
@@ -308,7 +312,8 @@ public:
      */\r
     virtual void dump()\r
         {\r
-        printf("%s %s %f %ld\n", stype, sval.c_str(), dval, ival);\r
+        printf("%s %s %f %ld\n",\r
+            getTypeString().c_str(), sval.c_str(), dval, ival);\r
         }\r
 \r
     //treat the token like an union of string, integer, and double\r
@@ -321,12 +326,12 @@ public:
     /**\r
      * Integer value\r
      */\r
-    long      ival;\r
+    long ival;\r
 \r
     /**\r
      * Double value;\r
      */\r
-    double    dval;\r
+    double dval;\r
 \r
 protected:\r
 \r
@@ -335,10 +340,6 @@ protected:
      */\r
     int type;\r
 \r
-    /**\r
-     * String type\r
-     */\r
-    char *stype;\r
 \r
 private:\r
 \r
@@ -362,7 +363,6 @@ public:
     TokStr(const DOMString &val)\r
         {\r
         type = TOK_STR;\r
-        stype = "str";\r
         sval = val;\r
         }\r
     virtual bool execute(Stack &stack)\r
@@ -380,7 +380,6 @@ public:
     TokFloat(double val)\r
         {\r
         type = TOK_FLOAT;\r
-        stype = "float";\r
         dval = val;\r
         }\r
     virtual bool execute(Stack &stack)\r
@@ -398,7 +397,6 @@ public:
     TokInt(long val)\r
         {\r
         type = TOK_INT;\r
-        stype = "int";\r
         ival = val;\r
         }\r
     virtual bool execute(Stack &stack)\r
@@ -416,7 +414,6 @@ public:
     TokAnd()\r
         {\r
         type = TOK_AND;\r
-        stype = "and";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -434,7 +431,6 @@ public:
     TokOr()\r
         {\r
         type = TOK_OR;\r
-        stype = "or";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -452,7 +448,6 @@ public:
     TokMod()\r
         {\r
         type = TOK_MOD;\r
-        stype = "mod";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -470,7 +465,6 @@ public:
     TokDiv()\r
         {\r
         type = TOK_DIV;\r
-        stype = "div";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -488,7 +482,6 @@ public:
     TokMul()\r
         {\r
         type = TOK_MULTIPLY;\r
-        stype = "mul";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -506,7 +499,6 @@ public:
     TokPlus()\r
         {\r
         type = TOK_PLUS;\r
-        stype = "plus";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -524,7 +516,6 @@ public:
     TokMinus()\r
         {\r
         type = TOK_MINUS;\r
-        stype = "minus";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -542,7 +533,6 @@ public:
     TokNeg()\r
         {\r
         type = TOK_NEG;\r
-        stype = "neg";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -560,7 +550,6 @@ public:
     TokEquals()\r
         {\r
         type = TOK_EQUALS;\r
-        stype = "equals";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -578,7 +567,6 @@ public:
     TokNotEquals()\r
         {\r
         type = TOK_NOT_EQUALS;\r
-        stype = "neq";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -596,7 +584,6 @@ public:
     TokLessThanEquals()\r
         {\r
         type = TOK_LESS_THAN_EQUALS;\r
-        stype = "lt_eq";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -614,7 +601,6 @@ public:
     TokLessThan()\r
         {\r
         type = TOK_LESS_THAN;\r
-        stype = "lt";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -632,7 +618,6 @@ public:
     TokGreaterThanEquals()\r
         {\r
         type = TOK_GREATER_THAN_EQUALS;\r
-        stype = "gt";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -650,7 +635,6 @@ public:
     TokGreaterThan()\r
         {\r
         type = TOK_GREATER_THAN;\r
-        stype = "gt_eq";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -673,7 +657,6 @@ public:
     TokAbsolute()\r
         {\r
         type = TOK_ABSOLUTE;\r
-        stype = "absolute";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -687,7 +670,6 @@ public:
     TokRelative()\r
         {\r
         type = TOK_RELATIVE;\r
-        stype = "relative";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -701,7 +683,6 @@ public:
     TokStep()\r
         {\r
         type = TOK_STEP;\r
-        stype = "step";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -715,7 +696,6 @@ public:
     TokNameTest(const DOMString &name)\r
         {\r
         type  = TOK_NAME_TEST;\r
-        stype = "step";\r
         sval  = name;\r
         }\r
     virtual bool execute(Stack &stack)\r
@@ -730,7 +710,6 @@ public:
     TokExpr()\r
         {\r
         type = TOK_EXPR;\r
-        stype = "token";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -744,7 +723,6 @@ public:
     TokUnion()\r
         {\r
         type = TOK_UNION;\r
-        stype = "union";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -766,7 +744,6 @@ public:
     TokAxisAncestorOrSelf()\r
         {\r
         type = TOK_AXIS_ANCESTOR_OR_SELF;\r
-        stype = "axis-ancestor-or-self";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -780,7 +757,6 @@ public:
     TokAxisAncestor()\r
         {\r
         type = TOK_AXIS_ANCESTOR;\r
-        stype = "axis-ancestor";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -794,7 +770,6 @@ public:
     TokAxisAttribute()\r
         {\r
         type = TOK_AXIS_ATTRIBUTE;\r
-        stype = "axis-attribute";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -808,7 +783,6 @@ public:
     TokAxisChild()\r
         {\r
         type = TOK_AXIS_CHILD;\r
-        stype = "axis-child";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -822,7 +796,6 @@ public:
     TokAxisDescendantOrSelf()\r
         {\r
         type = TOK_AXIS_DESCENDANT_OR_SELF;\r
-        stype = "axis-descendant-or-self";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -836,7 +809,6 @@ public:
     TokAxisDescendant()\r
         {\r
         type = TOK_AXIS_DESCENDANT;\r
-        stype = "axis-descendant";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -850,7 +822,6 @@ public:
     TokAxisFollowingSibling()\r
         {\r
         type = TOK_AXIS_FOLLOWING_SIBLING;\r
-        stype = "axis-following-sibling";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -864,7 +835,6 @@ public:
     TokAxisFollowing()\r
         {\r
         type = TOK_AXIS_FOLLOWING;\r
-        stype = "axis-following";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -878,7 +848,6 @@ public:
     TokAxisNamespace()\r
         {\r
         type = TOK_AXIS_NAMESPACE;\r
-        stype = "axis-namespace";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -892,7 +861,6 @@ public:
     TokAxisParent()\r
         {\r
         type = TOK_AXIS_PARENT;\r
-        stype = "axis-parent";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -906,7 +874,6 @@ public:
     TokAxisPrecedingSibling()\r
         {\r
         type = TOK_AXIS_PRECEDING_SIBLING;\r
-        stype = "axis-preceding-sibling";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -920,7 +887,6 @@ public:
     TokAxisPreceding()\r
         {\r
         type = TOK_AXIS_PRECEDING;\r
-        stype = "axis-preceding";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -934,7 +900,6 @@ public:
     TokAxisSelf()\r
         {\r
         type = TOK_AXIS_SELF;\r
-        stype = "axis-self";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -954,7 +919,6 @@ public:
     TokFuncLast()\r
         {\r
         type = TOK_FUNC_LAST;\r
-        stype = "func-last";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -968,7 +932,6 @@ public:
     TokFuncPosition()\r
         {\r
         type = TOK_FUNC_POSITION;\r
-        stype = "func-position";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -982,7 +945,6 @@ public:
     TokFuncCount()\r
         {\r
         type = TOK_FUNC_COUNT;\r
-        stype = "func-count";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -996,7 +958,6 @@ public:
     TokFuncId()\r
         {\r
         type = TOK_FUNC_ID;\r
-        stype = "func-id";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1010,7 +971,6 @@ public:
     TokFuncLocalName()\r
         {\r
         type = TOK_FUNC_LOCAL_NAME;\r
-        stype = "func-local-name";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1024,7 +984,6 @@ public:
     TokFuncNamespaceUri()\r
         {\r
         type = TOK_FUNC_NAMESPACE_URI;\r
-        stype = "func-namespace-uri";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1038,7 +997,6 @@ public:
     TokFuncName()\r
         {\r
         type = TOK_FUNC_NAME;\r
-        stype = "func-name";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1052,7 +1010,6 @@ public:
     TokFuncString()\r
         {\r
         type = TOK_FUNC_STRING;\r
-        stype = "func-string";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1066,7 +1023,6 @@ public:
     TokFuncConcat()\r
         {\r
         type = TOK_FUNC_CONCAT;\r
-        stype = "func-concat";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1080,7 +1036,6 @@ public:
     TokFuncStartsWith()\r
         {\r
         type = TOK_FUNC_STARTS_WITH;\r
-        stype = "func-starts-with";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1094,7 +1049,6 @@ public:
     TokFuncContains()\r
         {\r
         type = TOK_FUNC_CONTAINS;\r
-        stype = "func-contains";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1108,7 +1062,6 @@ public:
     TokFuncSubstringBefore()\r
         {\r
         type = TOK_FUNC_SUBSTRING_BEFORE;\r
-        stype = "func-substring-before";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1122,7 +1075,6 @@ public:
     TokFuncSubstringAfter()\r
         {\r
         type = TOK_FUNC_SUBSTRING_AFTER;\r
-        stype = "func-substring-after";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1136,7 +1088,6 @@ public:
     TokFuncSubstring()\r
         {\r
         type = TOK_FUNC_SUBSTRING;\r
-        stype = "func-substring";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1150,7 +1101,6 @@ public:
     TokFuncStringLength()\r
         {\r
         type = TOK_FUNC_STRING_LENGTH;\r
-        stype = "func-string-length";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1164,7 +1114,6 @@ public:
     TokFuncNormalizeSpace()\r
         {\r
         type = TOK_FUNC_NORMALIZE_SPACE;\r
-        stype = "func-normalize-space";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1178,7 +1127,6 @@ public:
     TokFuncTranslate()\r
         {\r
         type = TOK_FUNC_TRANSLATE;\r
-        stype = "func-translate";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1192,7 +1140,6 @@ public:
     TokFuncBoolean()\r
         {\r
         type = TOK_FUNC_BOOLEAN;\r
-        stype = "func-boolean";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1206,7 +1153,6 @@ public:
     TokFuncNot()\r
         {\r
         type = TOK_FUNC_NOT;\r
-        stype = "func-string-length";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1220,7 +1166,6 @@ public:
     TokFuncTrue()\r
         {\r
         type = TOK_FUNC_TRUE;\r
-        stype = "func-true";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1234,7 +1179,6 @@ public:
     TokFuncFalse()\r
         {\r
         type = TOK_FUNC_FALSE;\r
-        stype = "func-false";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1248,7 +1192,6 @@ public:
     TokFuncLang()\r
         {\r
         type = TOK_FUNC_LANG;\r
-        stype = "func-lang";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1262,7 +1205,6 @@ public:
     TokFuncNumber()\r
         {\r
         type = TOK_FUNC_NUMBER;\r
-        stype = "func-number";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1276,7 +1218,6 @@ public:
     TokFuncSum()\r
         {\r
         type = TOK_FUNC_SUM;\r
-        stype = "func-sum";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1290,7 +1231,6 @@ public:
     TokFuncFloor()\r
         {\r
         type = TOK_FUNC_FLOOR;\r
-        stype = "func-floor";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1304,7 +1244,6 @@ public:
     TokFuncCeiling()\r
         {\r
         type = TOK_FUNC_CEILING;\r
-        stype = "func-ceiling";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r
@@ -1318,7 +1257,6 @@ public:
     TokFuncRound()\r
         {\r
         type = TOK_FUNC_ROUND;\r
-        stype = "func-round";\r
         }\r
     virtual bool execute(Stack &stack)\r
         {\r