1 // RegistryValueImpl.h: Schnittstelle f�r die Klasse RegistryValueImpl.
2 //
3 //////////////////////////////////////////////////////////////////////
4 
5 #ifndef _REGISTRYVALUEIMPL_HXX_
6 #define _REGISTRYVALUEIMPL_HXX_
7 
8 #include <memory>
9 #include <string>
10 
11 class RegistryValueImpl
12 {
13 public:
14 
15 	//#################################
16 	// Creation/Destruction
17 	//#################################
18 
19 	RegistryValueImpl(const std::wstring& Name, int Value);
20 
21 	RegistryValueImpl(const std::wstring& Name, const std::wstring& Value);
22 
23 	RegistryValueImpl(const std::wstring& Name, const std::string& Value);
24 
25 	#if (_MSC_VER >= 1300)
26 	RegistryValueImpl::RegistryValueImpl(const RegistryValueImpl& s);
27 	#endif
28 
29 	virtual ~RegistryValueImpl();
30 
31 
32 	//#################################
33 	// Query
34 	//#################################
35 
36 
37 	/** Returns the name of the value
38 	*/
39 	std::wstring GetName() const;
40 
41 	/** Return the size of data held
42 	*/
43 	size_t GetDataSize() const;
44 
45 	/** Get a pointer to the data buffer
46 		in order to copy the data
47 	*/
48 	const void* GetDataBuffer() const;
49 
50 	/** Returns the data as unicode string
51 
52 		@precond GetType = STRING
53 	*/
54 	std::wstring GetDataAsUniString() const;
55 
56 	/** Returns the data as ansi string
57 
58 		@precond GetType = STRING
59 	*/
60 	std::string GetDataAsAnsiString() const;
61 
62 	/** Returns the data as number
63 
64 		@precond GetType = NUMBER
65 	*/
66 	int GetDataAsInt() const;
67 
68 	/** Returns the type of the data
69 	*/
70 	int GetType() const;
71 
72 	//#################################
73 	// Command
74 	//#################################
75 
76 
77 	/** Set a new name
78 	*/
79 	void SetName(const std::wstring& NewName);
80 
81 	/**
82 	*/
83 	void SetValue(const std::wstring& NewValue);
84 
85 	/**
86 	*/
87 	void SetValue(const std::string& NewValue);
88 
89 	/**
90 	*/
91 	void SetValue(int NewValue);
92 
93 	//#################################
94 	// Private data
95 	//#################################
96 
97 private:
98 	std::wstring	m_Name;
99 	int				m_Type;
100 	std::wstring	m_StringData;
101 	int				m_IntData;
102 };
103 
104 
105 typedef std::auto_ptr<RegistryValueImpl> RegistryValue;
106 
107 
108 #endif
109