Small code reduction in oc_vlc_mv_comp_unpack().
[xiph/unicode.git] / oggds / PersistPropertyBag.h
blobb9cf6c0bb66754b8443784f28cc5a7772ae4dc83
1 /*******************************************************************************
2 * *
3 * This file is part of the Ogg Vorbis DirectShow filter collection *
4 * *
5 * Copyright (c) 2001, Tobias Waldvogel *
6 * All rights reserved. *
7 * *
8 * Redistribution and use in source and binary forms, with or without *
9 * modification, are permitted provided that the following conditions are met: *
10 * *
11 * - Redistributions of source code must retain the above copyright notice, *
12 * this list of conditions and the following disclaimer. *
13 * *
14 * - Redistributions in binary form must reproduce the above copyright notice, *
15 * this list of conditions and the following disclaimer in the documentation *
16 * and/or other materials provided with the distribution. *
17 * *
18 * - The names of the contributors may not be used to endorse or promote *
19 * products derived from this software without specific prior written *
20 * permission. *
21 * *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" *
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE *
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF *
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN *
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) *
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE *
32 * POSSIBILITY OF SUCH DAMAGE. *
33 * *
34 *******************************************************************************/
36 #ifndef __CPERSIST_PROPERTY_BAG__
37 #define __CPERSIST_PROPERTY_BAG__
39 #include <streams.h>
40 #include <ogg/ogg.h>
42 class CRegistryStuff
44 private:
45 const GUID* m_pClsID;
46 public:
47 CRegistryStuff(const GUID* pClsID);
48 HKEY OpenRegistry();
49 HRESULT SaveToRegistry(const char* szName, bool bVal);
50 HRESULT SaveToRegistry(const char* szName, __int32 iVal);
51 HRESULT SaveToRegistry(const char* szName, unsigned __int32 iVal);
52 HRESULT SaveToRegistry(const char* szName, float fVal);
53 HRESULT SaveToRegistry(const char* szName, char* szVal);
54 HRESULT SaveToRegistry(const char* szName, wchar_t* wzVal);
55 HRESULT LoadFromRegistry(const char* szName, bool* pbVal, bool bDefault);
56 HRESULT LoadFromRegistry(const char* szName, __int32* piVal, __int32 iDefault);
57 HRESULT LoadFromRegistry(const char* szName, unsigned __int32* piVal, unsigned __int32 iDefault);
58 HRESULT LoadFromRegistry(const char* szName, float* pfVal, float fDefault);
62 class CPersistPropertyBag : public IPersistPropertyBag
64 private:
65 int m_iProps;
66 const char** m_arProps;
67 const GUID* m_pClsID;
68 public:
69 CPersistPropertyBag(const char** arProps, int iProps, const GUID* pClsID);
71 HRESULT STDMETHODCALLTYPE InitNew(void);
72 HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClsID);
73 HRESULT STDMETHODCALLTYPE Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog);
74 HRESULT STDMETHODCALLTYPE Save(IPropertyBag *pPropBag, BOOL fClearDirty,
75 BOOL fSaveAllProperties);
77 virtual HRESULT STDMETHODCALLTYPE Read(LPCOLESTR pszPropName, VARIANT *pVar, IErrorLog *pErrorLog) = 0;
78 virtual HRESULT STDMETHODCALLTYPE Write(LPCOLESTR pszPropName, VARIANT *pVar) = 0;
81 #endif