#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "../../ppport.h"
/* These were stolen from http://cpansearch.perl.org/src/AMS/Storable-2.30/Storable.xs */
#ifndef HvRITER_set
# define HvRITER_set(hv,r) (HvRITER(hv) = r)
#endif
#ifndef HvEITER_set
# define HvEITER_set(hv,r) (HvEITER(hv) = r)
#endif
#ifndef HvRITER_get
# define HvRITER_get HvRITER
#endif
#ifndef HvEITER_get
# define HvEITER_get HvEITER
#endif
/* end theft */
typedef struct {
HE *eiter;
I32 riter;
} hsi;
MODULE = Hash::StoredIterator PACKAGE = Hash::StoredIterator
TYPEMAP: <<EOT
hsi * T_PTR
EOT
hsi *hash_get_iterator( hv )
HV *hv
CODE:
Newx( RETVAL, 1, hsi );
RETVAL->riter = HvRITER_get(hv);
RETVAL->eiter = HvEITER_get(hv);
OUTPUT:
RETVAL
void hash_set_iterator( hv, itr )
HV *hv
hsi *itr
CODE:
HvRITER_set(hv, itr->riter);
HvEITER_set(hv, itr->eiter);
void hash_init_iterator( hv )
HV *hv
CODE:
hv_iterinit(hv);