Mercurial > pub > Impl
comparison Lib/IMPL/lang.pm @ 167:1f7a6d762394
SQL schema in progress
| author | sourcer |
|---|---|
| date | Thu, 12 May 2011 08:57:19 +0400 |
| parents | 76515373dac0 |
| children | 6148f89bb7bf |
comparison
equal
deleted
inserted
replaced
| 166:4267a2ac3d46 | 167:1f7a6d762394 |
|---|---|
| 3 use warnings; | 3 use warnings; |
| 4 | 4 |
| 5 use parent qw(Exporter); | 5 use parent qw(Exporter); |
| 6 use IMPL::_core::version; | 6 use IMPL::_core::version; |
| 7 | 7 |
| 8 require IMPL::Class::PropertyInfo; | |
| 8 | 9 |
| 9 our @EXPORT = qw(&is); | 10 our @EXPORT = qw(&is); |
| 11 our %EXPORT_TAGS = ( | |
| 12 base => [ | |
| 13 qw( | |
| 14 &is | |
| 15 ) | |
| 16 ], | |
| 17 constants => [ | |
| 18 qw( | |
| 19 &ACCESS_PUBLIC | |
| 20 &ACCESS_PROTECTED | |
| 21 &ACCESS_PRIVATE | |
| 22 &PROP_GET | |
| 23 &PROP_SET | |
| 24 &PROP_OWNERSET | |
| 25 &PROP_LIST | |
| 26 &PROP_ALL | |
| 27 ) | |
| 28 ], | |
| 29 | |
| 30 declare => [ | |
| 31 qw( | |
| 32 &public | |
| 33 &protected | |
| 34 &private | |
| 35 &virtual | |
| 36 &property | |
| 37 &static | |
| 38 &property | |
| 39 ) | |
| 40 ], | |
| 41 compare => [ | |
| 42 qw( | |
| 43 &equals | |
| 44 &equals_s | |
| 45 ) | |
| 46 ] | |
| 47 ); | |
| 48 | |
| 49 our @EXPORT_OK = keys %{ { map (($_,1) , map (@{$_}, values %EXPORT_TAGS) ) } }; | |
| 50 | |
| 51 use constant { | |
| 52 ACCESS_PUBLIC => 1, | |
| 53 ACCESS_PROTECTED => 2, | |
| 54 ACCESS_PRIVATE => 3, | |
| 55 PROP_GET => 1, | |
| 56 PROP_SET => 2, | |
| 57 PROP_OWNERSET => 10, | |
| 58 PROP_LIST => 4, | |
| 59 PROP_ALL => 3 | |
| 60 }; | |
| 10 | 61 |
| 11 sub is($$) { | 62 sub is($$) { |
| 12 eval { $_[0]->isa($_[1]) } | 63 eval { $_[0]->isa( $_[1] ) }; |
| 64 } | |
| 65 | |
| 66 sub virtual($) { | |
| 67 $_[0]->Virtual(1); | |
| 68 $_[0]; | |
| 69 } | |
| 70 | |
| 71 sub public($) { | |
| 72 $_[0]->Access(ACCESS_PUBLIC); | |
| 73 $_[0]->Implement; | |
| 74 $_[0]; | |
| 75 } | |
| 76 | |
| 77 sub private($) { | |
| 78 $_[0]->Access(ACCESS_PRIVATE); | |
| 79 $_[0]->Implement; | |
| 80 $_[0]; | |
| 81 } | |
| 82 | |
| 83 sub protected($) { | |
| 84 $_[0]->Access(ACCESS_PROTECTED); | |
| 85 $_[0]->Implement; | |
| 86 $_[0]; | |
| 87 } | |
| 88 | |
| 89 sub property($$;$) { | |
| 90 my ( $propName, $mutators, $attributes ) = @_; | |
| 91 my $Info = new IMPL::Class::PropertyInfo( | |
| 92 { | |
| 93 Name => $propName, | |
| 94 Mutators => $mutators, | |
| 95 Class => scalar(caller), | |
| 96 Attributes => $attributes | |
| 97 } | |
| 98 ); | |
| 99 return $Info; | |
| 100 } | |
| 101 | |
| 102 sub static($$) { | |
| 103 my ( $name, $value ) = @_; | |
| 104 my $class = caller; | |
| 105 $class->static_accessor( $name, $value ); | |
| 106 } | |
| 107 | |
| 108 sub equals { | |
| 109 if (defined $_[0]) { | |
| 110 return 0 if (not defined $_[1]); | |
| 111 | |
| 112 return $_[0] == $_[1]; | |
| 113 } else { | |
| 114 return 0 if defined $_[1]; | |
| 115 | |
| 116 return 1; | |
| 117 } | |
| 118 } | |
| 119 | |
| 120 sub equals_s { | |
| 121 if (defined $_[0]) { | |
| 122 return 0 if (not defined $_[1]); | |
| 123 | |
| 124 return $_[0] eq $_[1]; | |
| 125 } else { | |
| 126 return 0 if defined $_[1]; | |
| 127 | |
| 128 return 1; | |
| 129 } | |
| 13 } | 130 } |
| 14 | 131 |
| 15 1; | 132 1; |
