Merge pull request #4324 from FernetMenta/wasapi
[vuplus_xbmc] / lib / DllModplug.h
1 #pragma once
2 /*
3  *      Copyright (C) 2009-2013 Team XBMC
4  *      http://xbmc.org
5  *
6  *  This Program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation; either version 2, or (at your option)
9  *  any later version.
10  *
11  *  This Program is distributed in the hope that it will be useful,
12  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  *  GNU General Public License for more details.
15  *
16  *  You should have received a copy of the GNU General Public License
17  *  along with XBMC; see the file COPYING.  If not, see
18  *  <http://www.gnu.org/licenses/>.
19  *
20  */
21
22 #if (defined HAVE_CONFIG_H) && (!defined WIN32)
23   #include "config.h"
24 #endif
25 #include "DynamicDll.h"
26 #include "utils/log.h"
27
28 #ifdef __linux__
29 #include <libmodplug/modplug.h>
30 #else
31 #include "lib/libmodplug/src/modplug.h"
32 #endif
33
34 class DllModplugInterface
35 {
36 public:
37   virtual ~DllModplugInterface() {}
38   virtual ModPlugFile* ModPlug_Load(const void* data, int size)=0;
39   virtual void ModPlug_Unload(ModPlugFile* file)=0;
40   virtual int  ModPlug_Read(ModPlugFile* file, void* buffer, int size)=0;
41   virtual const char* ModPlug_GetName(ModPlugFile* file)=0;
42   virtual int ModPlug_GetLength(ModPlugFile* file)=0;
43   virtual void ModPlug_Seek(ModPlugFile* file, int millisecond)=0;
44   virtual void ModPlug_GetSettings(ModPlug_Settings* settings)=0;
45   virtual void ModPlug_SetSettings(const ModPlug_Settings* settings)=0;
46 /*  These don't exist in libmodplug under Ubuntu 8.04 (Hardy), libmodplug does not have versioning but we don't use them anyway
47   virtual unsigned int ModPlug_GetMasterVolume(ModPlugFile* file)=0;
48   virtual void ModPlug_SetMasterVolume(ModPlugFile* file,unsigned int cvol)=0;
49   virtual int ModPlug_GetCurrentSpeed(ModPlugFile* file)=0;
50   virtual int ModPlug_GetCurrentTempo(ModPlugFile* file)=0;
51   virtual int ModPlug_GetCurrentOrder(ModPlugFile* file)=0;
52   virtual int ModPlug_GetCurrentPattern(ModPlugFile* file)=0;
53   virtual int ModPlug_GetCurrentRow(ModPlugFile* file)=0;
54   virtual int ModPlug_GetPlayingChannels(ModPlugFile* file)=0;
55   virtual void ModPlug_SeekOrder(ModPlugFile* file,int order)=0;
56   virtual int ModPlug_GetModuleType(ModPlugFile* file)=0;
57   virtual char* ModPlug_GetMessage(ModPlugFile* file)=0;
58   virtual unsigned int ModPlug_NumInstruments(ModPlugFile* file)=0;
59   virtual unsigned int ModPlug_NumSamples(ModPlugFile* file)=0;
60   virtual unsigned int ModPlug_NumPatterns(ModPlugFile* file)=0;
61   virtual unsigned int ModPlug_NumChannels(ModPlugFile* file)=0;
62   virtual unsigned int ModPlug_SampleName(ModPlugFile* file, unsigned int qual, char* buff)=0;
63   virtual unsigned int ModPlug_InstrumentName(ModPlugFile* file, unsigned int qual, char* buff)=0;
64 */
65 };
66
67 class DllModplug : public DllDynamic, DllModplugInterface
68 {
69   DECLARE_DLL_WRAPPER(DllModplug, DLL_PATH_MODPLUG_CODEC)
70   DEFINE_METHOD2(ModPlugFile*,  ModPlug_Load,                 (const void* p1, int p2))
71   DEFINE_METHOD1(void,          ModPlug_Unload,               (ModPlugFile* p1))
72   DEFINE_METHOD3(int,           ModPlug_Read,                 (ModPlugFile* p1, void* p2, int p3))
73   DEFINE_METHOD1(const char*,   ModPlug_GetName,              (ModPlugFile* p1))
74   DEFINE_METHOD1(int,           ModPlug_GetLength,            (ModPlugFile* p1))
75   DEFINE_METHOD2(void,          ModPlug_Seek,                 (ModPlugFile* p1, int p2))
76   DEFINE_METHOD1(void,          ModPlug_GetSettings,          (ModPlug_Settings* p1))
77   DEFINE_METHOD1(void,          ModPlug_SetSettings,          (const ModPlug_Settings* p1))
78 /*
79   DEFINE_METHOD1(unsigned int,  ModPlug_GetMasterVolume,      (ModPlugFile* p1))
80   DEFINE_METHOD2(void,          ModPlug_SetMasterVolume,      (ModPlugFile* p1, unsigned int p2))
81   DEFINE_METHOD1(int,           ModPlug_GetCurrentSpeed,      (ModPlugFile* p1))
82   DEFINE_METHOD1(int,           ModPlug_GetCurrentTempo,      (ModPlugFile* p1))
83   DEFINE_METHOD1(int,           ModPlug_GetCurrentOrder,      (ModPlugFile* p1))
84   DEFINE_METHOD1(int,           ModPlug_GetCurrentPattern,    (ModPlugFile* p1))
85   DEFINE_METHOD1(int,           ModPlug_GetCurrentRow,        (ModPlugFile* p1))
86   DEFINE_METHOD1(int,           ModPlug_GetPlayingChannels,   (ModPlugFile* p1))
87   DEFINE_METHOD2(void,          ModPlug_SeekOrder,            (ModPlugFile* p1, int p2))
88   DEFINE_METHOD1(int,           ModPlug_GetModuleType,        (ModPlugFile* p1))
89   DEFINE_METHOD1(char*,         ModPlug_GetMessage,           (ModPlugFile* p1))
90   DEFINE_METHOD1(unsigned int,  ModPlug_NumInstruments,       (ModPlugFile* p1))
91   DEFINE_METHOD1(unsigned int,  ModPlug_NumSamples,           (ModPlugFile* p1))
92   DEFINE_METHOD1(unsigned int,  ModPlug_NumPatterns,          (ModPlugFile* p1))
93   DEFINE_METHOD1(unsigned int,  ModPlug_NumChannels,          (ModPlugFile* p1))
94   DEFINE_METHOD3(unsigned int,  ModPlug_SampleName,           (ModPlugFile* p1, unsigned int p2, char* p3))
95   DEFINE_METHOD3(unsigned int,  ModPlug_InstrumentName,       (ModPlugFile* p1, unsigned int p2, char* p3))
96 */
97   BEGIN_METHOD_RESOLVE()
98     RESOLVE_METHOD(ModPlug_Load)
99     RESOLVE_METHOD(ModPlug_Unload)
100     RESOLVE_METHOD(ModPlug_Read)
101     RESOLVE_METHOD(ModPlug_GetName)
102     RESOLVE_METHOD(ModPlug_GetLength)
103     RESOLVE_METHOD(ModPlug_Seek)
104     RESOLVE_METHOD(ModPlug_GetSettings)
105     RESOLVE_METHOD(ModPlug_SetSettings)
106 /*
107     RESOLVE_METHOD(ModPlug_GetMasterVolume)
108     RESOLVE_METHOD(ModPlug_SetMasterVolume)
109     RESOLVE_METHOD(ModPlug_GetCurrentSpeed)
110     RESOLVE_METHOD(ModPlug_GetCurrentTempo)
111     RESOLVE_METHOD(ModPlug_GetCurrentOrder)
112     RESOLVE_METHOD(ModPlug_GetCurrentPattern)
113     RESOLVE_METHOD(ModPlug_GetCurrentRow)
114     RESOLVE_METHOD(ModPlug_GetPlayingChannels)
115     RESOLVE_METHOD(ModPlug_SeekOrder)
116     RESOLVE_METHOD(ModPlug_GetModuleType)
117     RESOLVE_METHOD(ModPlug_GetMessage)
118     RESOLVE_METHOD(ModPlug_NumInstruments)
119     RESOLVE_METHOD(ModPlug_NumSamples)
120     RESOLVE_METHOD(ModPlug_NumPatterns)
121     RESOLVE_METHOD(ModPlug_NumChannels)
122     RESOLVE_METHOD(ModPlug_SampleName)
123     RESOLVE_METHOD(ModPlug_InstrumentName)
124 */
125   END_METHOD_RESOLVE()
126 };
127