The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Judy::1;

use strict;
use warnings;

sub first_key { 0 }

sub get {
    my $ptr = $_[0]->ptr;
    return Judy::1::Test( $ptr, $_[1] );
}

sub set {
    my $optr = my $ptr = $_[0]->ptr;

    if ( $_[2] ) {
        Judy::1::Set( $ptr, $_[1] );
    }
    else {
        Judy::1::Unset( $ptr, $_[1] );
    }
    if ( $optr != $ptr ) {
        $_[0]->setptr( $ptr );
    }

    return !! $_[2] ;
}

sub delete {
    my $optr = my $ptr = $_[0]->ptr;
    my $oldval = Judy::1::Unset( $ptr, $_[1] );
    if ( $optr != $ptr ) {
        $_[0]->setptr( $ptr );
    }
    return $oldval;
}

sub free {
    my $ptr = $_[0]->ptr;
    Judy::1::Free( $ptr );
    $_[0]->setptr( $ptr );
}

sub first {
    my $ptr = $_[0]->ptr;
    return Judy::1::First( $ptr, 0 );
}

sub next {
    my $ptr = $_[0]->ptr;
    return Judy::1::Next( $ptr, $_[1] );
}

sub last {
    my $ptr = $_[0]->ptr;
    return Judy::1::Last( $ptr, 0 );
}

sub prev {
    my $ptr = $_[0]->ptr;
    return Judy::1::Prev( $ptr, $_[1] );
}

1;