From 6b14071f5ff200186877fb0597b3f7e4f8617907 Mon Sep 17 00:00:00 2001 From: slava Date: Sat, 21 Oct 2006 20:51:38 +0000 Subject: [PATCH] Column virtual sequence --- library/collections/virtual-sequences.factor | 19 +++++++++++++++++++ library/test/collections/sequences.factor | 7 +++++++ 2 files changed, 26 insertions(+) diff --git a/library/collections/virtual-sequences.factor b/library/collections/virtual-sequences.factor index 99c2dadff0..20f54a1b38 100644 --- a/library/collections/virtual-sequences.factor +++ b/library/collections/virtual-sequences.factor @@ -65,3 +65,22 @@ M: slice set-nth-unsafe slice@ set-nth-unsafe ; M: slice like slice-seq like ; M: slice thaw slice-seq thaw ; + +TUPLE: column col seq ; + +: column@ ( m section -- n seq ) + dup column-col -rot column-seq nth ; + +M: column length column-seq length ; + +M: column nth column@ nth ; + +M: column nth-unsafe column@ nth-unsafe ; + +M: column set-nth column@ set-nth ; + +M: column set-nth-unsafe column@ set-nth-unsafe ; + +M: column like column-seq like ; + +M: column thaw column-seq thaw ; diff --git a/library/test/collections/sequences.factor b/library/test/collections/sequences.factor index 07d5b4be91..6e8ec7ccf4 100644 --- a/library/test/collections/sequences.factor +++ b/library/test/collections/sequences.factor @@ -216,3 +216,10 @@ unit-test [ V{ 1 2 3 } ] [ 3 V{ 1 3 2 } clone [ push-new ] keep ] unit-test + +! Columns +{ { 1 2 3 } { 4 5 6 } { 7 8 9 } } [ clone ] map "seq" set + +[ { 1 4 7 } ] [ 0 "seq" get >array ] unit-test +[ ] [ 1 "seq" get [ sq ] inject ] unit-test +[ { 4 25 64 } ] [ 1 "seq" get >array ] unit-test