TYPEMAP
pzk_t*                      T_PZK_O
pzk_channel_t*              T_PZK_CHANNEL_O
pzk_watcher_t*              T_PZK_WATCHER_O
const clientid_t*           T_ZK_PTR
interrupt_fn                T_ZK_PTR
struct ACL_vector*          T_ZK_ACL_VECTOR
pzk_dispatcher_t*           T_PZK_DISPATCHER_O
pzk_pipe_dispatcher_t*      T_PZK_PIPE_O
pzk_interrupt_dispatcher_t* T_PZK_INTERRUPT_O

INPUT
T_PZK_O
    $var = ($type) tied_object_to_ptr(aTHX_ $arg, \"$var\", \"ZooKeeper\");

T_PZK_CHANNEL_O
    $var = ($type) tied_object_to_ptr(aTHX_ $arg, \"$var\", \"ZooKeeper::Channel\");

T_PZK_WATCHER_O
    $var = ($type) tied_object_to_ptr(aTHX_ $arg, \"$var\", \"ZooKeeper::Watcher\");

T_PZK_DISPATCHER_O
    $var = ($type) tied_object_to_ptr(aTHX_ $arg, \"$var\", \"ZooKeeper::Dispatcher\");

T_PZK_PIPE_O
    $var = ($type) tied_object_to_ptr(aTHX_ $arg, \"$var\", \"ZooKeeper::Dispatcher::Pipe\");

T_PZK_INTERRUPT_O
    $var = ($type) tied_object_to_ptr(aTHX_ $arg, \"$var\", \"ZooKeeper::Dispatcher::Interrupt\");

T_ZK_PTR
    if (SvOK($arg)) {
        $var = INT2PTR ($type, SvIV ($arg));
    } else {
        $var = NULL;
    }

T_ZK_ACL_VECTOR
    if (SvOK($arg)) {
        $var = sv_to_acl_vector(aTHX_ $arg);
    } else {
        $var = NULL;
    }


OUTPUT
T_PZK_O
    $arg = ptr_to_tied_object(aTHX_ (void*) $var, \"ZooKeeper\");

T_PZK_CHANNEL_O
    $arg = ptr_to_tied_object(aTHX_ (void*) $var, \"ZooKeeper::Channel\");

T_PZK_WATCHER_O
    $arg = ptr_to_tied_object(aTHX_ (void*) $var, \"ZooKeeper::Watcher\");

T_PZK_DISPATCHER_O
    $arg = ptr_to_tied_object(aTHX_ (void*) $var, \"ZooKeeper::Dispatcher\");

T_PZK_PIPE_O
    $arg = ptr_to_tied_object(aTHX_ (void*) $var, \"ZooKeeper::Dispatcher::Pipe\");

T_PZK_INTERRUPT_O
    $arg = ptr_to_tied_object(aTHX_ (void*) $var, \"ZooKeeper::Dispatcher::Interrupt\");

T_ZK_PTR
    $arg = newSViv(PTR2IV($var));

T_ZK_ACL_VECTOR
    $arg = acl_vector_to_sv(aTHX_ $var);