| 107 | Should the following functions be added? |

| 108 | |

| 109 | |

| 110 | {{{ |

| 111 | FdoBoolean FdoExpression::IsValue() |

| 112 | FdoBoolean FdoExpression::IsIdentifier() |

| 113 | FdoBoolean FdoExpression::IsFunction() |

| 114 | }}} |

| 115 | |

| 116 | |

| 117 | For example, the following code could make use of this function: |

| 118 | |

| 119 | |

| 120 | {{{ |

| 121 | FdoPtr<FdoExpression> exp = ...; |

| 122 | |

| 123 | if (!exp->IsValue()) |

| 124 | return; |

| 125 | |

| 126 | FdoDataValue *dVal = static_cast<FdoDataValue *>(exp.p); |

| 127 | }}} |

| 128 | |

| 129 | However, the above can currently be done by: |

| 130 | |

| 131 | {{{ |

| 132 | FdoPtr<FdoExpression> exp = ...; |

| 133 | |

| 134 | FdoExpressionImpType exType = exp->GetExpressionType() |

| 135 | |

| 136 | if (exType != FdoBinaryExpressionType && |

| 137 | exType != FdoUnaryExpressionType && |

| 138 | exType != FdoComputedIdentifierType && |

| 139 | exType != FdoIdentifierType && |

| 140 | exType != FdoParameterType && |

| 141 | exType != FdoFunctionType && |

| 142 | exType != FdoGeometryValueType) |

| 143 | return; |

| 144 | |

| 145 | FdoDataValue *dVal = static_cast<FdoDataValue *>(exp.p); |

| 146 | }}} |

| 147 | |