add a couple bits and pieces
[dbsrgits/DBIx-Data-Store-old.git] / lib / DBIx / Data / Collection / Set.pm
index a6188f4..3e965ba 100644 (file)
@@ -3,6 +3,7 @@ package DBIx::Data::Collection::Set;
 use Moose;
 use Method::Signatures::Simple;
 use Data::Perl::Stream::Array;
+use Data::Perl::Collection::Set;
 use Scalar::Util qw(weaken refaddr);
 
 has _store => (is => 'ro', required => 1, init_arg => 'store');
@@ -212,6 +213,20 @@ method as_stream {
   Data::Perl::Stream::Array->new(array => $self->_member_cache);
 }
 
+# theoretically inefficient except that if we're being asked this then
+# either the data should have been pre-loaded or we're going to get all
+# elements anyway
+
+method count {
+  scalar $self->flatten
+}
+
+method map ($sub) {
+  Data::Perl::Collection::Set->new(
+    members => [ map $sub->($_), $self->flatten ]
+  )
+}
+
 method _set_caches ($members) {
   $self->_set_member_cache($members);
   $self->_set_key_cache_members($members);