1 martin 1.81 //%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.82 //
|
3 martin 1.81 // Licensed to The Open Group (TOG) under one or more contributor license
4 // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 // this work for additional information regarding copyright ownership.
6 // Each contributor licenses this file to you under the OpenPegasus Open
7 // Source License; you may not use this file except in compliance with the
8 // License.
|
9 martin 1.82 //
|
10 martin 1.81 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
|
16 martin 1.82 //
|
17 martin 1.81 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
|
19 martin 1.82 //
|
20 martin 1.81 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.82 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.81 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
27 martin 1.82 //
|
28 martin 1.81 //////////////////////////////////////////////////////////////////////////
|
29 mike 1.25 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
|
32 kumpf 1.72 #ifndef Pegasus_Repository_h
33 #define Pegasus_Repository_h
|
34 mike 1.25
35 #include <Pegasus/Common/Config.h>
36 #include <Pegasus/Common/CIMClass.h>
|
37 mike 1.27 #include <Pegasus/Common/CIMObject.h>
|
38 mike 1.25 #include <Pegasus/Common/CIMInstance.h>
|
39 mike 1.27 #include <Pegasus/Common/CIMPropertyList.h>
|
40 mike 1.25 #include <Pegasus/Common/CIMQualifierDecl.h>
|
41 thilo.boehm 1.84 #include <Pegasus/Common/ReadWriteSem.h>
42
|
43 mike 1.27 #include <Pegasus/Config/ConfigManager.h>
|
44 thilo.boehm 1.84
45 #include <Pegasus/Repository/Linkage.h>
|
46 mike 1.25 #include <Pegasus/Repository/NameSpaceManager.h>
|
47 thilo.boehm 1.84 #include <Pegasus/Repository/ObjectStreamer.h>
|
48 schuur 1.54
|
49 mike 1.25 PEGASUS_NAMESPACE_BEGIN
50
51 class RepositoryDeclContext;
|
52 kumpf 1.51 class compilerDeclContext;
|
53 mike 1.25
|
54 mike 1.27 /** This class provides a simple implementation of a CIM repository.
|
55 kumpf 1.50 Concurrent access is controlled by an internal lock.
|
56 mike 1.25 */
|
57 kumpf 1.72 class PEGASUS_REPOSITORY_LINKAGE CIMRepository
|
58 mike 1.25 {
59 public:
60
|
61 kumpf 1.69 enum CIMRepositoryMode
62 {
63 MODE_DEFAULT = 0,
64 MODE_XML = 1,
65 MODE_BIN = 2,
66 MODE_COMPRESSED = 4
67 };
68
|
69 mike 1.25 /// Constructor
|
70 kumpf 1.69 CIMRepository(
71 const String& repositoryRoot,
|
72 dmitry.mikulin 1.75 Uint32 mode = CIMRepository::MODE_DEFAULT,
73 RepositoryDeclContext* declContext = 0);
|
74 mike 1.25
75 /// Descructor
|
76 mike 1.76 ~CIMRepository();
|
77 mike 1.25
|
78 kumpf 1.50 /// getClass
|
79 mike 1.76 CIMClass getClass(
|
80 kumpf 1.41 const CIMNamespaceName& nameSpace,
81 const CIMName& className,
|
82 mike 1.27 Boolean localOnly = true,
83 Boolean includeQualifiers = true,
84 Boolean includeClassOrigin = false,
85 const CIMPropertyList& propertyList = CIMPropertyList());
|
86 mike 1.25
|
87 mike 1.80 // getFullConstClass
88 CIMConstClass getFullConstClass(
89 const CIMNamespaceName& nameSpace,
90 const CIMName& className);
91
|
92 mike 1.25 /// getInstance
|
93 mike 1.76 CIMInstance getInstance(
|
94 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
95 kumpf 1.34 const CIMObjectPath& instanceName,
|
96 mike 1.27 Boolean includeQualifiers = false,
97 Boolean includeClassOrigin = false,
|
98 mike 1.31 const CIMPropertyList& propertyList = CIMPropertyList());
|
99 mike 1.25
100 /// deleteClass
|
101 mike 1.76 void deleteClass(
|
102 kumpf 1.41 const CIMNamespaceName& nameSpace,
103 const CIMName& className);
|
104 mike 1.25
105 /// deleteInstance
|
106 mike 1.76 void deleteInstance(
|
107 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
108 kumpf 1.34 const CIMObjectPath& instanceName);
|
109 mike 1.25
110 /// createClass
|
111 mike 1.76 void createClass(
|
112 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
113 kumpf 1.79 const CIMClass& newClass);
|
114 mike 1.25
115 /// createInstance
|
116 mike 1.76 CIMObjectPath createInstance(
|
117 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
118 kumpf 1.79 const CIMInstance& newInstance);
|
119 mike 1.25
120 /// modifyClass
|
121 mike 1.76 void modifyClass(
|
122 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
123 kumpf 1.79 const CIMClass& modifiedClass);
|
124 mike 1.25
125 /// modifyInstance
|
126 mike 1.76 void modifyInstance(
|
127 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
128 kumpf 1.36 const CIMInstance& modifiedInstance,
|
129 mike 1.27 Boolean includeQualifiers = true,
|
130 kumpf 1.79 const CIMPropertyList& propertyList = CIMPropertyList());
|
131 mike 1.25
132 /// enumerateClasses
|
133 mike 1.76 Array<CIMClass> enumerateClasses(
|
134 kumpf 1.41 const CIMNamespaceName& nameSpace,
135 const CIMName& className = CIMName(),
|
136 mike 1.27 Boolean deepInheritance = false,
137 Boolean localOnly = true,
138 Boolean includeQualifiers = true,
139 Boolean includeClassOrigin = false);
|
140 mike 1.25
141 /// enumerateClassNames
|
142 mike 1.76 Array<CIMName> enumerateClassNames(
|
143 kumpf 1.41 const CIMNamespaceName& nameSpace,
144 const CIMName& className = CIMName(),
|
145 mike 1.27 Boolean deepInheritance = false);
|
146 mike 1.25
|
147 kumpf 1.68 /**
148 Enumerates the instances of the specified class and its subclasses.
149 This method mimics the client behavior for the EnumerateInstances
150 operation, but of course it can only return the instances that reside
151 in the repository. This method does not perform deepInheritance
|
152 karl 1.86 filtering.
|
153 kumpf 1.68
154 This method is useful mainly for testing purposes, and should not be
155 relied upon for complete results in a CIM Server environment.
156 */
|
157 mike 1.76 Array<CIMInstance> enumerateInstancesForSubtree(
|
158 kumpf 1.41 const CIMNamespaceName& nameSpace,
159 const CIMName& className,
|
160 mike 1.27 Boolean includeQualifiers = false,
161 Boolean includeClassOrigin = false,
|
162 kumpf 1.71 const CIMPropertyList& propertyList = CIMPropertyList());
|
163 mike 1.25
|
164 kumpf 1.68 /**
165 Enumerates the instances of just the specified class.
166 This method mimics the provider behavior for the EnumerateInstances
167 operation.
|
168 karl 1.35 */
|
169 mike 1.76 Array<CIMInstance> enumerateInstancesForClass(
|
170 kumpf 1.41 const CIMNamespaceName& nameSpace,
171 const CIMName& className,
|
172 karl 1.35 Boolean includeQualifiers = false,
173 Boolean includeClassOrigin = false,
174 const CIMPropertyList& propertyList = CIMPropertyList());
175
176
|
177 kumpf 1.68 /**
178 Enumerates the names of the instances of the specified class and its
179 subclasses. This method mimics the client behavior for the
180 EnumerateInstanceNames operation, but of course it can only return
181 the names of the instances that reside in the repository.
182
183 This method is useful mainly for testing purposes, and should not be
184 relied upon for complete results in a CIM Server environment.
185
186 @param nameSpace The namespace in which className resides.
187 @param className The name the class for which to retrieve the instance
188 names.
189 @return An Array of CIMObjectPath objects containing the names of the
190 instances of the specified class in the specified namespace.
|
191 karl 1.42 */
|
192 mike 1.76 Array<CIMObjectPath> enumerateInstanceNamesForSubtree(
|
193 kumpf 1.41 const CIMNamespaceName& nameSpace,
194 const CIMName& className);
|
195 karl 1.35
|
196 kumpf 1.68 /**
197 Enumerates the names of the instances of just the specified class.
198 This method mimics the provider behavior for the EnumerateInstanceNames
199 operation.
200
201 @param nameSpace The namespace in which className resides.
202 @param className The name the class for which to retrieve the instance
203 names.
204 @return An Array of CIMObjectPath objects containing the names of the
205 instances of the specified class in the specified namespace.
|
206 karl 1.35 */
|
207 mike 1.76 Array<CIMObjectPath> enumerateInstanceNamesForClass(
|
208 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
209 kumpf 1.68 const CIMName& className);
|
210 karl 1.35
|
211 karl 1.87 /**
212 Get the associated(reference) classes or instances for the
213 input ObjectName filtered by the assocClass,resultClass,
214 role and result role parameters. This is analogous to the
215 operation defined in the DMTF spec DSP200.
216 @param nameSpace CIMNamespaceName for the operation
217 @param objectName CIMObjectPath for the operation. If this includes
218 ONLY a class in the object with no keys the return is CIMClasses. Else
219 it is CIMInstances. See bug 3302
220 @param assocClass CIMName with name of association class for which this
221 is to be filtered or Null if no filtering
222 @param resultClass CIMName with name of associated class for which
223 response is to be filtered or Null of no filtering.
224 @param role String defining role parameter from association class to
225 objectName
226 @param resultRole String defining role between association and
227 associated classes.
228 @param includeQualifiers Boolean to force inclusion of Qualifiers if
229 true and if this is a class request.
230 @param includeClassOrigin Boolean to force inclusion of ClassOrigin
231 information if true
232 karl 1.87 @param propertyList CIMPropertyList (optional). if Null,
233 return all properties. If empty but not Null, return no
234 properties. Else return only properties in the list.
235 @return Array<CIMObject> containing either the classes or
236 instances requested.
237 @exception CIMException Error code CIM_ERR_INVALID_CLASS if the class
238 does not exist.
239 @exception - Throws NoSuchDirectory if the Namespace
240 does not exist.
241 */
|
242 mike 1.76 Array<CIMObject> associators(
|
243 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
244 kumpf 1.34 const CIMObjectPath& objectName,
|
245 kumpf 1.41 const CIMName& assocClass = CIMName(),
246 const CIMName& resultClass = CIMName(),
|
247 mike 1.27 const String& role = String::EMPTY,
248 const String& resultRole = String::EMPTY,
249 Boolean includeQualifiers = false,
250 Boolean includeClassOrigin = false,
251 const CIMPropertyList& propertyList = CIMPropertyList());
|
252 mike 1.25
|
253 karl 1.87 /**
254 Get the associated class or instance object paths for the
255 input ObjectName filtered by the assocClass,resultClass,
256 role and result role parameters. This is analogous to the
257 operation defined in the DMTF spec DSP200.
258 @param nameSpace CIMNamespaceName for the operation
259 @param objectName CIMObjectPath for the operation. If this includes
260 ONLY a class in the object with no keys the return is CIMClasses. Else
261 it is CIMInstances. See bug 3302
262 @param assocClass CIMName with name of association class for which this
263 is to be filtered or Null if no filtering
264 @param resultClass CIMName with name of associated class for which
265 response is to be filtered or Null of no filtering.
266 @param role String defining role parameter from association class to
267 objectName
268 @param resultRole String defining role between association and
269 associated classes.
270 @return Array<CIMObjectPath> containing the path of either
271 classes or instances requested.
272 @exception CIMException Error code CIM_ERR_INVALID_CLASS if the class
273 does not exist.
274 karl 1.87 @exception - Throws NoSuchDirectory if the Namespace
275 does not exist.
276 */
|
277 mike 1.76 Array<CIMObjectPath> associatorNames(
|
278 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
279 kumpf 1.34 const CIMObjectPath& objectName,
|
280 kumpf 1.41 const CIMName& assocClass = CIMName(),
281 const CIMName& resultClass = CIMName(),
|
282 mike 1.27 const String& role = String::EMPTY,
283 const String& resultRole = String::EMPTY);
|
284 mike 1.25
|
285 karl 1.87 /**
286 Get the association classes or instances for the input
287 ObjectName filtered by the resultClass and role parameters.
288 This is analogous to the operation defined in the DMTF spec
289 DSP200.
290 @param nameSpace CIMNamespaceName for the operation
291 @param objectName CIMObjectPath for the operation. If this includes
292 ONLY a class in the object with no keys the return is CIMClasses. Else
293 it is CIMInstances. See bug 3302
294 @param role String defining role parameter from association class to
295 objectName
296 @param resultRole String defining role between association and
297 associated classes.
298 @param includeQualifiers Boolean to force inclusion of Qualifiers if
299 true and if this is a class request.
300 @param includeClassOrigin Boolean to force inclusion of ClassOrigin
301 information if true
302 @param propertyList CIMPropertyList (optional). if Null,
303 return all properties. If empty but not Null, return no
304 properties. Else return only properties in the list.
305 @return Array<CIMObject> containing either the classes or
306 karl 1.87 instances requested.
307 @exception CIMException Error code CIM_ERR_INVALID_CLASS if the class
308 does not exist.
309 @exception - Throws NoSuchDirectory if the Namespace does
310 not exist.
311 */
|
312 mike 1.76 Array<CIMObject> references(
|
313 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
314 kumpf 1.34 const CIMObjectPath& objectName,
|
315 kumpf 1.41 const CIMName& resultClass = CIMName(),
|
316 mike 1.27 const String& role = String::EMPTY,
317 Boolean includeQualifiers = false,
318 Boolean includeClassOrigin = false,
319 const CIMPropertyList& propertyList = CIMPropertyList());
|
320 mike 1.25
|
321 karl 1.87 /**
322 Get the association class or instance object paths for the
323 input ObjectName filtered by the assocClass,resultClass,
324 role and result role parameters. This is analogous to the
325 operation defined in the DMTF spec DSP200.
326 @param nameSpace CIMNamespaceName for the operation
327 @param objectName CIMObjectPath for the operation. If this includes
328 ONLY a class in the object with no keys the return is CIMClasses. Else
329 it is CIMInstances. See bug 3302
330 @param role String defining role parameter from association class to
331 objectName
332 @param resultRole String defining role between association and
333 associated classes.
334 @return Array<CIMObjectPath> containing the path of either
335 classes or instances requested.
336 @exception CIMException Error code CIM_ERR_INVALID_CLASS if the class
337 does not exist.
338 @exception - Throws NoSuchDirectory if the Namespace
339 does not exist.
340 */
|
341 mike 1.76 Array<CIMObjectPath> referenceNames(
|
342 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
343 kumpf 1.34 const CIMObjectPath& objectName,
|
344 karl 1.42 const CIMName& resultClass = CIMName(),
345 const String& role = String::EMPTY);
346
|
347 mike 1.25 /// getProperty
|
348 mike 1.76 CIMValue getProperty(
|
349 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
350 kumpf 1.34 const CIMObjectPath& instanceName,
|
351 kumpf 1.41 const CIMName& propertyName);
|
352 mike 1.25
353 /// setProperty
|
354 mike 1.76 void setProperty(
|
355 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
356 kumpf 1.34 const CIMObjectPath& instanceName,
|
357 kumpf 1.41 const CIMName& propertyName,
|
358 kumpf 1.79 const CIMValue& newValue = CIMValue());
|
359 mike 1.25
360 /// getQualifier
|
361 mike 1.76 CIMQualifierDecl getQualifier(
|
362 kumpf 1.41 const CIMNamespaceName& nameSpace,
363 const CIMName& qualifierName);
|
364 mike 1.25
365 /// setQualifier
|
366 mike 1.76 void setQualifier(
|
367 kumpf 1.41 const CIMNamespaceName& nameSpace,
|
368 kumpf 1.79 const CIMQualifierDecl& qualifierDecl);
|
369 mike 1.25
|
370 kumpf 1.50 /// deleteQualifier
|
371 mike 1.76 void deleteQualifier(
|
372 kumpf 1.41 const CIMNamespaceName& nameSpace,
373 const CIMName& qualifierName);
|
374 mike 1.25
375 /// enumerateQualifiers
|
376 mike 1.76 Array<CIMQualifierDecl> enumerateQualifiers(
|
377 kumpf 1.71 const CIMNamespaceName& nameSpace);
|
378 mike 1.25
|
379 kumpf 1.72 typedef HashTable <String, String, EqualNoCaseFunc, HashLowerCaseFunc>
380 NameSpaceAttributes;
381
|
382 mike 1.76 void createNameSpace(const CIMNamespaceName& nameSpace,
|
383 kumpf 1.71 const NameSpaceAttributes& attributes = NameSpaceAttributes());
|
384 schuur 1.53
|
385 mike 1.76 void modifyNameSpace(const CIMNamespaceName& nameSpace,
|
386 kumpf 1.71 const NameSpaceAttributes& attributes = NameSpaceAttributes());
|
387 mike 1.25
|
388 rohini.deshpande 1.88 void modifyNameSpaceName(const CIMNamespaceName& nameSpace,
389 const CIMNamespaceName& newNameSpaceName);
390
|
391 mike 1.76 Array<CIMNamespaceName> enumerateNameSpaces() const;
|
392 mike 1.25
|
393 kumpf 1.77 /** Deletes a namespace in the repository.
|
394 mike 1.27 The deleteNameSpace method will only delete a namespace if there are
395 no classed defined in the namespace. Today this is a Pegasus
396 characteristics and not defined as part of the DMTF standards.
397 @param String with the name of the namespace
398 @exception - Throws NoSuchDirectory if the Namespace does not exist.
|
399 mike 1.25 */
|
400 mike 1.76 void deleteNameSpace(const CIMNamespaceName& nameSpace);
|
401 mike 1.31
|
402 mike 1.76 Boolean getNameSpaceAttributes(
|
403 kumpf 1.71 const CIMNamespaceName& nameSpace,
404 NameSpaceAttributes& attributes);
|
405 schuur 1.53
|
406 sahana.prabhakar 1.85 Boolean nameSpaceExists(const CIMNamespaceName& nameSpaceName);
407
|
408 mike 1.31 ////////////////////////////////////////////////////////////////////////////
|
409 mike 1.25
|
410 mike 1.27 /** Indicates whether instance operations that do not have a provider
411 registered should be served by this repository.
412 */
|
413 mike 1.76 Boolean isDefaultInstanceProvider();
|
414 mike 1.27
|
415 mike 1.31 /** Get subclass names of the given class in the given namespace.
|
416 sage 1.28 @param nameSpaceName
417 @param className - class whose subclass names will be gotten. If
418 className is empty, all classnames are returned.
419 @param deepInheritance - if true all descendent classes of class
|
420 karl 1.33 are returned. If className is empty, only root classes are returned.
421 @param subClassNames - output argument to hold subclass names.
|
422 sage 1.28 @exception CIMException(CIM_ERR_INVALID_CLASS)
423 */
|
424 mike 1.76 void getSubClassNames(
|
425 kumpf 1.41 const CIMNamespaceName& nameSpaceName,
426 const CIMName& className,
|
427 sage 1.28 Boolean deepInheritance,
|
428 mike 1.76 Array<CIMName>& subClassNames) const;
|
429 sage 1.28
430 /** Get the names of all superclasses (direct and indirect) of this
431 class.
432 */
|
433 mike 1.76 void getSuperClassNames(
|
434 kumpf 1.41 const CIMNamespaceName& nameSpaceName,
435 const CIMName& className,
|
436 mike 1.76 Array<CIMName>& subClassNames) const;
|
437 sage 1.28
|
438 mike 1.76 Boolean isRemoteNameSpace(
|
439 schuur 1.55 const CIMNamespaceName& nameSpaceName,
|
440 kumpf 1.71 String& remoteInfo);
|
441 dave.sudlik 1.61
442 #ifdef PEGASUS_DEBUG
|
443 kumpf 1.71 void DisplayCacheStatistics();
|
444 dave.sudlik 1.61 #endif
445
|
446 kumpf 1.50 protected:
447
448 // Internal getClass implementation that does not do access control
|
449 mike 1.80 // If readOnlyClass is true, then the caller ensures that the returned
450 // class, will never be modified, which allows returning a reference to
451 // the one that is in the cache.
|
452 kumpf 1.50 CIMClass _getClass(
453 const CIMNamespaceName& nameSpace,
454 const CIMName& className,
455 Boolean localOnly,
456 Boolean includeQualifiers,
457 Boolean includeClassOrigin,
|
458 mike 1.80 const CIMPropertyList& propertyList,
459 Boolean clone = true);
|
460 kumpf 1.50
461 /// Internal getInstance implementation that does not do access control
462 CIMInstance _getInstance(
463 const CIMNamespaceName& nameSpace,
464 const CIMObjectPath& instanceName,
465 Boolean includeQualifiers,
466 Boolean includeClassOrigin,
|
467 kumpf 1.78 const CIMPropertyList& propertyList,
468 Boolean resolveInstance);
|
469 kumpf 1.50
470 /// Internal createClass implementation that does not do access control
471 void _createClass(
472 const CIMNamespaceName& nameSpace,
473 const CIMClass& newClass);
474
475 /// Internal createInstance implementation that does not do access control
476 CIMObjectPath _createInstance(
477 const CIMNamespaceName& nameSpace,
478 const CIMInstance& newInstance);
479
480 /// Internal modifyClass implementation that does not do access control
481 void _modifyClass(
482 const CIMNamespaceName& nameSpace,
483 const CIMClass& modifiedClass);
484
485 /// Internal associatorNames implementation that does not do access control
486 Array<CIMObjectPath> _associatorNames(
487 const CIMNamespaceName& nameSpace,
488 const CIMObjectPath& objectName,
489 const CIMName& assocClass,
490 kumpf 1.50 const CIMName& resultClass,
491 const String& role,
492 const String& resultRole);
493
494 /// Internal referenceNames implementation that does not do access control
495 Array<CIMObjectPath> _referenceNames(
496 const CIMNamespaceName& nameSpace,
497 const CIMObjectPath& objectName,
498 const CIMName& resultClass,
499 const String& role);
500
501 /// Internal getQualifier implementation that does not do access control
502 CIMQualifierDecl _getQualifier(
503 const CIMNamespaceName& nameSpace,
504 const CIMName& qualifierName);
505
506 /// Internal setQualifier implementation that does not do access control
507 void _setQualifier(
508 const CIMNamespaceName& nameSpace,
509 const CIMQualifierDecl& qualifierDecl);
510
|
511 mike 1.25 private:
512
|
513 mike 1.76 class CIMRepositoryRep* _rep;
|
514 kumpf 1.50 friend class compilerDeclContext;
515 friend class RepositoryDeclContext;
|
516 mike 1.25 };
517
518 PEGASUS_NAMESPACE_END
519
|
520 kumpf 1.72 #endif /* Pegasus_Repository_h */
|