summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c726947)
raw | patch | inline | side by side (parent: c726947)
author | ishmal <ishmal@users.sourceforge.net> | |
Fri, 28 Apr 2006 21:26:40 +0000 (21:26 +0000) | ||
committer | ishmal <ishmal@users.sourceforge.net> | |
Fri, 28 Apr 2006 21:26:40 +0000 (21:26 +0000) |
src/dom/xpathtoken.cpp | patch | blob | history | |
src/dom/xpathtoken.h | patch | blob | history |
diff --git a/src/dom/xpathtoken.cpp b/src/dom/xpathtoken.cpp
index bed02294333e2d6144caa3fa13e05e5325e483e0..5de011959ee8d5403b7d1c03904ca59cdce3e81a 100644 (file)
--- a/src/dom/xpathtoken.cpp
+++ b/src/dom/xpathtoken.cpp
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
diff --git a/src/dom/xpathtoken.h b/src/dom/xpathtoken.h
index f81a59cc268d62438e0e5c3b9f3cb863512a65c0..8961f80aa92809ce7620cb6dc4aec0c2ba4bb2e8 100644 (file)
--- a/src/dom/xpathtoken.h
+++ b/src/dom/xpathtoken.h
*/\r
typedef enum\r
{\r
+ //primitives\r
TOK_NOP = 0,\r
TOK_STR,\r
TOK_INT,\r
Token()\r
{\r
type = TOK_NOP;\r
- stype = "nop";\r
ival = 0L;\r
dval = 0.0;\r
}\r
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
*/\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
*/\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
/**\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
*/\r
int type;\r
\r
- /**\r
- * String type\r
- */\r
- char *stype;\r
\r
private:\r
\r
TokStr(const DOMString &val)\r
{\r
type = TOK_STR;\r
- stype = "str";\r
sval = val;\r
}\r
virtual bool execute(Stack &stack)\r
TokFloat(double val)\r
{\r
type = TOK_FLOAT;\r
- stype = "float";\r
dval = val;\r
}\r
virtual bool execute(Stack &stack)\r
TokInt(long val)\r
{\r
type = TOK_INT;\r
- stype = "int";\r
ival = val;\r
}\r
virtual bool execute(Stack &stack)\r
TokAnd()\r
{\r
type = TOK_AND;\r
- stype = "and";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokOr()\r
{\r
type = TOK_OR;\r
- stype = "or";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokMod()\r
{\r
type = TOK_MOD;\r
- stype = "mod";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokDiv()\r
{\r
type = TOK_DIV;\r
- stype = "div";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokMul()\r
{\r
type = TOK_MULTIPLY;\r
- stype = "mul";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokPlus()\r
{\r
type = TOK_PLUS;\r
- stype = "plus";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokMinus()\r
{\r
type = TOK_MINUS;\r
- stype = "minus";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokNeg()\r
{\r
type = TOK_NEG;\r
- stype = "neg";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokEquals()\r
{\r
type = TOK_EQUALS;\r
- stype = "equals";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokNotEquals()\r
{\r
type = TOK_NOT_EQUALS;\r
- stype = "neq";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokLessThanEquals()\r
{\r
type = TOK_LESS_THAN_EQUALS;\r
- stype = "lt_eq";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokLessThan()\r
{\r
type = TOK_LESS_THAN;\r
- stype = "lt";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokGreaterThanEquals()\r
{\r
type = TOK_GREATER_THAN_EQUALS;\r
- stype = "gt";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokGreaterThan()\r
{\r
type = TOK_GREATER_THAN;\r
- stype = "gt_eq";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAbsolute()\r
{\r
type = TOK_ABSOLUTE;\r
- stype = "absolute";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokRelative()\r
{\r
type = TOK_RELATIVE;\r
- stype = "relative";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokStep()\r
{\r
type = TOK_STEP;\r
- stype = "step";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokNameTest(const DOMString &name)\r
{\r
type = TOK_NAME_TEST;\r
- stype = "step";\r
sval = name;\r
}\r
virtual bool execute(Stack &stack)\r
TokExpr()\r
{\r
type = TOK_EXPR;\r
- stype = "token";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokUnion()\r
{\r
type = TOK_UNION;\r
- stype = "union";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisAncestorOrSelf()\r
{\r
type = TOK_AXIS_ANCESTOR_OR_SELF;\r
- stype = "axis-ancestor-or-self";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisAncestor()\r
{\r
type = TOK_AXIS_ANCESTOR;\r
- stype = "axis-ancestor";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisAttribute()\r
{\r
type = TOK_AXIS_ATTRIBUTE;\r
- stype = "axis-attribute";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisChild()\r
{\r
type = TOK_AXIS_CHILD;\r
- stype = "axis-child";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisDescendantOrSelf()\r
{\r
type = TOK_AXIS_DESCENDANT_OR_SELF;\r
- stype = "axis-descendant-or-self";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisDescendant()\r
{\r
type = TOK_AXIS_DESCENDANT;\r
- stype = "axis-descendant";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisFollowingSibling()\r
{\r
type = TOK_AXIS_FOLLOWING_SIBLING;\r
- stype = "axis-following-sibling";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisFollowing()\r
{\r
type = TOK_AXIS_FOLLOWING;\r
- stype = "axis-following";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisNamespace()\r
{\r
type = TOK_AXIS_NAMESPACE;\r
- stype = "axis-namespace";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisParent()\r
{\r
type = TOK_AXIS_PARENT;\r
- stype = "axis-parent";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisPrecedingSibling()\r
{\r
type = TOK_AXIS_PRECEDING_SIBLING;\r
- stype = "axis-preceding-sibling";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisPreceding()\r
{\r
type = TOK_AXIS_PRECEDING;\r
- stype = "axis-preceding";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokAxisSelf()\r
{\r
type = TOK_AXIS_SELF;\r
- stype = "axis-self";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncLast()\r
{\r
type = TOK_FUNC_LAST;\r
- stype = "func-last";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncPosition()\r
{\r
type = TOK_FUNC_POSITION;\r
- stype = "func-position";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncCount()\r
{\r
type = TOK_FUNC_COUNT;\r
- stype = "func-count";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncId()\r
{\r
type = TOK_FUNC_ID;\r
- stype = "func-id";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncLocalName()\r
{\r
type = TOK_FUNC_LOCAL_NAME;\r
- stype = "func-local-name";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncNamespaceUri()\r
{\r
type = TOK_FUNC_NAMESPACE_URI;\r
- stype = "func-namespace-uri";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncName()\r
{\r
type = TOK_FUNC_NAME;\r
- stype = "func-name";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncString()\r
{\r
type = TOK_FUNC_STRING;\r
- stype = "func-string";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncConcat()\r
{\r
type = TOK_FUNC_CONCAT;\r
- stype = "func-concat";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncStartsWith()\r
{\r
type = TOK_FUNC_STARTS_WITH;\r
- stype = "func-starts-with";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncContains()\r
{\r
type = TOK_FUNC_CONTAINS;\r
- stype = "func-contains";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncSubstringBefore()\r
{\r
type = TOK_FUNC_SUBSTRING_BEFORE;\r
- stype = "func-substring-before";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncSubstringAfter()\r
{\r
type = TOK_FUNC_SUBSTRING_AFTER;\r
- stype = "func-substring-after";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncSubstring()\r
{\r
type = TOK_FUNC_SUBSTRING;\r
- stype = "func-substring";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncStringLength()\r
{\r
type = TOK_FUNC_STRING_LENGTH;\r
- stype = "func-string-length";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncNormalizeSpace()\r
{\r
type = TOK_FUNC_NORMALIZE_SPACE;\r
- stype = "func-normalize-space";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncTranslate()\r
{\r
type = TOK_FUNC_TRANSLATE;\r
- stype = "func-translate";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncBoolean()\r
{\r
type = TOK_FUNC_BOOLEAN;\r
- stype = "func-boolean";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncNot()\r
{\r
type = TOK_FUNC_NOT;\r
- stype = "func-string-length";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncTrue()\r
{\r
type = TOK_FUNC_TRUE;\r
- stype = "func-true";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncFalse()\r
{\r
type = TOK_FUNC_FALSE;\r
- stype = "func-false";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncLang()\r
{\r
type = TOK_FUNC_LANG;\r
- stype = "func-lang";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncNumber()\r
{\r
type = TOK_FUNC_NUMBER;\r
- stype = "func-number";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncSum()\r
{\r
type = TOK_FUNC_SUM;\r
- stype = "func-sum";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncFloor()\r
{\r
type = TOK_FUNC_FLOOR;\r
- stype = "func-floor";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncCeiling()\r
{\r
type = TOK_FUNC_CEILING;\r
- stype = "func-ceiling";\r
}\r
virtual bool execute(Stack &stack)\r
{\r
TokFuncRound()\r
{\r
type = TOK_FUNC_ROUND;\r
- stype = "func-round";\r
}\r
virtual bool execute(Stack &stack)\r
{\r