TYPEMAP
#------

DBX_BOX *    O_OBJECT
DBX_EMAIL *  EM_OBJECT
DBX_FOLDER * FO_OBJECT
void *       GEN_OBJECT

OUTPUT
#-----

O_OBJECT
    sv_setref_pv( $arg, CLASS, (void*)$var );
EM_OBJECT
    sv_setref_pv( $arg, "Mail::Transport::Dbx::Email", (void*)$var );
GEN_OBJECT
    if (((DBX_BOX*)SvIV((SV*)SvRV(self)))->dbx->type == DBX_TYPE_EMAIL) {
        DBX_EMAIL *ret;
	New(0, ret, 1, DBX_EMAIL);
        ret->dbx = self;
        ret->email = (DBXEMAIL*) ret_type;
        ret->header = NULL;
        ret->body = NULL;
        RETVAL = (void*)ret;
        sv_setref_pv( $arg, "Mail::Transport::Dbx::Email", (void*)$var );
    }
    else if (dbx->dbx->type == DBX_TYPE_FOLDER) {
        DBX_FOLDER *ret;
	New(0, ret, 1, DBX_FOLDER);
	if (!dbx->subfolders)
	    New(0, dbx->subfolders, dbx->dbx->indexCount, SV*);
        ret->dbx = self;
        ret->folder = (DBXFOLDER*) ret_type;
	ret->fullpath = Nullsv;
        RETVAL = (void*)ret;
	dbx->subfolders[index] = sv_setref_pv( $arg, "Mail::Transport::Dbx::Folder", (void*)$var );
    }
    
INPUT
#----

O_OBJECT
	if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
		$var = ($type)SvIV((SV*)SvRV( $arg ));
	else{
		warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
		XSRETURN_UNDEF;
	}
EM_OBJECT
	if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
		$var = ($type)SvIV((SV*)SvRV( $arg ));
	else{
		warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
		XSRETURN_UNDEF;
	}
FO_OBJECT
	if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
		$var = ($type)SvIV((SV*)SvRV( $arg ));
	else{
		warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
		XSRETURN_UNDEF;
	}

