Show
Ignore:
Timestamp:
03/30/08 23:12:41 (5 years ago)
Author:
daisuke
Message:

lang/perl/Cache-Memcached-libmemcached; auto-generate behavior related accessors

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Cache-Memcached-libmemcached/trunk/lib/Cache/Memcached/libmemcached.pm

    r8433 r8524  
    178178sub stats { die "stats() not implemented" } 
    179179 
    180 sub is_no_block 
    181 { 
    182     shift->memcached_behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_NO_BLOCK() ); 
    183 } 
    184  
    185 sub set_no_block 
    186 { 
    187     shift->memcached_behavior_set( 
    188         Memcached::libmemcached::MEMCACHED_BEHAVIOR_NO_BLOCK(), 
    189         $_[0] 
     180BEGIN 
     181{ 
     182    my @boolean_behavior = qw( no_block ); 
     183    my %behavior = ( 
     184        distribution_method => 'distribution', 
     185        hashing_algorithm   => 'hash' 
    190186    ); 
    191 } 
    192  
    193 sub get_distribution_method 
    194 { 
    195     shift->memcached_behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_DISTRIBUTION() ); 
    196 } 
    197  
    198 sub set_distribution_method 
    199 { 
    200     shift->memcached_behavior_set( 
    201         Memcached::libmemcached::MEMCACHED_BEHAVIOR_DISTRIBUTION(), 
    202         $_[0] 
    203     ); 
    204 } 
    205  
    206 sub get_hashing_algorithm 
    207 { 
    208     shift->memcached_behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_HASH() ); 
    209 } 
    210  
    211 sub set_hashing_algorithm 
    212 { 
    213     shift->memcached_behavior_set( 
    214         Memcached::libmemcached::MEMCACHED_BEHAVIOR_HASH(), 
    215         $_[0] 
    216     ); 
     187 
     188    foreach my $name (@boolean_behavior) { 
     189        my $code = sprintf(<<'        EOSUB', $name, uc $name, $name, uc $name); 
     190            sub is_%s { 
     191                $_[0]->memcached_behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_%s() ); 
     192            } 
     193 
     194            sub set_%s { 
     195                $_[0]->memcached_behavior_set( Memcached::libmemcached::MEMCACHED_BEHAVIOR_%s(), $_[1] ); 
     196            } 
     197        EOSUB 
     198        eval $code; 
     199        die if $@; 
     200    } 
     201 
     202    while (my($method, $field) = each %behavior) { 
     203        my $code = sprintf(<<'        EOSUB', $method, uc $field, $method, uc $field); 
     204            sub get_%s { 
     205                $_[0]->memcached_behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_%s() ); 
     206            } 
     207 
     208            sub set_%s { 
     209                $_[0]->memcached_behavior_set( Memcached::libmemcached::MEMCACHED_BEHAVIOR_%s(), $_[1]); 
     210            } 
     211        EOSUB 
     212        eval $code; 
     213        die if $@; 
     214    } 
     215 
    217216} 
    218217