1 /*
2  *  LAME MP3 encoder for DirectShow
3  *  Registry calls handling class
4  *
5  *  Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Library General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Library General Public License for more details.
16  *
17  * You should have received a copy of the GNU Library General Public
18  * License along with this library; if not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22 
23 #ifndef	__REG__
24 #define	__REG__
25 
26 namespace Lame
27 {
28 class	CRegKey
29 {
30 protected:
31 	TCHAR	m_name[MAX_PATH];
32 	HKEY	m_hKey;
33 	HKEY	m_hRootKey;
34 public:
35 	CRegKey(void);
36 	CRegKey(HKEY rootKey, PTSTR pName);
37 	~CRegKey(void);
38 
39 	BOOL	Open(HKEY rootKey, PTSTR pName);
40 	BOOL	Create(HKEY rootKey, PTSTR pName);
41 	BOOL	Open(PTSTR an = NULL);
42 	BOOL	Create(PTSTR an = NULL);
43 	BOOL	Close(void);
44 
operator HKEY() const45 	operator HKEY () const { return m_hKey; };
46 
47 	BOOL	getFlag(PTSTR valuename, BOOL bDefault);
48 	void	setFlag(PTSTR valuename, BOOL bValue, BOOL bDefault);
49 	void	setFlag(PTSTR valuename, BOOL bValue);
50 	DWORD	getDWORD(PTSTR valuename, DWORD bDefault);
51 	void	setDWORD(PTSTR valuename, DWORD dwValue);
52 	void	setDWORD(PTSTR valuename, DWORD dwValue, DWORD dwDefault);
53 	DWORD	getString(PTSTR valuename, PTSTR pDefault, PTSTR pResult, int cbSize);
54 	void	setString(PTSTR valuename, PTSTR pData);
55 	DWORD	getBinary(PTSTR valuename, PVOID pDefault, PVOID pResult, int cbSize);
56 	DWORD	setBinary(PTSTR valuename, PVOID pData, int cbSize);
57 };
58 
59 class CRegEnumKey
60 {
61 public:
CRegEnumKey(HKEY hKey)62 	CRegEnumKey(HKEY hKey)
63 	{
64 		m_hKey = hKey;
65 		m_dwIndex = 0;
66 	}
67 
~CRegEnumKey()68 	~CRegEnumKey()
69 	{
70 	}
71 
Next(LPTSTR pszStr, DWORD cbName)72 	LONG Next(LPTSTR pszStr, DWORD cbName)
73 	{
74 		FILETIME	ftLastWriteTime;
75 		LONG lRet =  RegEnumKeyEx(m_hKey, m_dwIndex, pszStr,
76 						&cbName, NULL, NULL, NULL, &ftLastWriteTime);
77 
78 		m_dwIndex++;
79 		return lRet;
80 	}
81 
82 
Reset(void)83 	void Reset(void)
84 	{
85 		m_dwIndex = 0;
86 	}
87 protected:
88 	HKEY	m_hKey;
89 	DWORD	m_dwIndex;
90 };
91 }
92 #endif // __REG__
93