Pārlūkot izejas kodu

LibJS: Add Value::to_i32() helper function

Andreas Kling 5 gadi atpakaļ
vecāks
revīzija
d02c37f3e3
2 mainītis faili ar 13 papildinājumiem un 2 dzēšanām
  1. 12 2
      Libraries/LibJS/Value.cpp
  2. 1 0
      Libraries/LibJS/Value.h

+ 12 - 2
Libraries/LibJS/Value.cpp

@@ -89,6 +89,18 @@ Value Value::to_object(Heap& heap) const
     ASSERT_NOT_REACHED();
 }
 
+i32 Value::to_i32() const
+{
+    switch (m_type) {
+    case Type::Boolean:
+        return m_value.as_bool;
+    case Type::Number:
+        return static_cast<i32>(m_value.as_double);
+    default:
+        ASSERT_NOT_REACHED();
+    }
+}
+
 Value greater_than(Value lhs, Value rhs)
 {
     ASSERT(lhs.is_number());
@@ -209,8 +221,6 @@ Value typed_eq(Value lhs, Value rhs)
     ASSERT_NOT_REACHED();
 }
 
-
-
 const LogStream& operator<<(const LogStream& stream, const Value& value)
 {
     return stream << value.to_string();

+ 1 - 0
Libraries/LibJS/Value.h

@@ -133,6 +133,7 @@ public:
 
     String to_string() const;
     bool to_boolean() const;
+    i32 to_i32() const;
 
     Value to_object(Heap&) const;