/* * gauche-sdl-mixer.c - Gauche SDL_mixer binding * * Copyright(C) 2003 by Michael Vess (mvess@michaelvess.com) * * Permission to use, copy, modify, distribute this software and * accompanying documentation for any purpose is hereby granted, * provided that existing copyright notices are retained in all * copies and that this notice is included verbatim in all * distributions. * This software is provided as is, without express or implied * warranty. In no circumstances the author(s) shall be liable * for any damages arising out of the use of this software. * * $Id: gauche-sdl-mixer.c,v 1.3 2003/02/25 02:21:07 mikiso Exp $ */ #include #include #include "gauche-sdl-mixer.h" /***************************************************************************** * Mixer */ /* Chunk */ void mix_chunk_finalize(ScmObj obj, void * data) { Mix_FreeChunk(SCM_MIX_CHUNK(obj)); } static void mix_chunk_print(ScmObj obj, ScmPort *out, ScmWriteContext *ctx) { Scm_Printf(out, "#"); } SCM_DEFINE_BUILTIN_CLASS(Scm_MixChunkClass, mix_chunk_print, NULL, NULL, NULL, SCM_CLASS_DEFAULT_CPL); /* Music */ void mix_music_finalize(ScmObj obj, void *data) { Mix_FreeMusic(SCM_MIX_MUSIC(obj)); } static void mix_music_print(ScmObj obj, ScmPort *out, ScmWriteContext *ctx) { Scm_Printf(out, "#"); } SCM_DEFINE_BUILTIN_CLASS(Scm_MixMusicClass, mix_music_print, NULL, NULL, NULL, SCM_CLASS_DEFAULT_CPL); /***************************************************************************** * Initialization */ extern void Scm_Init_sdl_mixer_lib(ScmModule *mod); extern void Scm_Init_sdl_mixer_syms(ScmModule *mod); void Scm_Init_gauche_sdl_mixer(void) { ScmModule *mod; SCM_INIT_EXTENSION(gauche_sdl_mixer); mod = SCM_MODULE(SCM_FIND_MODULE("sdl.mixer", TRUE)); Scm_InitBuiltinClass(&Scm_MixChunkClass, "", NULL, sizeof(Scm_MixChunkClass)/sizeof(ScmObj), mod); Scm_InitBuiltinClass(&Scm_MixMusicClass, "", NULL, sizeof(Scm_MixMusicClass)/sizeof(ScmObj), mod); Scm_Init_sdl_mixer_lib(mod); Scm_Init_sdl_mixer_syms(mod); }