# New Ticket Created by  "Daniel Keane" 
# Please include the string:  [perl #61800]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=61800 >


Implements array_fill() function within pipp.

Files affected:

* src/common/php_array.pir: added array_fill(), added perldoc comments
for array()

* src/common/builtins.pir: changed param type for 'prefix:-', was
previously converting param to num type and affecting
parse_parameter() function in src/common/php_API.pir

* src/t/in_php: removed array() function tests and added to new test file

* provided new test file for array functions (t/php/array.t)

Thanks
Index: t/in_php/array.t
===================================================================
--- t/in_php/array.t	(revision 34538)
+++ t/in_php/array.t	(working copy)
@@ -27,7 +27,7 @@
 
 require_once 'Test.php';
 
-plan(11);
+plan(8);
 $count = 1;
 
 $hello['world'] = 'hi';
@@ -61,18 +61,5 @@
 is( count($thrice), 2, 'count of $thrice', $count );
 $count++;
 
-#test array() function
-
-$arrayfunc = array(0, "key" => "key", 1);
-
-is( $arrayfunc[0], 0, 'arrayfunc[0]', $count );
-$count++;
-is( $arrayfunc[1], 1, 'arrayfunc[1]', $count );
-$count++;
-is( $arrayfunc["key"], 'key', 'arrayfunc[key]', $count );
-$count++;
-
-
-
 # vim: expandtab shiftwidth=4 ft=php:
 ?>
Index: src/common/php_array.pir
===================================================================
--- src/common/php_array.pir	(revision 34538)
+++ src/common/php_array.pir	(working copy)
@@ -61,6 +61,12 @@
     .REGISTER_LONG_CONSTANT(cst, 'COUNT_RECURSIVE', COUNT_RECURSIVE)
 .end
 
+=item C<array array([mixed $...])>
+
+Creates an array
+
+=cut
+
 .sub 'array'
     .param pmc args :slurpy
     .local pmc array, iter
@@ -199,12 +205,34 @@
 
 Create an array containing num elements starting with index start_key each initialized to val
 
-NOT IMPLEMENTED.
-
 =cut
 
 .sub 'array_fill'
-    not_implemented()
+    .param pmc args :slurpy
+    .local pmc array, index, value
+    .local int count
+    array = new 'PhpArray'
+    ($I0, index, count, value) = parse_parameters('llz', args :flat)
+    unless $I0 goto L4
+    unless count >= 0 goto L3
+    #set start index then continue from 0
+    unless index < 0 goto L1
+    array[index] = value
+    index = 0
+    $I0 = 1
+    goto L2
+  L1:
+    $I0 = 0
+  L2:
+    inc $I0
+    unless $I0 <= count goto L4
+    array[index] = value
+    inc index
+    goto L2
+  L3:
+    error(E_WARNING, "Warning: array_fill(): Number of elements must be positive")
+  L4:
+    .return(array)
 .end
 
 =item C<array array_fill_keys(array keys, mixed val)>
Index: src/common/builtins.pir
===================================================================
--- src/common/builtins.pir	(revision 34538)
+++ src/common/builtins.pir	(working copy)
@@ -71,7 +71,7 @@
 
 ## symbolic unary
 .sub 'prefix:-' :multi(_)
-    .param num a
+    .param pmc a
 
     neg a
 

Reply via email to