zjf
2023-03-06 392b76515f40376b6d36f40a114850ef63650384
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
/////////////////////////////////////////////////////////////////////////////// 
// Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). 
// All rights reserved. 
// 
// This software and its documentation and related materials are owned by 
// the Alliance. The software may only be incorporated into application 
// programs owned by members of the Alliance, subject to a signed 
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable  
// trade secrets of the Alliance and its suppliers. The software is also 
// protected by copyright law and international treaty provisions. Application  
// programs incorporating this software must include the following statement 
// with their copyright notices:
//   
//   This application incorporates Teigha(R) software pursuant to a license 
//   agreement with Open Design Alliance.
//   Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. 
//   All rights reserved.
//
// By use of this software, its documentation or related materials, you 
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
 
#ifndef _ODDB_OBJECTCONTEXTCOLLECTION_H_INCLUDED_
#define _ODDB_OBJECTCONTEXTCOLLECTION_H_INCLUDED_
 
#include "DbObjectContext.h"
#include "TD_PackPush.h"
 
class OdDbObjectContextCollectionIterator;
typedef OdSmartPtr<OdDbObjectContextCollectionIterator> OdDbObjectContextCollectionIteratorPtr;
 
/** \details
    This class represents a collection of objects that have context items defined.
 
    \remarks
    Implement this interface and register it with OdDbObjectContextContextManager
    for each database that supports context items. A context collection can be made
    current, locked, or unlocked.
        
    \sa
    TD_Db
 
    <group OdDb_Classes> 
*/
class TOOLKIT_EXPORT ODRX_ABSTRACT OdDbObjectContextCollection : public OdRxObject
{
public:
  ODRX_DECLARE_MEMBERS(OdDbObjectContextCollection);
 
   /** \details
    Returns the name of the context collection.
  
    \remarks
    The context collection name is used by the context manager to identify the 
    collection and the context items that it contains.
   */
    virtual OdString name() const = 0;
 
   /** \details
    Returns a pointer to the current context of the context collection.
  
    \param pRequestingObject [in]  Optional pointer to the object for which you want
    the current context.
 
    \remarks
    If no current context exists, Null is returned.
   */
  virtual OdDbObjectContextPtr currentContext(
    const OdDbObject* pRequestingObject) const = 0;
 
   /** \details
    Sets the current context of the context collection.
  
    \param pContext [in]  Pointer to the context for which a uniqueIdentifier is defined
    to make current for the context collection.
   */
   virtual OdResult setCurrentContext(
    const OdDbObjectContext* pContext) = 0;
 
   /** \details
    Copies a context and adds the copy to the context collection.
  
    \param pContext [in]  Pointer to the context for which a uniqueIdentifier is defined
    to copy and add to the context collection.
 
    \remarks
    The new context is assigned a new uniqueIdentifier.
    Returns eOk if successful, or an appropriate error code if not.
   */
  virtual OdResult addContext(
    const OdDbObjectContext* pContext) = 0;
 
   /** \details
    Removes a context from the context collection.
  
    \param contextName [in]  Name of the context to delete from the context
    collection.
 
    \remarks
    To remove the current context from a collection, first make a different
    context current, then delete the desired context.
    Returns eOk if successful, or an appropriate error code if not.
   */
  virtual OdResult removeContext(
    const OdString& contextName) = 0;
 
   /** \details
    Internal use only.
   */
    virtual OdResult lockContext(
    const OdDbObjectContext* pContext) = 0;
 
   /** \details
    Internal use only.
   */
    virtual OdResult unlockContext() = 0;
 
   /** \details
    Internal use only.
   */
    virtual bool locked() const = 0;
 
   /** \details
    Returns a pointer to a copy of a named context in the collection.
  
    \param contextName [in]  Name of the context.
 
    \remarks
    If no context exists with the specified name, Null is returned.
   */
  virtual OdDbObjectContextPtr getContext(
    const OdString& contextName) const = 0;
 
  /** \details
    Returns whether a named context exists in the collection.
  
    \param contextName [in]  Name of the context.
 
    \remarks
    Returns True if the named context exists in the collection, 
    or returns Null if it does not exist.
  */
  virtual bool hasContext(
    const OdString& contextName) const = 0;
 
   /** \details
    Returns an Iterator to the contexts in the collection.
   */
  virtual OdDbObjectContextCollectionIteratorPtr newIterator() const = 0;
};
 
 
////////////////////////////////////////////////////////////////////////
// class OdDbObjectContextCollectionIterator
////////////////////////////////////////////////////////////////////////
 
/** \details
    This class implements Iterators for objects that have context items defined and
    stored in a context collection (using the OdDbObjectContextCollections class).
 
    \remarks
    If an application supports context collections, you must implement this class. You
    can get an Iterator using OdDbObjectContextCollection::newIterator().
        
    \sa
    TD_Db
 
    <group OdDb_Classes> 
*/
class TOOLKIT_EXPORT ODRX_ABSTRACT OdDbObjectContextCollectionIterator : public OdRxObject
{
public:
  ODRX_DECLARE_MEMBERS(OdDbObjectContextCollectionIterator);
 
   /** \details
    Moves the Iterator to the start of the collection.
 
    \remarks
    Returns eOk if successful, or an appropriate error code if not.
   */
  virtual OdResult start() = 0;
 
   /** \details
    Moves the Iterator to the next context of the collection.
 
    \remarks
    Returns True if successful, or returns False if the Iterator is
    at the end of the collection.
   */
  virtual bool next() = 0;
 
   /** \details
    Returns whether the Iterator is at the end of the collection.
 
    \remarks
    Returns True if the Iterator is at the end of the collection, or
    returns False if it is not.
   */
  virtual bool done() const = 0;
 
   /** \details
    Returns a copy of the context located at the current position of the
    Iterator.
   */
  virtual OdDbObjectContextPtr getContext() const = 0;
};
 
#include "TD_PackPop.h"
 
#endif // _ODDB_OBJECTCONTEXTCOLLECTION_H_INCLUDED_