Added trap for SDL::init because it keeps crashing on FreeBSD
[sdlgit/SDL_perl.git] / typemap
diff --git a/typemap b/typemap
index 392972f..369d2a5 100644 (file)
--- a/typemap
+++ b/typemap
@@ -14,15 +14,16 @@ Sint16 *            T_PTR
 Sint32                 T_IV
 Sint32 *               T_PTR
 SDL_Event *            T_PTR
-SDL_Surface *          T_PTR
+SDL_Surface *          O_OBJECT
 SDL_SysWMmsg *         T_PTR
 SDL_CD *               T_PTR
 SDL_CDtrack *          T_PTR
 SDL_TimerCallback      T_PTR
-SDL_Rect *             T_PTR
-SDL_Color *            T_PTR
-SDL_Palette *          T_PTR
-SDL_PixelFormat *      T_PTR
+SDL_Rect *             O_OBJECT
+SDL_Color *            O_OBJECT
+SDL_Palette *          O_OBJECT
+SDL_PixelFormat *      O_OBJECT
+SDL_VideoInfo *                O_OBJECT
 SDL_Cursor *           T_PTR
 SDL_AudioSpec *                T_PTR
 SDL_AudioCVT *         T_PTR
@@ -42,8 +43,8 @@ UDPpacket *           T_PTR
 UDPpacket **           T_PTR
 IPaddress*             T_PTR
 SDLNet_GenericSocket   T_PTR
-TTF_Font *             T_PTR
-SDL_Overlay *          T_PTR
+TTF_Font *             O_OBJECT
+SDL_Overlay *          O_OBJECT        
 SMPEG_Info *           T_PTR
 SMPEG *                        T_PTR
 SMPEGstatus            T_IV
@@ -52,6 +53,8 @@ GLbitfield            T_IV
 GLenum                 T_IV
 ConsoleInformation *   T_PTR
 GLboolean              T_U_CHAR
+GLUquadric *           T_PTR
+GLdouble               T_NV
 GLUnurbsObj *          T_PTR
 GLUtesselator *                T_PTR
 GLuint                 T_UV
@@ -67,3 +70,25 @@ Sound_Sample *               T_PTR
 Sound_AudioInfo *      T_PTR
 SDL_RWops*             T_PTR
 SDL_svg_context*       T_PTR
+int                    T_IV
+
+OUTPUT
+
+# The Perl object is blessed into 'CLASS', which should be a
+# char* having the name of the package for the blessing.
+O_OBJECT
+       sv_setref_pv( $arg, CLASS, (void*)$var );
+
+
+INPUT
+
+O_OBJECT
+       if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
+               { $var = ($type)SvIV((SV*)SvRV( $arg )); }
+       else if ($arg == 0)
+       { XSRETURN(0); }
+       else{
+               XSRETURN_UNDEF;
+       }
+
+