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


# special types
mng_handle             O_OBJECT
mng_ptr                T_PV
mng_pchar              T_PV

# special because I made it up...
mng_chunkhandle        T_UV

# types
mng_bool               T_IV
mng_retcode            T_UV
mng_speedtype          T_IV
mng_chunkid            T_UV
mng_imgtype            T_UV
mng_chunkidp           T_PTROBJ


# integer types
mng_uint8              T_UV
mng_uint16             T_UV
mng_uint32             T_UV
mng_int8               T_IV
mng_int16              T_IV
mng_int32              T_IV
mng_float              T_DOUBLE
mngjpeg_dctmethod      T_IV


# fixed length char array types (here, represented as strings
mng_uint8arr           T_PV
mng_uint8arr4          T_PV


# fixed length non-char array types
mng_palette8           T_PTROBJ
mng_uint16arr          T_PTROBJ
mng_uint32arr2         T_PTROBJ
mng_palette8e*         T_PV
mng_palette8ep         T_PV


# pointers to char arrays 
mng_uint8p             T_PV
mng_int8p              T_PV
mng_uint8 *            T_PV
mng_int8 *             T_PV

# pointers to integer arrays (here, represented as char arrays)
# the user will have to know to pack() these...
mng_uint16p            T_PV
mng_uint32p            T_PV
mng_uint16 *           T_PV
mng_uint32 *           T_PV
mng_int32 *            T_PV

#
mng_uint16p *          T_PTROBJ
mng_uint32p *          T_PTROBJ


# pointers to types
mng_handle *           T_PTROBJ
mng_bool *             T_PTROBJ
mng_chunkid *          T_PTROBJ
mng_chunkidp *         T_PTROBJ
mng_palette8 *         T_PV
mng_pchar *            T_PTROBJ
mng_ptr *              T_PTROBJ
mng_uint16arr *        T_PTROBJ
mng_uint32arr2 *       T_PTROBJ
mng_uint8arr *         T_PTROBJ
mng_uint8arr4 *        T_PTROBJ


# CALLBACK TYPES need not be typemap'd
# mng_closestream        T_PTROBJ
# mng_errorproc          T_PTROBJ
# mng_getalphaline       T_PTROBJ
# mng_getbkgdline        T_PTROBJ
# mng_getcanvasline      T_PTROBJ
# mng_gettickcount       T_PTROBJ
# mng_iteratechunk       T_PTROBJ
# mng_memalloc           T_PTROBJ
# mng_memfree            T_PTROBJ
# mng_openstream         T_PTROBJ
# mng_processheader      T_PTROBJ
# mng_processmend        T_PTROBJ
# mng_processneed        T_PTROBJ
# mng_processsave        T_PTROBJ
# mng_processseek        T_PTROBJ
# mng_processterm        T_PTROBJ
# mng_processtext        T_PTROBJ
# mng_processunknown     T_PTROBJ
# mng_readdata           T_PTROBJ
# mng_refresh            T_PTROBJ
# mng_settimer           T_PTROBJ
# mng_traceproc          T_PTROBJ
# mng_writedata          T_PTROBJ


INPUT
O_OBJECT
   # seems to work...
   if ( SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV )
   {
      $var = (mng_handle) SvIV( _MNG_GET_HANDLE($arg) );
   }
   else
   {
      my_warn( \"${Package}::$func_name() -- $var is not an object reference\" );
      XSRETURN_IV(MNG_INVALIDHANDLE);
   }

T_PTR_INT
   $var = ($type)SvIV($arg);

OUTPUT
O_OBJECT
   sv_setiv( _MNG_GET_HANDLE($arg), (long) $var );

T_PTR_INT
	sv_setiv($arg, $var);