xref: /aoo4110/main/registry/inc/registry/regtype.h (revision b1cdbd2c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _REGISTRY_REGTYPE_H_
25 #define _REGISTRY_REGTYPE_H_
26 
27 #include <sal/types.h>
28 #include <sal/udkversion.h>
29 
30 // version number of the library. This number is used for the load on call
31 // mechanism and must be modifed when the library will be upgraded to a new version.
32 #define LIBRARY_VERSION SAL_UDK_MAJOR
33 
34 /// defines the type of a registry handle used in the C API.
35 typedef void* 		RegHandle;
36 
37 /// defines the type of a registry key handle used in the C API.
38 typedef void* 		RegKeyHandle;
39 
40 /// defines the type of a registry key value handle used in the C API.
41 typedef void*		RegValue;
42 
43 /** defines the open/access mode of the registry.
44 
45     Two modes are valid:
46     -REG_READONLY    allows readonly access
47     -REG_READWRITE   allows read and write access
48  */
49 typedef sal_uInt16	RegAccessMode;
50 
51 /// Flag to specify the open mode of a registry. This mode allows readonly access.
52 #define REG_READONLY		0x0001
53 /// Flag to specify the open mode of a registry. This mode allows read and write access.
54 #define REG_READWRITE      	0x0002
55 
56 /** defines the type of a registry key.
57 
58     The registry differs between normal keys which can contain subkeys or
59     a value and link keys which navigate over the linktarget to an existing
60     other key (which are no longer supported).
61 */
62 enum RegKeyType
63 {
64 	/// represents a real key
65 	RG_KEYTYPE,
66 	/// represents a link (which is no longer supported)
67 	RG_LINKTYPE
68 };
69 
70 /** defines the type of a key value.
71 
72     A registry key can contain a value which has one of seven different types.
73     Three simple types (long, ascii and unicode string) and a list type of
74     these simple types. Furthermore a binary type which provides the possibilty
75     to define own data structures and store these types in the registry. The UNO
76     core reflection data is stored as a binary blob in the type registry.
77  */
78 enum RegValueType
79 {
80 	/// The key has no value or the value type is unknown.
81 	RG_VALUETYPE_NOT_DEFINED,
82 	/// The key has a value of type long
83 	RG_VALUETYPE_LONG,
84 	/// The key has a value of type ascii string
85 	RG_VALUETYPE_STRING,
86 	/// The key has a value of type unicode string
87 	RG_VALUETYPE_UNICODE,
88 	/// The key has a value of type binary
89 	RG_VALUETYPE_BINARY,
90 	/// The key has a value of type long list
91 	RG_VALUETYPE_LONGLIST,
92 	/// The key has a value of type ascii string list
93 	RG_VALUETYPE_STRINGLIST,
94 	/// The key has a value of type unicode string list
95 	RG_VALUETYPE_UNICODELIST
96 };
97 
98 /// specifies the possible error codes which can occur using the registry API.
99 enum RegError
100 {
101 	/// no error.
102 	REG_NO_ERROR,
103 	/// internal registry error.
104 	REG_INTERNAL_ERROR,
105 
106 	/// registry is not open.
107 	REG_REGISTRY_NOT_OPEN,
108 	/// registry does not exists.
109 	REG_REGISTRY_NOT_EXISTS,
110 	/// registry is open with readonly access rights.
111 	REG_REGISTRY_READONLY,
112 	/// destroy a registry failed. There are may be any open keys.
113 	REG_DESTROY_REGISTRY_FAILED,
114 	/** registry cannot be opened with readwrite access because the registry is already
115 		open with readwrite access anywhere.
116 	*/
117 	REG_CANNOT_OPEN_FOR_READWRITE,
118 	/** registry is in an invalid state or the registry does not point to
119 		a valid registry data file.
120 	*/
121 	REG_INVALID_REGISTRY,
122 
123 	///	the key or key handle points to an invalid key or closed key.
124 	REG_KEY_NOT_OPEN,
125 	///	the specified keyname points to a nonexisting key.
126 	REG_KEY_NOT_EXISTS,
127 	///	the key with the specified keyname cannot be created.
128 	REG_CREATE_KEY_FAILED,
129 	/// the specified key cannot be deleted. Maybe an open key handle exists to this key.
130 	REG_DELETE_KEY_FAILED,
131 	/** the keyname is invalid. This error will return if the keyname
132 		is NULL but should not be NULL in the context of a called function.
133 	*/
134 	REG_INVALID_KEYNAME,
135 	/// the key is not in a valid state.
136 	REG_INVALID_KEY,
137 
138 	///	the key has no value
139 	REG_VALUE_NOT_EXISTS,
140 	/// setting the specified value of a key failed.
141 	REG_SET_VALUE_FAILED,
142 	/// deleting of the key value failed.
143 	REG_DELETE_VALUE_FAILED,
144 	/// the key has a invalid value or the value type is unknown.
145 	REG_INVALID_VALUE,
146 
147 	/// merging a key, the value and all subkeys failed.
148 	REG_MERGE_ERROR,
149 	/**	conflicts exists during the merge process of a key. This could happen if
150         the value of a key already exists and the merge process will replace it.
151     */
152 	REG_MERGE_CONFLICT,
153 
154 	/** a recursion was detected resolving different link targets (no longer
155         used).
156     */
157 	REG_DETECT_RECURSION,
158 	/** the link is invalid and can not be resolved (now used by all
159         link-related operations, as links are no longer supported).
160     */
161 	REG_INVALID_LINK,
162 	/// the specified linkname is not valid (no longer used).
163 	REG_INVALID_LINKNAME,
164 	/// the linknane is not valid (no longer used).
165 	REG_INVALID_LINKTARGET,
166 	/// the link target points to a nonexisting key (no longer used).
167 	REG_LINKTARGET_NOT_EXIST,
168 	/// the reserved buffer for the resolved keyname is to small.
169 	REG_BUFFERSIZE_TOSMALL
170 };
171 
172 /// specify the calling convention for the registry API
173 #define REGISTRY_CALLTYPE	SAL_CALL
174 
175 #endif
176