JavaScriptCore:
[WebKit-https.git] / WebCore / xpath / impl / XPathValue.cpp
index 229fa09..6894af1 100644 (file)
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
+
 #include "config.h"
 
 #if XPATH_SUPPORT
 
 #include "XPathValue.h"
-#include "Logging.h"
-
-#ifdef _MSC_VER // math functions missing from Microsoft Visual Studio standard C library
-#include <xmath.h>
-#define isnan(x) _isnan(x)
-#define isinf(x) !_finite(x)
-#define signbit(x) (_copysign(1.0, (x)) < 0)
-#endif
+#include "Node.h"
+#include <wtf/MathExtras.h>
+#include <math.h>
 
 namespace WebCore {
 namespace XPath {
 
 Value::Value()
+    : m_type(BooleanValue), m_bool(false)
 {
 }
 
 Value::Value(Node* value)
-    : m_type(NodeVector_)
+    : m_type(NodeVectorValue)
 {
-    m_nodevector.append(value);
+    m_nodeVector.append(value);
 }
 
 Value::Value(const NodeVector& value)
-    : m_type(NodeVector_)
-    , m_nodevector(value)
+    : m_type(NodeVectorValue), m_nodeVector(value)
 {
 }
 
 Value::Value(bool value)
-    : m_type(Boolean),
-    m_bool(value)
-{
-}
-
-Value::Value(double value)
-    : m_type(Number),
-    m_number(value)
+    : m_type(BooleanValue), m_bool(value)
 {
 }
 
-Value::Value(const String& value)
-    : m_type(String_),
-    m_string(value)
-{
-}
-
-Value::Type Value::type() const
+Value::Value(unsigned value)
+    : m_type(NumberValue), m_number(value)
 {
-    return m_type;
 }
 
-bool Value::isNodeVector() const
+Value::Value(unsigned long value)
+    : m_type(NumberValue), m_number(value)
 {
-    return m_type == NodeVector_;
 }
 
-bool Value::isBoolean() const
-{
-    return m_type == Boolean;
-}
-
-bool Value::isNumber() const
+Value::Value(double value)
+    : m_type(NumberValue), m_number(value)
 {
-    return m_type == Number;
 }
 
-bool Value::isString() const
+Value::Value(const String& value)
+    : m_type(StringValue), m_string(value)
 {
-    return m_type == String_;
-}
-
-NodeVector& Value::toNodeVector()
-{
-    if (m_type != NodeVector_) {
-        LOG(XPath, "Cannot convert anything to a nodevector.");
-    }
-    return m_nodevector;
 }
 
 const NodeVector &Value::toNodeVector() const
 {
-    if (m_type != NodeVector_) {
-        LOG(XPath, "Cannot convert anything to a nodevector.");
-    }
-    
-    return m_nodevector;    
+    return m_nodeVector;    
 }    
 
 bool Value::toBoolean() const
 {
     switch (m_type) {
-        case NodeVector_:
-            return !m_nodevector.isEmpty();
-        case Boolean:
+        case NodeVectorValue:
+            return !m_nodeVector.isEmpty();
+        case BooleanValue:
             return m_bool;
-        case Number:
+        case NumberValue:
             return m_number != 0;
-        case String_:
+        case StringValue:
             return !m_string.isEmpty();
     }
+    ASSERT_NOT_REACHED();
     return false;
 }
 
 double Value::toNumber() const
 {
     switch (m_type) {
-        case NodeVector_:
+        case NodeVectorValue:
             return Value(toString()).toNumber();
-        case Number:
+        case NumberValue:
             return m_number;
-        case String_: {
+        case StringValue: {
             bool canConvert;
-            DeprecatedString s = m_string.deprecatedString().simplifyWhiteSpace();
-            
-            double value = s.toDouble(&canConvert);
+            double value = m_string.deprecatedString().simplifyWhiteSpace().toDouble(&canConvert);
             if (canConvert)
                 return value;
-
             return NAN;
         }
-        case Boolean:
+        case BooleanValue:
             return m_bool;
     }
+    ASSERT_NOT_REACHED();
     return 0.0;
 }
 
 String Value::toString() const
 {
     switch (m_type) {
-        case NodeVector_:
-            if (m_nodevector.isEmpty()) 
+        case NodeVectorValue:
+            if (m_nodeVector.isEmpty()) 
                 return "";
-
-            return stringValue(m_nodevector[0].get());
-        case String_:
+            return stringValue(m_nodeVector[0].get());
+        case StringValue:
             return m_string;
-        case Number:
+        case NumberValue:
             if (isnan(m_number))
                 return "NaN";
-            else if (m_number == 0)
+            if (m_number == 0)
                 return "0";
-            else if (isinf(m_number)) {
-                if (signbit(m_number) == 0)
-                    return "Infinity";
-                else
-                    return "-Infinity";
-            }
-            return DeprecatedString::number(m_number);
-        case Boolean:
+            if (isinf(m_number))
+                return signbit(m_number) ? "-Infinity" : "Infinity";
+            return String::number(m_number);
+        case BooleanValue:
             return m_bool ? "true" : "false";
     }
-    
+    ASSERT_NOT_REACHED();
     return String();
 }
 
-
 }
 }
 
-#endif // XPATH_SUPPORT
\ No newline at end of file
+#endif // XPATH_SUPPORT