@@ -590,6 +590,47 @@ 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
+ uint32_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
+
608
+ ecma_value_t len_value = ecma_op_object_get ((jerry_object_t * ) object_p , magic_string_length_p );
609
+ ecma_deref_ecma_string (magic_string_length_p );
610
+
611
+ ecma_number_t num_var = ecma_number_make_nan ();
612
+
613
+ if (ecma_is_value_number (len_value ))
614
+ {
615
+ num_var = ecma_get_number_from_value (len_value );
616
+ length = ecma_number_to_uint32 (num_var );
617
+ }
618
+ else
619
+ {
620
+ ecma_value_t to_number_value = ecma_op_to_number (len_value );
621
+
622
+ if (!ECMA_IS_VALUE_ERROR (to_number_value ))
623
+ {
624
+ num_var = ecma_get_number_from_value (to_number_value );
625
+ length = ecma_number_to_uint32 (num_var );
626
+ }
627
+ }
628
+
629
+ ecma_free_value (len_value );
630
+
631
+ return length ;
632
+ } /* jerry_get_array_length */
633
+
593
634
/**
594
635
* Create an error object
595
636
*
@@ -757,6 +798,20 @@ jerry_dispatch_object_free_callback (ecma_external_pointer_t freecb_p, /**< poin
757
798
jerry_make_api_available ();
758
799
} /* jerry_dispatch_object_free_callback */
759
800
801
+ /**
802
+ * Check if the specified object is an array object.
803
+ *
804
+ * @return true - if the specified object is an array object,
805
+ * false - otherwise.
806
+ */
807
+ bool
808
+ jerry_is_array (const jerry_object_t * object_p ) /**< an object */
809
+ {
810
+ jerry_assert_api_available ();
811
+
812
+ return (ecma_object_get_class_name ((jerry_object_t * ) object_p ) == LIT_MAGIC_STRING_ARRAY_UL );
813
+ } /* jerry_is_array */
814
+
760
815
/**
761
816
* Check if the specified object is a function object.
762
817
*
0 commit comments