1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef __com_sun_star_registry_NestedRegistry_idl__
#define __com_sun_star_registry_NestedRegistry_idl__
#include <com/sun/star/registry/XSimpleRegistry.idl>
#include <com/sun/star/lang/XInitialization.idl>
module com { module sun { module star { module registry {
/** supports a shared view on two different registries. The registry
files will be opened in two different modes, registry1 will be opened with read/write
rights and registry2 will be opened read-only.
In the context of this service, the functions <code>open</code>, <code>close</code>,
and <code>destroy</code> from XSimpleRegistry are not supported and
throw an exception if they are used.
Functions of XSimpleRegistry:
<dl>
<dt> <b>getURL</b>
</dt>
<dd> returns the name of registry1.
</dd>
<dt> <b>isValid</b>
</dt>
<dd> checks if registry1 is valid. If the interface is not `NULL`
then registry1 should always be valid.
</dd>
<dt> <b>isReadOnly</b>
</dt>
<dd> checks if registry1 has write protection.
</dd>
<dt> <b>mergeKey</b>
</dt>
<dd> merges all information from the specified registry in registry1.
</dd>
<dt> <b>getRootKey</b>
</dt>
<dd> returns a virtual rootkey of both registries.
</dd>
</dl>
Functions of XRegistryKey:
<dl>
<dt> <b>openKey</b>
</dt>
<dd> returns a virtual key which is specified in registry1 or registry2.
</dd>
<dt> <b>deleteKey</b>
</dt>
<dd> deletes the key only if it is present in registry1.
</dd>
<dt> <b>setLongValue, setAsciiValue, setStringValue, setBinaryValue</b>
</dt>
<dd> sets the value at the specified key in registry1.
</dd>
<dt> <b>getLongValue, getAsciiValue, getStringValue, getBinaryValue</b>
</dt>
<dd> returns the value at the specified key in registry1, or if
the value is not present in registry1, it will return the value of registry2.
</dd>
<dt> <b>openKeys</b>
</dt>
<dd> returns a sequence of all subkeys in both registries.
</dd>
<dt> <b>getKeyNames</b>
</dt>
<dd> returns a sequence with the names of all subkeys in both
registries.
</dd>
<dt>
<b>Note: all write functions only work on registry1.</b>
</dt>
</dl>
How to initialize the registries:<br>
Use a sequence of XSimpleRegistry with two elements. The first element must be
the registry which is opened with read/write rights and the second element must be
the read-only one.<br>
Two different ways are possible:<br>
<ul>
<li> use com::sun::star::lang::XMultiServiceFactory::createInstanceWithArguments() to
create an instance of this service where the value of the any parameter must be the sequence with
the two open registries.
<li> use the initialize function of the com::sun::star::lang::XInitialization interface where the value of the
any parameter must be the sequence with the two open registries.
</ul>
<br>
Guarantees:
<ul>
<li>-thread safe</li>
</ul>
*/
published service NestedRegistry
{
interface com::sun::star::registry::XSimpleRegistry;
interface com::sun::star::lang::XInitialization;
};
}; }; }; };
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|