{
no
warnings
qw( once void )
;
our
$USES_MITE
=
"Mite::Class"
;
our
$MITE_SHIM
=
"Acme::Mitey::Cards::Mite"
;
our
$MITE_VERSION
=
"0.013000"
;
BEGIN {
my
(
$SHIM
,
$CALLER
) =
(
"Acme::Mitey::Cards::Mite"
,
"Acme::Mitey::Cards::Hand"
);
(
*after
,
*around
,
*before
,
*extends
,
*field
,
*has
,
*param
,
*signature_for
,
*with
)
=
do
{
no
warnings
'redefine'
;
(
sub
{
$SHIM
->HANDLE_after(
$CALLER
,
"class"
,
@_
) },
sub
{
$SHIM
->HANDLE_around(
$CALLER
,
"class"
,
@_
) },
sub
{
$SHIM
->HANDLE_before(
$CALLER
,
"class"
,
@_
) },
sub
{ },
sub
{
$SHIM
->HANDLE_has(
$CALLER
,
field
=>
@_
) },
sub
{
$SHIM
->HANDLE_has(
$CALLER
,
has
=>
@_
) },
sub
{
$SHIM
->HANDLE_has(
$CALLER
,
param
=>
@_
) },
sub
{
$SHIM
->HANDLE_signature_for(
$CALLER
,
"class"
,
@_
) },
sub
{
$SHIM
->HANDLE_with(
$CALLER
,
@_
) },
);
};
}
BEGIN {
*STRICT
= \
&Acme::Mitey::Cards::Mite::STRICT
;
*bare
= \
&Acme::Mitey::Cards::Mite::bare
;
*blessed
= \
&Scalar::Util::blessed
;
*carp
= \
&Acme::Mitey::Cards::Mite::carp
;
*confess
= \
&Acme::Mitey::Cards::Mite::confess
;
*croak
= \
&Acme::Mitey::Cards::Mite::croak
;
*false
= \
&Acme::Mitey::Cards::Mite::false
;
*guard
= \
&Acme::Mitey::Cards::Mite::guard
;
*lazy
= \
&Acme::Mitey::Cards::Mite::lazy
;
*lock
= \
&Acme::Mitey::Cards::Mite::lock
;
*ro
= \
&Acme::Mitey::Cards::Mite::ro
;
*rw
= \
&Acme::Mitey::Cards::Mite::rw
;
*rwp
= \
&Acme::Mitey::Cards::Mite::rwp
;
*true
= \
&Acme::Mitey::Cards::Mite::true
;
*unlock
= \
&Acme::Mitey::Cards::Mite::unlock
;
}
BEGIN {
our
@ISA
;
push
@ISA
,
"Acme::Mitey::Cards::Set"
;
}
sub
new {
my
$class
=
ref
(
$_
[0] ) ?
ref
(
shift
) :
shift
;
my
$meta
= (
$Mite::META
{
$class
} ||=
$class
->__META__ );
my
$self
=
bless
{},
$class
;
my
$args
=
$meta
->{HAS_BUILDARGS}
?
$class
->BUILDARGS(
@_
)
: { (
@_
== 1 ) ? %{
$_
[0] } :
@_
};
my
$no_build
=
delete
$args
->{__no_BUILD__};
if
(
exists
$args
->{
"cards"
} ) {
(
do
{
ref
(
$args
->{
"cards"
} ) eq
'ARRAY'
;
}
and
do
{
my
$ok
= 1;
for
my
$i
( @{
$args
->{
"cards"
} } ) {
(
$ok
= 0,
last
)
unless
(
do
{
Scalar::Util::blessed(
$i
)
and
$i
->isa(
q[Acme::Mitey::Cards::Card]
);
}
);
};
$ok
;
}
)
or croak
"Type check failed in constructor: %s should be %s"
,
"cards"
,
"CardArray"
;
$self
->{
"cards"
} =
$args
->{
"cards"
};
}
if
(
exists
$args
->{
"owner"
} ) {
do
{
(
do
{
defined
(
$args
->{
"owner"
} ) and
do
{
ref
( \
$args
->{
"owner"
} ) eq
'SCALAR'
or
ref
( \(
my
$val
=
$args
->{
"owner"
} ) ) eq
'SCALAR'
;
}
}
or (
do
{
Scalar::Util::blessed(
$args
->{
"owner"
} );
}
)
);
}
or croak
"Type check failed in constructor: %s should be %s"
,
"owner"
,
"Str|Object"
;
$self
->{
"owner"
} =
$args
->{
"owner"
};
}
$self
->BUILDALL(
$args
)
if
( !
$no_build
and @{
$meta
->{BUILD} || [] } );
my
@unknown
=
grep
not(/\A(?:cards|owner)\z/),
keys
%{
$args
};
@unknown
and croak(
"Unexpected keys in constructor: "
.
join
(
q[, ]
,
sort
@unknown
) );
return
$self
;
}
my
$__XS
= !
$ENV
{PERL_ONLY}
sub
owner {
@_
> 1
?
do
{
do
{
(
do
{
defined
(
$_
[1] ) and
do
{
ref
( \
$_
[1] ) eq
'SCALAR'
or
ref
( \(
my
$val
=
$_
[1] ) ) eq
'SCALAR'
;
}
}
or (
do
{
Scalar::Util::blessed(
$_
[1] );
}
)
);
}
or croak(
"Type check failed in %s: value should be %s"
,
"accessor"
,
"Str|Object"
);
$_
[0]{
"owner"
} =
$_
[1];
$_
[0];
}
: (
$_
[0]{
"owner"
} );
}
sub
DOES {
my
(
$self
,
$role
) =
@_
;
our
%DOES
;
return
$DOES
{
$role
}
if
exists
$DOES
{
$role
};
return
1
if
$role
eq __PACKAGE__;
if
(
$INC
{
'Moose/Util.pm'
}
and
my
$meta
= Moose::Util::find_meta(
ref
$self
or
$self
) )
{
$meta
->can(
'does_role'
) and
$meta
->does_role(
$role
) and
return
1;
}
return
$self
->SUPER::DOES(
$role
);
}
sub
does {
shift
->DOES(
@_
);
}
1;
}