use warnings;
use strict;
package MooseX::Types::Moose;
# ABSTRACT: Type exports that match the types shipped with L<Moose>

our $VERSION = '0.50';

use MooseX::Types;
use Moose::Util::TypeConstraints ();

use namespace::autoclean;

#pod =head1 SYNOPSIS
#pod
#pod   package Foo;
#pod   use Moose;
#pod   use MooseX::Types::Moose qw( ArrayRef Int Str );
#pod   use Carp qw( croak );
#pod
#pod   has 'name',
#pod     is  => 'rw',
#pod     isa => Str;
#pod
#pod   has 'ids',
#pod     is  => 'rw',
#pod     isa => ArrayRef[Int];
#pod
#pod   sub add {
#pod       my ($self, $x, $y) = @_;
#pod       croak 'First arg not an Int'  unless is_Int($x);
#pod       croak 'Second arg not an Int' unless is_Int($y);
#pod       return $x + $y;
#pod   }
#pod
#pod   1;
#pod
#pod =head1 DESCRIPTION
#pod
#pod This package contains a virtual library for L<MooseX::Types> that
#pod is able to export all types known to L<Moose>. See L<MooseX::Types>
#pod for general usage information.
#pod
#pod =cut

# all available builtin types as short and long name
my %BuiltIn_Storage
  = map { ($_) x 2 }
    Moose::Util::TypeConstraints->list_all_builtin_type_constraints;

#pod =head1 METHODS
#pod
#pod =head2 type_storage
#pod
#pod Overrides L<MooseX::Types::Base>' C<type_storage> to provide a hash
#pod reference containing all built-in L<Moose> types.
#pod
#pod =cut

# use prepopulated builtin hash as type storage
sub type_storage { \%BuiltIn_Storage }

#pod =head1 SEE ALSO
#pod
#pod L<Moose>,
#pod L<Moose::Util::TypeConstraints>
#pod
#pod =cut

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

MooseX::Types::Moose - Type exports that match the types shipped with L<Moose>

=head1 VERSION

version 0.50

=head1 SYNOPSIS

  package Foo;
  use Moose;
  use MooseX::Types::Moose qw( ArrayRef Int Str );
  use Carp qw( croak );

  has 'name',
    is  => 'rw',
    isa => Str;

  has 'ids',
    is  => 'rw',
    isa => ArrayRef[Int];

  sub add {
      my ($self, $x, $y) = @_;
      croak 'First arg not an Int'  unless is_Int($x);
      croak 'Second arg not an Int' unless is_Int($y);
      return $x + $y;
  }

  1;

=head1 DESCRIPTION

This package contains a virtual library for L<MooseX::Types> that
is able to export all types known to L<Moose>. See L<MooseX::Types>
for general usage information.

=head1 METHODS

=head2 type_storage

Overrides L<MooseX::Types::Base>' C<type_storage> to provide a hash
reference containing all built-in L<Moose> types.

=head1 SEE ALSO

L<Moose>,
L<Moose::Util::TypeConstraints>

=head1 SUPPORT

Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Types>
(or L<bug-MooseX-Types@rt.cpan.org|mailto:bug-MooseX-Types@rt.cpan.org>).

There is also a mailing list available for users of this distribution, at
L<http://lists.perl.org/list/moose.html>.

There is also an irc channel available for users of this distribution, at
L<C<#moose> on C<irc.perl.org>|irc://irc.perl.org/#moose>.

=head1 AUTHOR

Robert "phaylon" Sedlacek <rs@474.at>

=head1 COPYRIGHT AND LICENCE

This software is copyright (c) 2007 by Robert "phaylon" Sedlacek.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut
