Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of "kv" method for rakudo's hashes. #74

Closed
p6rt opened this issue May 3, 2008 · 8 comments
Closed

Implementation of "kv" method for rakudo's hashes. #74

p6rt opened this issue May 3, 2008 · 8 comments
Labels

Comments

@p6rt
Copy link

p6rt commented May 3, 2008

Migrated from rt.perl.org#53666 (status was 'resolved')

Searchable as RT53666$

@p6rt
Copy link
Author

p6rt commented May 3, 2008

From @bacek

Hello.

There is implementation of "kv" method for rakudo.

Only languages/perl/src/classes/Hash.pir affected.

--
Bacek.

@p6rt
Copy link
Author

p6rt commented May 3, 2008

From @bacek

kv.diff
Index: src/classes/Hash.pir
===================================================================
--- src/classes/Hash.pir	(revision 27306)
+++ src/classes/Hash.pir	(working copy)
@@ -39,7 +39,24 @@
     .return ($S0)
 .end
 
+.sub 'kv' :method
+    .local pmc iter
+    .local pmc rv
+    iter = new 'Iterator', self
+    rv   = new 'List'
+  loop:
+    unless iter goto end
+    $S1 = shift iter
+    push rv, $S1
+    $S1 = iter[$S1]
+    push rv, $S1
+    goto loop
+  end:
+    .return (rv)
+.end
 
+
+
 .sub 'keys' :method
     .local pmc iter
     .local pmc rv

@p6rt
Copy link
Author

p6rt commented May 14, 2008

From @bacek

On Sat May 03 04​:59​:53 2008, bacek wrote​:

Hello.

There is implementation of "kv" method for rakudo.

Only languages/perl/src/classes/Hash.pir affected.

Hmm... Looks like no one really interested in...

--
Bacek

@p6rt
Copy link
Author

p6rt commented May 14, 2008

@bacek - Status changed from 'new' to 'open'

@p6rt
Copy link
Author

p6rt commented May 17, 2008

From @bacek

On Sat May 03 04​:59​:53 2008, bacek wrote​:

Hello.

There is implementation of "kv" method for rakudo.

Slightly improved version of patch made after discussion on #parrot.

@p6rt
Copy link
Author

p6rt commented May 17, 2008

From @bacek

kv.diff
Index: src/classes/Hash.pir
===================================================================
--- src/classes/Hash.pir	(revision 27567)
+++ src/classes/Hash.pir	(working copy)
@@ -39,7 +39,30 @@
     .return ($S0)
 .end
 
+=item kv (method)
 
+Returns elements of hash as array of C<Pair(key, value)>
+
+=cut
+
+.sub 'kv' :method
+    .local pmc iter
+    .local pmc rv
+    iter = new 'Iterator', self
+    rv   = new 'List'
+  loop:
+    unless iter goto end
+    $S1 = shift iter
+    push rv, $S1
+    $S1 = iter[$S1]
+    push rv, $S1
+    goto loop
+  end:
+    .return (rv)
+.end
+
+
+
 .sub 'keys' :method
     .local pmc iter
     .local pmc rv
@@ -122,6 +174,15 @@
 
 =item kv
 
+=cut
+
+.sub kv :multi('Hash')
+    .param pmc hash
+
+    .return hash.'kv'()
+.end
+
+
 =item pairs
 
 =item values

@p6rt
Copy link
Author

p6rt commented May 19, 2008

From @pmichaud

Applied in r27652, thanks!

Pm

@p6rt
Copy link
Author

p6rt commented May 19, 2008

@pmichaud - Status changed from 'open' to 'resolved'

@p6rt p6rt closed this as completed May 19, 2008
@p6rt p6rt added the patch label Jan 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant