%module GFL %{ #include "libgfl.h" GFL_RECT *new_Rect (GFL_INT32 x,GFL_INT32 y,GFL_INT32 w,GFL_INT32 h); typedef unsigned long GFL_MEMALLOC; void free_GflStruct(GFL_MEMALLOC *ptr); %} %include libgfl.h %inline %{ void free_GflStruct(GFL_MEMALLOC *ptr) { gflMemoryFree((void *)ptr); } GFL_FILE_INFORMATION *new_FileInformation() { return (GFL_FILE_INFORMATION *)gflMemoryAlloc(sizeof(GFL_FILE_INFORMATION)); } GFL_FORMAT_INFORMATION *new_FormatInformation() { return (GFL_FORMAT_INFORMATION *)gflMemoryAlloc(sizeof(GFL_FORMAT_INFORMATION)); } GFL_LOAD_PARAMS *new_LoadParams() { return (GFL_LOAD_PARAMS *)gflMemoryAlloc(sizeof(GFL_LOAD_PARAMS)); } GFL_SAVE_PARAMS *new_SaveParams() { return (GFL_SAVE_PARAMS *)gflMemoryAlloc(sizeof(GFL_SAVE_PARAMS)); } GFL_RECT *new_Rect (GFL_INT32 x,GFL_INT32 y,GFL_INT32 w,GFL_INT32 h) { GFL_RECT rect; GFL_RECT *rectPtr; rect.x = x; rect.y = y; rect.w = w; rect.h = h; rectPtr = (GFL_RECT *)gflMemoryAlloc(sizeof(GFL_RECT)); return (GFL_RECT *)memmove( rectPtr, &rect, sizeof(GFL_RECT)); } GFL_BITMAP **new_BitmapPtr() { return (GFL_BITMAP **)gflMemoryAlloc(sizeof(GFL_BITMAP *)); } GFL_BITMAP *addr_of_Bitmap(GFL_BITMAP **bitmap) { return *bitmap; } %}