wined3d: Delete the static critical sections when unloading the dll.
[wine.git] / dlls / dmstyle / dmstyle_private.h
blobe1c8e9a766431452c667bbc7792fb1fb6b88bf1e
1 /* DirectMusicStyle Private Include
3 * Copyright (C) 2003-2004 Rok Mandeljc
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #ifndef __WINE_DMSTYLE_PRIVATE_H
21 #define __WINE_DMSTYLE_PRIVATE_H
23 #include <stdio.h>
24 #include <stdarg.h>
25 #include <string.h>
27 #define COBJMACROS
29 #include "windef.h"
30 #include "winbase.h"
31 #include "winnt.h"
32 #include "wingdi.h"
33 #include "winuser.h"
35 #include "wine/debug.h"
36 #include "wine/list.h"
37 #include "wine/unicode.h"
38 #include "winreg.h"
39 #include "objbase.h"
41 #include "dmusici.h"
42 #include "dmusicf.h"
43 #include "dmusics.h"
45 /*****************************************************************************
46 * Interfaces
48 typedef struct IDirectMusicStyle8Impl IDirectMusicStyle8Impl;
50 typedef struct IDirectMusicAuditionTrack IDirectMusicAuditionTrack;
51 typedef struct IDirectMusicChordTrack IDirectMusicChordTrack;
52 typedef struct IDirectMusicCommandTrack IDirectMusicCommandTrack;
53 typedef struct IDirectMusicMelodyFormulationTrack IDirectMusicMelodyFormulationTrack;
54 typedef struct IDirectMusicMotifTrack IDirectMusicMotifTrack;
55 typedef struct IDirectMusicMuteTrack IDirectMusicMuteTrack;
56 typedef struct IDirectMusicStyleTrack IDirectMusicStyleTrack;
58 /*****************************************************************************
59 * ClassFactory
61 extern HRESULT WINAPI DMUSIC_CreateDirectMusicStyleImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
63 /*****************************************************************************
64 * Auxiliary definitions
66 typedef struct _DMUS_PRIVATE_STYLE_BAND {
67 struct list entry; /* for listing elements */
68 IDirectMusicBand* pBand;
69 } DMUS_PRIVATE_STYLE_BAND, *LPDMUS_PRIVATE_STYLE_BAND;
71 typedef struct _DMUS_PRIVATE_STYLE_PARTREF_ITEM {
72 struct list entry; /* for listing elements */
73 DMUS_OBJECTDESC desc;
74 DMUS_IO_PARTREF part_ref;
75 } DMUS_PRIVATE_STYLE_PARTREF_ITEM, *LPDMUS_PRIVATE_STYLE_PARTREF_ITEM;
77 typedef struct _DMUS_PRIVATE_STYLE_MOTIF {
78 struct list entry; /* for listing elements */
79 DWORD dwRhythm;
80 DMUS_IO_PATTERN pattern;
81 DMUS_OBJECTDESC desc;
82 /** optional for motifs */
83 DMUS_IO_MOTIFSETTINGS settings;
84 IDirectMusicBand* pBand;
86 struct list Items;
87 } DMUS_PRIVATE_STYLE_MOTIF, *LPDMUS_PRIVATE_STYLE_MOTIF;
89 typedef struct _DMUS_PRIVATE_STYLE_ITEM {
90 struct list entry; /* for listing elements */
91 DWORD dwTimeStamp;
92 IDirectMusicStyle8* pObject;
93 } DMUS_PRIVATE_STYLE_ITEM, *LPDMUS_PRIVATE_STYLE_ITEM;
95 extern HRESULT WINAPI DMUSIC_CreateDirectMusicAuditionTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
96 extern HRESULT WINAPI DMUSIC_CreateDirectMusicChordTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
97 extern HRESULT WINAPI DMUSIC_CreateDirectMusicCommandTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
98 extern HRESULT WINAPI DMUSIC_CreateDirectMusicMotifTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
99 extern HRESULT WINAPI DMUSIC_CreateDirectMusicMuteTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
100 extern HRESULT WINAPI DMUSIC_CreateDirectMusicStyleTrack (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) DECLSPEC_HIDDEN;
102 /*****************************************************************************
103 * IDirectMusicStyle8Impl implementation structure
105 struct IDirectMusicStyle8Impl {
106 /* IUnknown fields */
107 const IUnknownVtbl *UnknownVtbl;
108 const IDirectMusicStyle8Vtbl *StyleVtbl;
109 const IDirectMusicObjectVtbl *ObjectVtbl;
110 const IPersistStreamVtbl *PersistStreamVtbl;
111 LONG ref;
113 /* IDirectMusicStyle8Impl fields */
114 LPDMUS_OBJECTDESC pDesc;
115 DMUS_IO_STYLE style;
117 /* data */
118 struct list Motifs;
119 struct list Bands;
122 /*****************************************************************************
123 * IDirectMusicAuditionTrack implementation structure
125 struct IDirectMusicAuditionTrack {
126 /* IUnknown fields */
127 const IUnknownVtbl *UnknownVtbl;
128 const IDirectMusicTrack8Vtbl *TrackVtbl;
129 const IPersistStreamVtbl *PersistStreamVtbl;
130 LONG ref;
132 /* IDirectMusicAuditionTrack fields */
133 LPDMUS_OBJECTDESC pDesc;
136 /*****************************************************************************
137 * IDirectMusicChordTrack implementation structure
139 struct IDirectMusicChordTrack {
140 /* IUnknown fields */
141 const IUnknownVtbl *UnknownVtbl;
142 const IDirectMusicTrack8Vtbl *TrackVtbl;
143 const IPersistStreamVtbl *PersistStreamVtbl;
144 LONG ref;
146 /* IDirectMusicChordTrack fields */
147 LPDMUS_OBJECTDESC pDesc;
148 DWORD dwScale;
151 typedef struct _DMUS_PRIVATE_COMMAND {
152 struct list entry; /* for listing elements */
153 DMUS_IO_COMMAND pCommand;
154 IDirectMusicCollection* ppReferenceCollection;
155 } DMUS_PRIVATE_COMMAND, *LPDMUS_PRIVATE_COMMAND;
157 /*****************************************************************************
158 * IDirectMusicCommandTrack implementation structure
160 struct IDirectMusicCommandTrack {
161 /* IUnknown fields */
162 const IUnknownVtbl *UnknownVtbl;
163 const IDirectMusicTrack8Vtbl *TrackVtbl;
164 const IPersistStreamVtbl *PersistStreamVtbl;
165 LONG ref;
167 /* IDirectMusicCommandTrack fields */
168 LPDMUS_OBJECTDESC pDesc;
169 /* track data */
170 struct list Commands;
173 /*****************************************************************************
174 * IDirectMusicMelodyFormulationTrack implementation structure
176 struct IDirectMusicMelodyFormulationTrack {
177 /* IUnknown fields */
178 const IUnknownVtbl *UnknownVtbl;
179 const IDirectMusicTrack8Vtbl *TrackVtbl;
180 const IPersistStreamVtbl *PersistStreamVtbl;
181 LONG ref;
183 /* IDirectMusicMelodyFormulationTrack fields */
184 LPDMUS_OBJECTDESC pDesc;
187 /* IUnknown: */
188 extern HRESULT WINAPI IDirectMusicMelodyFormulationTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj) DECLSPEC_HIDDEN;
189 extern ULONG WINAPI IDirectMusicMelodyFormulationTrack_IUnknown_AddRef (LPUNKNOWN iface) DECLSPEC_HIDDEN;
190 /* IDirectMusicTrack(8): */
191 extern ULONG WINAPI IDirectMusicMelodyFormulationTrack_IDirectMusicTrack_AddRef (LPDIRECTMUSICTRACK8 iface) DECLSPEC_HIDDEN;
192 /* IPersistStream: */
193 extern ULONG WINAPI IDirectMusicMelodyFormulationTrack_IPersistStream_AddRef (LPPERSISTSTREAM iface) DECLSPEC_HIDDEN;
195 /*****************************************************************************
196 * IDirectMusicMotifTrack implementation structure
198 struct IDirectMusicMotifTrack {
199 /* IUnknown fields */
200 const IUnknownVtbl *UnknownVtbl;
201 const IDirectMusicTrack8Vtbl *TrackVtbl;
202 const IPersistStreamVtbl *PersistStreamVtbl;
203 LONG ref;
205 /* IDirectMusicMotifTrack fields */
206 LPDMUS_OBJECTDESC pDesc;
209 /*****************************************************************************
210 * IDirectMusicMuteTrack implementation structure
212 struct IDirectMusicMuteTrack {
213 /* IUnknown fields */
214 const IUnknownVtbl *UnknownVtbl;
215 const IDirectMusicTrack8Vtbl *TrackVtbl;
216 const IPersistStreamVtbl *PersistStreamVtbl;
217 LONG ref;
219 /* IDirectMusicMuteTrack fields */
220 LPDMUS_OBJECTDESC pDesc;
223 /*****************************************************************************
224 * IDirectMusicStyleTrack implementation structure
226 struct IDirectMusicStyleTrack {
227 /* IUnknown fields */
228 const IUnknownVtbl *UnknownVtbl;
229 const IDirectMusicTrack8Vtbl *TrackVtbl;
230 const IPersistStreamVtbl *PersistStreamVtbl;
231 LONG ref;
233 /* IDirectMusicStyleTrack fields */
234 LPDMUS_OBJECTDESC pDesc;
236 struct list Items;
239 /**********************************************************************
240 * Dll lifetime tracking declaration for dmstyle.dll
242 extern LONG DMSTYLE_refCount DECLSPEC_HIDDEN;
243 static inline void DMSTYLE_LockModule(void) { InterlockedIncrement( &DMSTYLE_refCount ); }
244 static inline void DMSTYLE_UnlockModule(void) { InterlockedDecrement( &DMSTYLE_refCount ); }
246 /*****************************************************************************
247 * Misc.
249 #include "dmutils.h"
251 #endif /* __WINE_DMSTYLE_PRIVATE_H */