@@ -590,6 +590,38 @@ jerry_get_array_index_value (jerry_object_t *array_obj_p, /**< array object */
590
590
return false;
591
591
} /* jerry_get_array_index_value */
592
592
593
+ /**
594
+ * Get length of an array object
595
+ *
596
+ * @return length of the given array
597
+ */
598
+ jerry_length_t
599
+ jerry_get_array_length (const jerry_object_t * object_p )
600
+ {
601
+ jerry_assert_api_available ();
602
+
603
+ JERRY_ASSERT (jerry_is_array (object_p ));
604
+
605
+ jerry_length_t length = 0 ;
606
+ ecma_string_t * magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH );
607
+ ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY );
608
+
609
+ ECMA_TRY_CATCH (len_value ,
610
+ ecma_op_object_get ((jerry_object_t * ) object_p , magic_string_length_p ),
611
+ ret_value );
612
+ ECMA_OP_TO_NUMBER_TRY_CATCH (len_number , len_value , ret_value );
613
+
614
+ length = ecma_number_to_uint32 (len_number );
615
+
616
+ ECMA_OP_TO_NUMBER_FINALIZE (len_number );
617
+ ECMA_FINALIZE (len_value );
618
+
619
+ ecma_deref_ecma_string (magic_string_length_p );
620
+ JERRY_ASSERT (!ECMA_IS_VALUE_ERROR (ret_value ));
621
+
622
+ return length ;
623
+ } /* jerry_get_array_length */
624
+
593
625
/**
594
626
* Create an error object
595
627
*
@@ -757,6 +789,20 @@ jerry_dispatch_object_free_callback (ecma_external_pointer_t freecb_p, /**< poin
757
789
jerry_make_api_available ();
758
790
} /* jerry_dispatch_object_free_callback */
759
791
792
+ /**
793
+ * Check if the specified object is an array object.
794
+ *
795
+ * @return true - if the specified object is an array object,
796
+ * false - otherwise.
797
+ */
798
+ bool
799
+ jerry_is_array (const jerry_object_t * object_p ) /**< an object */
800
+ {
801
+ jerry_assert_api_available ();
802
+
803
+ return (ecma_object_get_class_name ((jerry_object_t * ) object_p ) == LIT_MAGIC_STRING_ARRAY_UL );
804
+ } /* jerry_is_array */
805
+
760
806
/**
761
807
* Check if the specified object is a function object.
762
808
*
0 commit comments