summary refs log tree commit diff stats
path: root/lib/base
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2009-01-07 17:03:25 +0100
committerAndreas Rumpf <rumpf_a@web.de>2009-01-07 17:03:25 +0100
commit439aa2d04d5528b5aed288f70895515d1da2dc3d (patch)
treecda2d0bc4d4f2bab189c4a0567cae3c1428c5ed0 /lib/base
parent1c8ddca7e08af9075a930edaca6c522d5e6fd8b5 (diff)
downloadNim-439aa2d04d5528b5aed288f70895515d1da2dc3d.tar.gz
version 0.7.4
Diffstat (limited to 'lib/base')
-rw-r--r--lib/base/cgi.nim3
-rw-r--r--lib/base/gtk/atk.nim2
-rw-r--r--lib/base/gtk/gdk2.nim2
-rw-r--r--lib/base/gtk/gdk2pixbuf.nim2
-rw-r--r--lib/base/gtk/gdkglext.nim2
-rw-r--r--lib/base/gtk/glib2.nim2
-rw-r--r--lib/base/gtk/gtk2.nim2
-rw-r--r--lib/base/gtk/gtkglext.nim2
-rw-r--r--lib/base/gtk/gtkhtml.nim2
-rw-r--r--lib/base/gtk/libglade2.nim2
-rw-r--r--lib/base/gtk/pango.nim2
-rw-r--r--lib/base/gtk/pangoutils.nim2
-rw-r--r--lib/base/sdl/sdl.nim3
-rw-r--r--lib/base/sdl/sdl_mixer.nim411
14 files changed, 229 insertions, 210 deletions
diff --git a/lib/base/cgi.nim b/lib/base/cgi.nim
index 3ed94c9b7..59b7b9d09 100644
--- a/lib/base/cgi.nim
+++ b/lib/base/cgi.nim
@@ -281,7 +281,7 @@ proc getServerSoftware*(): string =
 
 proc setTestData*(keysvalues: openarray[string]) = 
   ## fills the appropriate environment variables to test your CGI application.
-  ## This can only simulate the 'GET' 'REQUEST_METHOD'. `keysvalues` should
+  ## This can only simulate the 'GET' request method. `keysvalues` should
   ## provide embedded (name, value)-pairs. Example:
   ##
   ## .. code-block:: Nimrod
@@ -300,6 +300,7 @@ proc setTestData*(keysvalues: openarray[string]) =
 proc writeContentType*() = 
   ## call this before starting to send your HTML data to `stdout`. This
   ## is just a shorthand for: 
+  ##
   ## .. code-block:: Nimrod
   ##     write(stdout, "Content-type: text/html\n\n")
   write(stdout, "Content-type: text/html\n\n")
diff --git a/lib/base/gtk/atk.nim b/lib/base/gtk/atk.nim
index 8004eccfc..ae7a34c4b 100644
--- a/lib/base/gtk/atk.nim
+++ b/lib/base/gtk/atk.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import
   glib2
 
diff --git a/lib/base/gtk/gdk2.nim b/lib/base/gtk/gdk2.nim
index 66838ab99..0ca5056b5 100644
--- a/lib/base/gtk/gdk2.nim
+++ b/lib/base/gtk/gdk2.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import
   glib2, gdk2pixbuf, pango
 
diff --git a/lib/base/gtk/gdk2pixbuf.nim b/lib/base/gtk/gdk2pixbuf.nim
index 8ef3ac0f9..daaa1479b 100644
--- a/lib/base/gtk/gdk2pixbuf.nim
+++ b/lib/base/gtk/gdk2pixbuf.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import
   glib2
 
diff --git a/lib/base/gtk/gdkglext.nim b/lib/base/gtk/gdkglext.nim
index d5e6b128e..524b5f730 100644
--- a/lib/base/gtk/gdkglext.nim
+++ b/lib/base/gtk/gdkglext.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import 
   Glib2, Gdk2
 
diff --git a/lib/base/gtk/glib2.nim b/lib/base/gtk/glib2.nim
index dfcc586da..aca1b5551 100644
--- a/lib/base/gtk/glib2.nim
+++ b/lib/base/gtk/glib2.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 when defined(windows):
   const
     gliblib = "libglib-2.0-0.dll"
diff --git a/lib/base/gtk/gtk2.nim b/lib/base/gtk/gtk2.nim
index 22bbd3c6c..b20d5e635 100644
--- a/lib/base/gtk/gtk2.nim
+++ b/lib/base/gtk/gtk2.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import
   glib2, atk, pango, gdk2pixbuf, gdk2
 
diff --git a/lib/base/gtk/gtkglext.nim b/lib/base/gtk/gtkglext.nim
index 7d9e35b13..38da5d25e 100644
--- a/lib/base/gtk/gtkglext.nim
+++ b/lib/base/gtk/gtkglext.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import 
   Glib2, Gdk2, Gtk2, GdkGLExt
 
diff --git a/lib/base/gtk/gtkhtml.nim b/lib/base/gtk/gtkhtml.nim
index 17d3ac56c..d015a78bc 100644
--- a/lib/base/gtk/gtkhtml.nim
+++ b/lib/base/gtk/gtkhtml.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import 
   gtk2, glib2, atk, pango, gdk2pixbuf, gdk2
 
diff --git a/lib/base/gtk/libglade2.nim b/lib/base/gtk/libglade2.nim
index cc90b0623..5e323680e 100644
--- a/lib/base/gtk/libglade2.nim
+++ b/lib/base/gtk/libglade2.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import
   glib2, gtk2
 
diff --git a/lib/base/gtk/pango.nim b/lib/base/gtk/pango.nim
index 363650f1f..ade2da989 100644
--- a/lib/base/gtk/pango.nim
+++ b/lib/base/gtk/pango.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import
   glib2
 
diff --git a/lib/base/gtk/pangoutils.nim b/lib/base/gtk/pangoutils.nim
index 6033cca7d..e6f3ab94c 100644
--- a/lib/base/gtk/pangoutils.nim
+++ b/lib/base/gtk/pangoutils.nim
@@ -1,3 +1,5 @@
+{.deadCodeElim: on.}
+
 import
   glib2, pango
 
diff --git a/lib/base/sdl/sdl.nim b/lib/base/sdl/sdl.nim
index 2c83c4893..7d2b6ba26 100644
--- a/lib/base/sdl/sdl.nim
+++ b/lib/base/sdl/sdl.nim
@@ -270,7 +270,8 @@
 #
 #
 
-#
+{.deadCodeElim: on.}
+
 when defined(windows):
   const SDLLibName = "SDL.dll"
 elif defined(macosx):
diff --git a/lib/base/sdl/sdl_mixer.nim b/lib/base/sdl/sdl_mixer.nim
index b5dd91dfa..f840dc52a 100644
--- a/lib/base/sdl/sdl_mixer.nim
+++ b/lib/base/sdl/sdl_mixer.nim
@@ -2,93 +2,93 @@
 #******************************************************************************
 #
 #  $Id: sdl_mixer.pas,v 1.18 2007/05/29 21:31:44 savage Exp $
-#  
-#
-#                                                                              
-#       Borland Delphi SDL_Mixer - Simple DirectMedia Layer Mixer Library      
-#       Conversion of the Simple DirectMedia Layer Headers                     
-#                                                                              
-# Portions created by Sam Lantinga <slouken@devolution.com> are                
-# Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga                     
-# 5635-34 Springhouse Dr.                                                      
-# Pleasanton, CA 94588 (USA)                                                   
-#                                                                              
-# All Rights Reserved.                                                         
-#                                                                              
-# The original files are : SDL_mixer.h                                         
-#                          music_cmd.h                                         
-#                          wavestream.h                                        
-#                          timidity.h                                          
-#                          playmidi.h                                          
-#                          music_ogg.h                                         
-#                          mikmod.h                                            
-#                                                                              
-# The initial developer of this Pascal code was :                              
-# Dominqiue Louis <Dominique@SavageSoftware.com.au>                            
-#                                                                              
-# Portions created by Dominqiue Louis are                                      
-# Copyright (C) 2000 - 2001 Dominqiue Louis.                                   
-#                                                                              
-#                                                                              
-# Contributor(s)                                                               
-# --------------                                                               
-# Matthias Thoma <ma.thoma@gmx.de>                                             
-#                                                                              
-# Obtained through:                                                            
-# Joint Endeavour of Delphi Innovators ( Project JEDI )                        
-#                                                                              
-# You may retrieve the latest version of this file at the Project              
-# JEDI home page, located at http://delphi-jedi.org                            
-#                                                                              
-# The contents of this file are used with permission, subject to               
-# the Mozilla Public License Version 1.1 (the "License"); you may              
-# not use this file except in compliance with the License. You may             
-# obtain a copy of the License at                                              
-# http://www.mozilla.org/MPL/MPL-1.1.html                                                         
-#                                                                              
-# Software distributed under the License is distributed on an                  
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or               
-# implied. See the License for the specific language governing                 
-# rights and limitations under the License.                                    
-#                                                                              
-# Description                                                                  
-# -----------                                                                  
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-# Requires                                                                     
-# --------                                                                     
-#   SDL.pas & SMPEG.pas somewhere within your search path.                     
-#                                                                              
-# Programming Notes                                                            
-# -----------------                                                            
-#   See the Aliens Demo to see how this library is used                        
-#                                                                              
-# Revision History                                                             
-# ----------------                                                             
-#   April    02 2001 - DL : Initial Translation                                
-#                                                                              
-#  February  02 2002 - DL : Update to version 1.2.1                            
-#                                                                              
-#   April   03 2003 - DL : Added jedi-sdl.inc include file to support more     
-#                          Pascal compilers. Initial support is now included   
-#                          for GnuPascal, VirtualPascal, TMT and obviously     
-#                          continue support for Delphi Kylix and FreePascal.   
-#                                                                              
+#
+#
+#
+#       Borland Delphi SDL_Mixer - Simple DirectMedia Layer Mixer Library
+#       Conversion of the Simple DirectMedia Layer Headers
+#
+# Portions created by Sam Lantinga <slouken@devolution.com> are
+# Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
+# 5635-34 Springhouse Dr.
+# Pleasanton, CA 94588 (USA)
+#
+# All Rights Reserved.
+#
+# The original files are : SDL_mixer.h
+#                          music_cmd.h
+#                          wavestream.h
+#                          timidity.h
+#                          playmidi.h
+#                          music_ogg.h
+#                          mikmod.h
+#
+# The initial developer of this Pascal code was :
+# Dominqiue Louis <Dominique@SavageSoftware.com.au>
+#
+# Portions created by Dominqiue Louis are
+# Copyright (C) 2000 - 2001 Dominqiue Louis.
+#
+#
+# Contributor(s)
+# --------------
+# Matthias Thoma <ma.thoma@gmx.de>
+#
+# Obtained through:
+# Joint Endeavour of Delphi Innovators ( Project JEDI )
+#
+# You may retrieve the latest version of this file at the Project
+# JEDI home page, located at http://delphi-jedi.org
+#
+# The contents of this file are used with permission, subject to
+# the Mozilla Public License Version 1.1 (the "License"); you may
+# not use this file except in compliance with the License. You may
+# obtain a copy of the License at
+# http://www.mozilla.org/MPL/MPL-1.1.html
+#
+# Software distributed under the License is distributed on an
+# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# Description
+# -----------
+#
+#
+#
+#
+#
+#
+#
+# Requires
+# --------
+#   SDL.pas & SMPEG.pas somewhere within your search path.
+#
+# Programming Notes
+# -----------------
+#   See the Aliens Demo to see how this library is used
+#
+# Revision History
+# ----------------
+#   April    02 2001 - DL : Initial Translation
+#
+#  February  02 2002 - DL : Update to version 1.2.1
+#
+#   April   03 2003 - DL : Added jedi-sdl.inc include file to support more
+#                          Pascal compilers. Initial support is now included
+#                          for GnuPascal, VirtualPascal, TMT and obviously
+#                          continue support for Delphi Kylix and FreePascal.
+#
 #   April   24 2003 - DL : under instruction from Alexey Barkovoy, I have added
-#                          better TMT Pascal support and under instruction     
+#                          better TMT Pascal support and under instruction
 #                          from Prof. Abimbola Olowofoyeku (The African Chief),
-#                          I have added better Gnu Pascal support              
-#                                                                              
-#   April   30 2003 - DL : under instruction from David Mears AKA              
-#                          Jason Siletto, I have added FPC Linux support.      
-#                          This was compiled with fpc 1.1, so remember to set  
-#                          include file path. ie. -Fi/usr/share/fpcsrc/rtl/*   
-#                                                                              
+#                          I have added better Gnu Pascal support
+#
+#   April   30 2003 - DL : under instruction from David Mears AKA
+#                          Jason Siletto, I have added FPC Linux support.
+#                          This was compiled with fpc 1.1, so remember to set
+#                          include file path. ie. -Fi/usr/share/fpcsrc/rtl/*
+#
 #
 #  $Log: sdl_mixer.pas,v $
 #  Revision 1.18  2007/05/29 21:31:44  savage
@@ -166,19 +166,19 @@ const
   MIX_MAJOR_VERSION* = SDL_MIXER_MAJOR_VERSION
   MIX_MINOR_VERSION* = SDL_MIXER_MINOR_VERSION
   MIX_PATCHLEVEL* = SDL_MIXER_PATCHLEVEL # SDL_Mixer.h constants
-                                         # The default mixer has 8 simultaneous mixing channels 
-  MIX_CHANNELS* = 8           # Good default values for a PC soundcard 
+                                         # The default mixer has 8 simultaneous mixing channels
+  MIX_CHANNELS* = 8           # Good default values for a PC soundcard
   MIX_DEFAULT_FREQUENCY* = 22050
 
-when defined(IA32): 
-  const 
+when defined(IA32):
+  const
     MIX_DEFAULT_FORMAT* = AUDIO_S16LSB
-else: 
-  const 
+else:
+  const
     MIX_DEFAULT_FORMAT* = AUDIO_S16MSB
-const 
+const
   MIX_DEFAULT_CHANNELS* = 2
-  MIX_MAX_VOLUME* = 128       # Volume of a chunk 
+  MIX_MAX_VOLUME* = 128       # Volume of a chunk
   PATH_MAX* = 255             # mikmod.h constants
                               #*
                               #  * Library version
@@ -204,7 +204,7 @@ type                          #music_cmd.h types
     cvt*: TSDL_AudioCVT
 
   PMidiEvent* = ptr TMidiEvent
-  TMidiEvent*{.final.} = object 
+  TMidiEvent*{.final.} = object
     time*: int32
     channel*: uint8
     type_*: uint8
@@ -228,43 +228,43 @@ type                          #music_cmd.h types
     len_available*: int
     snd_available*: PUint8
 
-  TErrorEnum* = enum 
-    MMERR_OPENING_FILE, MMERR_OUT_OF_MEMORY, MMERR_DYNAMIC_LINKING, 
-    MMERR_SAMPLE_TOO_BIG, MMERR_OUT_OF_HANDLES, MMERR_UNKNOWN_WAVE_TYPE, 
-    MMERR_LOADING_PATTERN, MMERR_LOADING_TRACK, MMERR_LOADING_HEADER, 
-    MMERR_LOADING_SAMPLEINFO, MMERR_NOT_A_MODULE, MMERR_NOT_A_STREAM, 
-    MMERR_MED_SYNTHSAMPLES, MMERR_ITPACK_INVALID_DATA, MMERR_DETECTING_DEVICE, 
-    MMERR_INVALID_DEVICE, MMERR_INITIALIZING_MIXER, MMERR_OPENING_AUDIO, 
-    MMERR_8BIT_ONLY, MMERR_16BIT_ONLY, MMERR_STEREO_ONLY, MMERR_ULAW, 
-    MMERR_NON_BLOCK, MMERR_AF_AUDIO_PORT, MMERR_AIX_CONFIG_INIT, 
-    MMERR_AIX_CONFIG_CONTROL, MMERR_AIX_CONFIG_START, MMERR_GUS_SETTINGS, 
-    MMERR_GUS_RESET, MMERR_GUS_TIMER, MMERR_HP_SETSAMPLESIZE, MMERR_HP_SETSPEED, 
-    MMERR_HP_CHANNELS, MMERR_HP_AUDIO_OUTPUT, MMERR_HP_AUDIO_DESC, 
-    MMERR_HP_BUFFERSIZE, MMERR_OSS_SETFRAGMENT, MMERR_OSS_SETSAMPLESIZE, 
-    MMERR_OSS_SETSTEREO, MMERR_OSS_SETSPEED, MMERR_SGI_SPEED, MMERR_SGI_16BIT, 
-    MMERR_SGI_8BIT, MMERR_SGI_STEREO, MMERR_SGI_MONO, MMERR_SUN_INIT, 
-    MMERR_OS2_MIXSETUP, MMERR_OS2_SEMAPHORE, MMERR_OS2_TIMER, MMERR_OS2_THREAD, 
-    MMERR_DS_PRIORITY, MMERR_DS_BUFFER, MMERR_DS_FORMAT, MMERR_DS_NOTIFY, 
-    MMERR_DS_EVENT, MMERR_DS_THREAD, MMERR_DS_UPDATE, MMERR_WINMM_HANDLE, 
-    MMERR_WINMM_ALLOCATED, MMERR_WINMM_DEVICEID, MMERR_WINMM_FORMAT, 
+  TErrorEnum* = enum
+    MMERR_OPENING_FILE, MMERR_OUT_OF_MEMORY, MMERR_DYNAMIC_LINKING,
+    MMERR_SAMPLE_TOO_BIG, MMERR_OUT_OF_HANDLES, MMERR_UNKNOWN_WAVE_TYPE,
+    MMERR_LOADING_PATTERN, MMERR_LOADING_TRACK, MMERR_LOADING_HEADER,
+    MMERR_LOADING_SAMPLEINFO, MMERR_NOT_A_MODULE, MMERR_NOT_A_STREAM,
+    MMERR_MED_SYNTHSAMPLES, MMERR_ITPACK_INVALID_DATA, MMERR_DETECTING_DEVICE,
+    MMERR_INVALID_DEVICE, MMERR_INITIALIZING_MIXER, MMERR_OPENING_AUDIO,
+    MMERR_8BIT_ONLY, MMERR_16BIT_ONLY, MMERR_STEREO_ONLY, MMERR_ULAW,
+    MMERR_NON_BLOCK, MMERR_AF_AUDIO_PORT, MMERR_AIX_CONFIG_INIT,
+    MMERR_AIX_CONFIG_CONTROL, MMERR_AIX_CONFIG_START, MMERR_GUS_SETTINGS,
+    MMERR_GUS_RESET, MMERR_GUS_TIMER, MMERR_HP_SETSAMPLESIZE, MMERR_HP_SETSPEED,
+    MMERR_HP_CHANNELS, MMERR_HP_AUDIO_OUTPUT, MMERR_HP_AUDIO_DESC,
+    MMERR_HP_BUFFERSIZE, MMERR_OSS_SETFRAGMENT, MMERR_OSS_SETSAMPLESIZE,
+    MMERR_OSS_SETSTEREO, MMERR_OSS_SETSPEED, MMERR_SGI_SPEED, MMERR_SGI_16BIT,
+    MMERR_SGI_8BIT, MMERR_SGI_STEREO, MMERR_SGI_MONO, MMERR_SUN_INIT,
+    MMERR_OS2_MIXSETUP, MMERR_OS2_SEMAPHORE, MMERR_OS2_TIMER, MMERR_OS2_THREAD,
+    MMERR_DS_PRIORITY, MMERR_DS_BUFFER, MMERR_DS_FORMAT, MMERR_DS_NOTIFY,
+    MMERR_DS_EVENT, MMERR_DS_THREAD, MMERR_DS_UPDATE, MMERR_WINMM_HANDLE,
+    MMERR_WINMM_ALLOCATED, MMERR_WINMM_DEVICEID, MMERR_WINMM_FORMAT,
     MMERR_WINMM_UNKNOWN, MMERR_MAC_SPEED, MMERR_MAC_START, MMERR_MAX
   PMODULE* = ptr TMODULE
-  TMODULE*{.final.} = object 
+  TMODULE*{.final.} = object
   PUNIMOD* = ptr TUNIMOD
   TUNIMOD* = TMODULE          #SDL_mixer.h types
-                              # The internal format for an audio chunk 
+                              # The internal format for an audio chunk
   PMix_Chunk* = ptr TMix_Chunk
-  TMix_Chunk*{.final.} = object 
+  TMix_Chunk*{.final.} = object
     allocated*: int
     abuf*: PUint8
     alen*: Uint32
-    volume*: Uint8            # Per-sample volume, 0-128 
-  
-  Mix_Chunk* = TMix_Chunk     # The different fading types supported 
-  TMix_Fading* = enum 
+    volume*: Uint8            # Per-sample volume, 0-128
+
+  Mix_Chunk* = TMix_Chunk     # The different fading types supported
+  TMix_Fading* = enum
     MIX_NO_FADING, MIX_FADING_OUT, MIX_FADING_IN
   Mix_Fading* = TMix_Fading
-  TMix_MusicType* = enum 
+  TMix_MusicType* = enum
     MUS_NONE, MUS_CMD, MUS_WAV, MUS_MOD, MUS_MID, MUS_OGG, MUS_MP3
   Mix_MusicType* = TMix_MusicType #
                                   #  TMusicUnion = record
@@ -279,89 +279,84 @@ type                          #music_cmd.h types
                                   #      {$ENDIF}
                                   #  end;
   PMix_Music* = ptr TMix_Music
-  TMix_Music*{.final.} = object  # The internal format for a music chunk interpreted via mikmod 
+  TMix_Music*{.final.} = object  # The internal format for a music chunk interpreted via mikmod
     type_*: TMix_MusicType    # other fields are not aviable
                               #    data : TMusicUnion;
                               #    fading : TMix_Fading;
                               #    fade_volume : integer;
                               #    fade_step : integer;
                               #    fade_steps : integer;
-                              #    error : integer; 
-  
+                              #    error : integer;
+
   TMixFunction* = proc (udata: Pointer, stream: PUint8, length: int): Pointer{.
       cdecl.} # This macro can be used to fill a version structure with the compile-time
-              #  version of the SDL_mixer library. 
+              #  version of the SDL_mixer library.
 
 proc SDL_MIXER_VERSION*(X: var TSDL_Version)
   # This function gets the version of the dynamically linked SDL_mixer library.
   #     It should NOT be used to fill a version structure, instead you should use the
-  #     SDL_MIXER_VERSION() macro. 
+  #     SDL_MIXER_VERSION() macro.
 proc Mix_Linked_Version*(): PSDL_version{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Open the mixer with a certain audio format 
-proc Mix_OpenAudio*(frequency: int, format: Uint16, channels: int, 
+  # Open the mixer with a certain audio format
+proc Mix_OpenAudio*(frequency: int, format: Uint16, channels: int,
                     chunksize: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
   # Dynamically change the number of channels managed by the mixer.
   #   If decreasing the number of channels, the upper channels are
   #   stopped.
   #   This function returns the new number of allocated channels.
-  # 
-proc Mix_AllocateChannels*(numchannels: int): int{.cdecl, 
+  #
+proc Mix_AllocateChannels*(numchannels: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # Find out what the actual audio device parameters are.
   #   This function returns 1 if the audio has been opened, 0 otherwise.
-  # 
+  #
 proc Mix_QuerySpec*(frequency: var int, format: var Uint16, channels: var int): int{.
     cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Load a wave file or a music (.mod .s3m .it .xm) file 
-proc Mix_LoadWAV_RW*(src: PSDL_RWops, freesrc: int): PMix_Chunk{.cdecl, 
+  # Load a wave file or a music (.mod .s3m .it .xm) file
+proc Mix_LoadWAV_RW*(src: PSDL_RWops, freesrc: int): PMix_Chunk{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
 proc Mix_LoadWAV*(filename: cstring): PMix_Chunk
-proc Mix_LoadMUS*(filename: cstring): PMix_Music{.cdecl, 
+proc Mix_LoadMUS*(filename: cstring): PMix_Music{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-  ##if 0 { This hasn't been hooked into music.c yet }
-  #{ Load a music file from an SDL_RWop object (MikMod-specific currently)
-  #   Matt Campbell (matt@campbellhome.dhs.org) April 2000 }
-  #function Mix_LoadMUS_RW(SDL_RWops *rw) : PMix_Music;  cdecl;
-  ##endif
-  # Load a wave file of the mixer format from a memory buffer 
-proc Mix_QuickLoad_WAV*(mem: PUint8): PMix_Chunk{.cdecl, 
+  # Load a wave file of the mixer format from a memory buffer
+proc Mix_QuickLoad_WAV*(mem: PUint8): PMix_Chunk{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-  # Free an audio chunk previously loaded 
+  # Free an audio chunk previously loaded
 proc Mix_FreeChunk*(chunk: PMix_Chunk){.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_FreeMusic*(music: PMix_Music){.cdecl, importc, dynlib: SDL_MixerLibName.}
   # Find out the music format of a mixer music, or the currently playing
   #   music, if 'music' is NULL.
-proc Mix_GetMusicType*(music: PMix_Music): TMix_MusicType{.cdecl, 
+proc Mix_GetMusicType*(music: PMix_Music): TMix_MusicType{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # Set a function that is called after all mixing is performed.
   #   This can be used to provide real-time visual display of the audio stream
   #   or add a custom mixer filter for the stream data.
   #
-proc Mix_SetPostMix*(mix_func: TMixFunction, arg: Pointer){.cdecl, 
+proc Mix_SetPostMix*(mix_func: TMixFunction, arg: Pointer){.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # Add your own music player or additional mixer function.
   #   If 'mix_func' is NULL, the default music player is re-enabled.
-  # 
-proc Mix_HookMusic*(mix_func: TMixFunction, arg: Pointer){.cdecl, 
+  #
+proc Mix_HookMusic*(mix_func: TMixFunction, arg: Pointer){.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # Add your own callback when the music has finished playing.
-  # 
-proc Mix_HookMusicFinished*(music_finished: Pointer){.cdecl, 
+  #
+proc Mix_HookMusicFinished*(music_finished: Pointer){.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-  # Get a pointer to the user data for the current music hook 
+  # Get a pointer to the user data for the current music hook
 proc Mix_GetMusicHookData*(): Pointer{.cdecl, importc, dynlib: SDL_MixerLibName.}
   #* Add your own callback when a channel has finished playing. NULL
   # * to disable callback.*
-type 
+type
   TChannel_finished* = proc (channel: int){.cdecl.}
 
-proc Mix_ChannelFinished*(channel_finished: TChannel_finished){.cdecl, 
+proc Mix_ChannelFinished*(channel_finished: TChannel_finished){.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-const 
+const
   MIX_CHANNEL_POST* = - 2
     # This is the format of a special effect callback:
     #      myeffect(int chan, void *stream, int len, void *udata);
-    #   
+    #
     #    (chan) is the channel number that your effect is affecting. (stream) is
     #     the buffer of data to work upon. (len) is the size of (stream), and
     #     (udata) is a user-defined bit of data, which you pass as the last arg of
@@ -372,10 +367,10 @@ const
     #     down the mixing pipeline, through any other effect functions, then finally
     #     to be mixed with the rest of the channels and music for the final output
     #     stream.
-    #   
+    #
 
-type 
-  TMix_EffectFunc* = proc (chan: int, stream: Pointer, length: int, 
+type
+  TMix_EffectFunc* = proc (chan: int, stream: Pointer, length: int,
                            udata: Pointer): Pointer{.cdecl.}
     #   * This is a callback that signifies that a channel has finished all its
     #   *  loops and has completed playback. This gets called if the buffer
@@ -428,7 +423,7 @@ type
     #  *  Error messages can be retrieved from Mix_GetError().
     #  *
 
-proc Mix_RegisterEffect*(chan: int, f: TMix_EffectFunc, d: TMix_EffectDone, 
+proc Mix_RegisterEffect*(chan: int, f: TMix_EffectFunc, d: TMix_EffectDone,
                          arg: Pointer): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
   #* You may not need to call this explicitly, unless you need to stop an
   # *  effect from processing in the middle of a chunk's playback.
@@ -438,7 +433,7 @@ proc Mix_RegisterEffect*(chan: int, f: TMix_EffectFunc, d: TMix_EffectDone,
   # * returns zero if error (no such channel or effect), nonzero if removed.
   # *  Error messages can be retrieved from Mix_GetError().
   # *
-proc Mix_UnregisterEffect*(channel: int, f: TMix_EffectFunc): int{.cdecl, 
+proc Mix_UnregisterEffect*(channel: int, f: TMix_EffectFunc): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   #* You may not need to call this explicitly, unless you need to stop all
   #  * effects from processing in the middle of a chunk's playback. Note that
@@ -451,17 +446,17 @@ proc Mix_UnregisterEffect*(channel: int, f: TMix_EffectFunc): int{.cdecl,
   #  * returns zero if error( no such channel ), nonzero if all effects removed.
   #  * Error messages can be retrieved from Mix_GetError( ).
   #  *
-proc Mix_UnregisterAllEffects*(channel: int): int{.cdecl, 
+proc Mix_UnregisterAllEffects*(channel: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-const 
-  MIX_EFFECTSMAXSPEED* = "MIX_EFFECTSMAXSPEED" 
+const
+  MIX_EFFECTSMAXSPEED* = "MIX_EFFECTSMAXSPEED"
     #  * These are the internally - defined mixing effects.They use the same API that
     #  * effects defined in the application use, but are provided here as a
     #  * convenience.Some effects can reduce their quality or use more memory in
     #  * the name of speed; to enable this, make sure the environment variable
     #  * MIX_EFFECTSMAXSPEED( see above ) is defined before you call
     #  * Mix_OpenAudio( ).
-    #  * 
+    #  *
     #* set the panning of a channel.The left and right channels are specified
     #  * as integers between 0 and 255, quietest to loudest, respectively.
     #  *
@@ -486,9 +481,9 @@ const
     #  * nonzero if panning effect enabled.Note that an audio device in mono
     #  * mode is a no - op, but this call will return successful in that case .
     #  * Error messages can be retrieved from Mix_GetError( ).
-    #  * 
+    #  *
 
-proc Mix_SetPanning*(channel: int, left: Uint8, right: Uint8): int{.cdecl, 
+proc Mix_SetPanning*(channel: int, left: Uint8, right: Uint8): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # * set the position ofa channel.( angle ) is an integer from 0 to 360, that
   #    * specifies the location of the sound in relation to the listener.( angle )
@@ -526,8 +521,8 @@ proc Mix_SetPanning*(channel: int, left: Uint8, right: Uint8): int{.cdecl,
   #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
   #  * nonzero if position effect is enabled.
   #  * Error messages can be retrieved from Mix_GetError( ).
-  #  * 
-proc Mix_SetPosition*(channel: int, angle: Sint16, distance: Uint8): int{.cdecl, 
+  #  *
+proc Mix_SetPosition*(channel: int, angle: Sint16, distance: Uint8): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   #* set the "distance" of a channel.( distance ) is an integer from 0 to 255
   #  * that specifies the location of the sound in relation to the listener.
@@ -555,8 +550,8 @@ proc Mix_SetPosition*(channel: int, angle: Sint16, distance: Uint8): int{.cdecl,
   #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
   #  * nonzero if position effect is enabled.
   #    * Error messages can be retrieved from Mix_GetError( ).
-  #    * 
-proc Mix_SetDistance*(channel: int, distance: Uint8): int{.cdecl, 
+  #    *
+proc Mix_SetDistance*(channel: int, distance: Uint8): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # *
   #    * !!! FIXME : Haven't implemented, since the effect goes past the
@@ -600,39 +595,39 @@ proc Mix_SetDistance*(channel: int, distance: Uint8): int{.cdecl,
   #  * nonzero if reversing effect is enabled.Note that an audio device in mono
   #  * mode is a no - op, but this call will return successful in that case .
   #  * Error messages can be retrieved from Mix_GetError( ).
-  #  * 
-proc Mix_SetReverseStereo*(channel: int, flip: int): int{.cdecl, 
+  #  *
+proc Mix_SetReverseStereo*(channel: int, flip: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # end of effects API. - -ryan. *
   # Reserve the first channels (0 -> n-1) for the application, i.e. don't allocate
   #   them dynamically to the next sample if requested with a -1 value below.
   #   Returns the number of reserved channels.
-  # 
+  #
 proc Mix_ReserveChannels*(num: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Channel grouping functions 
+  # Channel grouping functions
   # Attach a tag to a channel. A tag can be assigned to several mixer
   #   channels, to form groups of channels.
   #   If 'tag' is -1, the tag is removed (actually -1 is the tag used to
   #   represent the group of all the channels).
   #   Returns true if everything was OK.
-  # 
-proc Mix_GroupChannel*(which: int, tag: int): int{.cdecl, 
+  #
+proc Mix_GroupChannel*(which: int, tag: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-  # Assign several consecutive channels to a group 
-proc Mix_GroupChannels*(`from`: int, `to`: int, tag: int): int{.cdecl, 
+  # Assign several consecutive channels to a group
+proc Mix_GroupChannels*(`from`: int, `to`: int, tag: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-  # Finds the first available channel in a group of channels 
+  # Finds the first available channel in a group of channels
 proc Mix_GroupAvailable*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
   # Returns the number of channels in a group. This is also a subtle
   #   way to get the total number of channels when 'tag' is -1
-  # 
+  #
 proc Mix_GroupCount*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Finds the "oldest" sample playing in a group of channels 
+  # Finds the "oldest" sample playing in a group of channels
 proc Mix_GroupOldest*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Finds the "most recent" (i.e. last) sample playing in a group of channels 
+  # Finds the "most recent" (i.e. last) sample playing in a group of channels
 proc Mix_GroupNewer*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # The same as above, but the sound is played at most 'ticks' milliseconds 
-proc Mix_PlayChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int, 
+  # The same as above, but the sound is played at most 'ticks' milliseconds
+proc Mix_PlayChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int,
                            ticks: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
   # Play an audio chunk on a specific channel.
   #   If the specified channel is -1, play on the first free channel.
@@ -641,13 +636,13 @@ proc Mix_PlayChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int,
   #   Returns which channel was used to play the sound.
   #
 proc Mix_PlayChannel*(channel: int, chunk: PMix_Chunk, loops: int): int
-proc Mix_PlayMusic*(music: PMix_Music, loops: int): int{.cdecl, 
+proc Mix_PlayMusic*(music: PMix_Music, loops: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-  # Fade in music or a channel over "ms" milliseconds, same semantics as the "Play" functions 
-proc Mix_FadeInMusic*(music: PMix_Music, loops: int, ms: int): int{.cdecl, 
+  # Fade in music or a channel over "ms" milliseconds, same semantics as the "Play" functions
+proc Mix_FadeInMusic*(music: PMix_Music, loops: int, ms: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeInChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int, 
-                             ms: int, ticks: int): int{.cdecl, 
+proc Mix_FadeInChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int,
+                             ms: int, ticks: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
 proc Mix_FadeInChannel*(channel: int, chunk: PMix_Chunk, loops: int, ms: int): int
   # Set the volume in the range of 0-128 of a specific channel or chunk.
@@ -655,12 +650,12 @@ proc Mix_FadeInChannel*(channel: int, chunk: PMix_Chunk, loops: int, ms: int): i
   #   Returns the original volume.
   #   If the specified volume is -1, just return the current volume.
   #
-proc Mix_Volume*(channel: int, volume: int): int{.cdecl, 
+proc Mix_Volume*(channel: int, volume: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-proc Mix_VolumeChunk*(chunk: PMix_Chunk, volume: int): int{.cdecl, 
+proc Mix_VolumeChunk*(chunk: PMix_Chunk, volume: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
 proc Mix_VolumeMusic*(volume: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Halt playing of a particular channel 
+  # Halt playing of a particular channel
 proc Mix_HaltChannel*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_HaltGroup*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_HaltMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
@@ -668,25 +663,25 @@ proc Mix_HaltMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
   #   The sample will stop playing after the 'ticks' milliseconds have elapsed,
   #   or remove the expiration if 'ticks' is -1
   #
-proc Mix_ExpireChannel*(channel: int, ticks: int): int{.cdecl, 
+proc Mix_ExpireChannel*(channel: int, ticks: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # Halt a channel, fading it out progressively till it's silent
   #   The ms parameter indicates the number of milliseconds the fading
   #   will take.
-  # 
-proc Mix_FadeOutChannel*(which: int, ms: int): int{.cdecl, 
+  #
+proc Mix_FadeOutChannel*(which: int, ms: int): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
 proc Mix_FadeOutGroup*(tag: int, ms: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_FadeOutMusic*(ms: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Query the fading status of a channel 
+  # Query the fading status of a channel
 proc Mix_FadingMusic*(): TMix_Fading{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadingChannel*(which: int): TMix_Fading{.cdecl, 
+proc Mix_FadingChannel*(which: int): TMix_Fading{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
-  # Pause/Resume a particular channel 
+  # Pause/Resume a particular channel
 proc Mix_Pause*(channel: int){.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_Resume*(channel: int){.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_Paused*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Pause/Resume the music stream 
+  # Pause/Resume the music stream
 proc Mix_PauseMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_ResumeMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_RewindMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
@@ -697,16 +692,16 @@ proc Mix_PausedMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
   #  order number) and for OGG music (set position in seconds), at the
   #  moment.
   #
-proc Mix_SetMusicPosition*(position: float64): int{.cdecl, 
+proc Mix_SetMusicPosition*(position: float64): int{.cdecl,
     importc, dynlib: SDL_MixerLibName.}
   # Check the status of a specific channel.
   #   If the specified channel is -1, check all channels.
   #
 proc Mix_Playing*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_PlayingMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Stop music and set external music playback command 
+  # Stop music and set external music playback command
 proc Mix_SetMusicCMD*(command: cstring): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Synchro value is set by MikMod from modules while playing 
+  # Synchro value is set by MikMod from modules while playing
 proc Mix_SetSynchroValue*(value: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
 proc Mix_GetSynchroValue*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
   #
@@ -714,29 +709,29 @@ proc Mix_GetSynchroValue*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
   #    Returns nil if it's an invalid channel, or there's no chunk associated.
   #
 proc Mix_GetChunk*(channel: int): PMix_Chunk{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Close the mixer, halting all playing audio 
+  # Close the mixer, halting all playing audio
 proc Mix_CloseAudio*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # We'll use SDL for reporting errors 
+  # We'll use SDL for reporting errors
 proc Mix_SetError*(fmt: cstring)
 proc Mix_GetError*(): cstring
 # implementation
 
-proc SDL_MIXER_VERSION(X: var TSDL_version) = 
+proc SDL_MIXER_VERSION(X: var TSDL_version) =
   X.major = SDL_MIXER_MAJOR_VERSION
   X.minor = SDL_MIXER_MINOR_VERSION
   X.patch = SDL_MIXER_PATCHLEVEL
 
-proc Mix_LoadWAV(filename: cstring): PMix_Chunk = 
+proc Mix_LoadWAV(filename: cstring): PMix_Chunk =
   result = Mix_LoadWAV_RW(SDL_RWFromFile(filename, "rb"), 1)
 
-proc Mix_PlayChannel(channel: int, chunk: PMix_Chunk, loops: int): int = 
+proc Mix_PlayChannel(channel: int, chunk: PMix_Chunk, loops: int): int =
   result = Mix_PlayChannelTimed(channel, chunk, loops, - 1)
 
-proc Mix_FadeInChannel(channel: int, chunk: PMix_Chunk, loops: int, ms: int): int = 
+proc Mix_FadeInChannel(channel: int, chunk: PMix_Chunk, loops: int, ms: int): int =
   result = Mix_FadeInChannelTimed(channel, chunk, loops, ms, - 1)
 
-proc Mix_SetError(fmt: cstring) = 
+proc Mix_SetError(fmt: cstring) =
   SDL_SetError(fmt)
 
-proc Mix_GetError(): cstring = 
+proc Mix_GetError(): cstring =
   result = SDL_GetError()