@@ -590,6 +590,49 @@ 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 property value of an object
595
+ *
596
+ * @return length of the given object
597
+ */
598
+ inline static jerry_length_t __attr_always_inline___
599
+ jerry_get_length (const jerry_object_t * object_p )
600
+ {
601
+ jerry_length_t length = 0 ;
602
+ ecma_string_t * magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH );
603
+ ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY );
604
+
605
+ ECMA_TRY_CATCH (len_value ,
606
+ ecma_op_object_get ((jerry_object_t * ) object_p , magic_string_length_p ),
607
+ ret_value );
608
+ ECMA_OP_TO_NUMBER_TRY_CATCH (len_number , len_value , ret_value );
609
+
610
+ length = ecma_number_to_uint32 (len_number );
611
+
612
+ ECMA_OP_TO_NUMBER_FINALIZE (len_number );
613
+ ECMA_FINALIZE (len_value );
614
+
615
+ ecma_deref_ecma_string (magic_string_length_p );
616
+ JERRY_ASSERT (!ECMA_IS_VALUE_ERROR (ret_value ));
617
+
618
+ return length ;
619
+ } /* jerry_get_length */
620
+
621
+ /**
622
+ * Get length of an array object
623
+ *
624
+ * @return length of the given array
625
+ */
626
+ jerry_length_t
627
+ jerry_get_array_length (const jerry_object_t * object_p )
628
+ {
629
+ jerry_assert_api_available ();
630
+
631
+ JERRY_ASSERT (jerry_is_array (object_p ));
632
+
633
+ return jerry_get_length (object_p );
634
+ } /* jerry_get_array_length */
635
+
593
636
/**
594
637
* Create an error object
595
638
*
@@ -757,6 +800,20 @@ jerry_dispatch_object_free_callback (ecma_external_pointer_t freecb_p, /**< poin
757
800
jerry_make_api_available ();
758
801
} /* jerry_dispatch_object_free_callback */
759
802
803
+ /**
804
+ * Check if the specified object is an array object.
805
+ *
806
+ * @return true - if the specified object is an array object,
807
+ * false - otherwise.
808
+ */
809
+ bool
810
+ jerry_is_array (const jerry_object_t * object_p ) /**< an object */
811
+ {
812
+ jerry_assert_api_available ();
813
+
814
+ return (ecma_object_get_class_name ((jerry_object_t * ) object_p ) == LIT_MAGIC_STRING_ARRAY_UL );
815
+ } /* jerry_is_array */
816
+
760
817
/**
761
818
* Check if the specified object is a function object.
762
819
*
0 commit comments