ElementHandle.h
Go to the documentation of this file.
1 /*--------------------------------------------------------------------------------------+
2 |
3 | Supplied under applicable software license agreement.
4 |
5 | Copyright (c) 2018 Bentley Systems, Incorporated. All rights reserved.
6 |
7 +---------------------------------------------------------------------------------------*/
8 #pragma once
9 
10 #include <Bentley/RefCounted.h>
11 #include "DgnPlatform.h"
12 #include "Handler.h"
13 #include "DgnFile.h"
15 #include "DgnModel.h"
17 #include "XAttributeChange.h"
18 
19 DGNPLATFORM_TYPEDEFS (ElementLinkageIterator)
20 DGNPLATFORM_TYPEDEFS (ConstElementLinkageIterator)
21 
23 
24 struct ITxn;
25 class Handler;
26 
27 // =======================================================================================
30 // =======================================================================================
32 {
43 };
44 
45 
46 /*=================================================================================**/
72 struct ChildElemIter;
73 struct ChildEditElemIter;
74 
76 
77 // =======================================================================================
79 // @remark Required library : DgnPlatform<ApiNumber>.lib i.e. DgnPlatform5.lib
80 // @bsiclass Bentley Systems
81 // =======================================================================================
82 struct ElemHandleBase
83 {
84  ElementRefP m_elRef;
85  MSElementCP m_cacheElem;
86  DgnModelRefP m_modelRef;
87  MSElementDescrP m_descr;
88  IElementStateP m_state;
89  bool m_isPersistent; // Is the underlying element persistent?
90  bool m_descrOwned;
91 };
93 
94 /*=================================================================================**/
99 struct IElementState : public IRefCounted {};
100 
101 // =======================================================================================
103 
105 
107 
109 
110 // @remark Required library : DgnPlatform<ApiNumber>.lib i.e. DgnPlatform5.lib
111 // @bsiclass Bentley Systems
112 // =======================================================================================
113 CLRPUBLIC struct ElementHandle : protected ElemHandleBase
114 {
115 
116 protected:
119  void ClearElementDescr()
120  {
121  if (m_descr)
122  {
123  if (m_descrOwned)
124  {
125  m_descr->Release();
126 
127  m_descrOwned = false;
128  }
129  m_descr = NULL;
130  }
131  }
132 
133  void ClearCacheElem()
134  {
135  if (m_cacheElem)
136  ReleaseCacheElem();
137  }
138 
139  void ClearElemState()
140  {
141  if (m_state)
142  {
143  m_state->Release();
144  m_state = NULL;
145  }
146  }
147 
148  void ClearAll() {ClearElementDescr(); ClearCacheElem(); ClearElemState();}
149  DGNPLATFORM_EXPORT void AssignElementRef (ElementRefP elRef, DgnModelRefP modelRef, bool resolveTransientElementRef=true);
150  void Invalidate () {ClearAll(); m_elRef = NULL; m_modelRef = NULL;}
151  DGNPLATFORM_EXPORT void AssignElemDescr (MSElementDescrP, bool owned, bool isPersistent, DgnModelRefP);
152  void ReleaseCacheElem () {m_cacheElem=NULL;}
153  DGNPLATFORM_EXPORT MSElementCP GetUnstableMSElementCP () const;
154 
155  DGNPLATFORM_EXPORT void Init (ElementRefP elRef, DgnModelRefP modelRef);
156  DGNPLATFORM_EXPORT void Init (MSElementDescrCP elDscr, bool owned, bool isPersistent, DgnModelRefP modelRef);
157 
159 
160 public:
161  ElementHandle () {Init (NULL, NULL);}
162  ~ElementHandle () {ClearAll();}
163 
167  explicit ElementHandle (ElementRefP elRef, DgnModelRefP modelRef=NULL) {Init (elRef, modelRef);}
168 
174 
182  ElementHandle (MSElementDescrCP elDscr, bool owned, bool isUnmodified=false, DgnModelRefP modelRef=NULL) {Init (elDscr, owned, isUnmodified, modelRef);}
183 
190 
191  ElementHandle (ElementHandleCR from) {CopyFrom (from);}
194  {
195  if (this == &from)
196  return *this;
197 
198  ClearAll();
199  return CopyFrom (from);
200  }
202 
204 
205  DGNPLATFORM_EXPORT void ResetHandler () const;
206 
213  DGNPLATFORM_EXPORT Handler& GetHandler (MissingHandlerPermissions perm=MISSING_HANDLER_PERMISSION_None) const;
214 
218 
221  IDependencyHandlerP GetIDependencyHandler () const {return GetHandler().GetIDependencyHandler();}
222 
225  ITransactionHandlerP GetITransactionHandler () const {return GetHandler().GetITransactionHandler();}
226 
229  DGNPLATFORM_EXPORT ITextQueryCP GetITextQuery () const;
230 
233  DGNPLATFORM_EXPORT ITextEditP GetITextEdit () const;
234 
236 
238 
239  ElementRefP GetElementRef () const {return m_elRef;}
242 
246  DGNPLATFORM_EXPORT DgnModelP GetDgnModelP () const;
247 
251  DgnFileP GetDgnFileP () const {DgnModelP dgnCache = GetDgnModelP (); return (NULL == dgnCache) ? NULL : dgnCache->GetDgnFileP ();}
252 
256  DgnModelRefP GetModelRef () const {return m_modelRef;}
257 
262  MSElementCP GetElementCP () const {return m_descr ? &m_descr->el : GetUnstableMSElementCP();}
263 
266  bool IsValid () const {return (NULL != m_elRef) || (NULL != m_descr);}
267 
270  bool IsPersistent () const {return m_isPersistent;}
271 
274  int GetElementType () const {return GetElementCP()->ehdr.type;}
275 
277  void GetElementHeader (Elm_hdr& hdr) const {hdr = GetElementCP()->ehdr;}
278 
281  MSElementDescrCP PeekElementDescrCP () const {return m_descr;}
282 
290  DGNPLATFORM_EXPORT MSElementDescrCP GetElementDescrCP () const;
292 
293 
295 
296 
299  DGNPLATFORM_EXPORT ConstElementLinkageIterator BeginElementLinkages (UInt16 rl = 0) const;
300 
302  DGNPLATFORM_EXPORT ConstElementLinkageIterator EndElementLinkages () const;
304 
306  DGNPLATFORM_EXPORT ElementId GetElementId () const;
307 };
308 
309 /*=================================================================================**/
471 {
472 
473 private:
475  explicit EditElementHandle (ElementHandleCR from); // illegal!!
476  explicit EditElementHandle (EditElementHandleCR from); // illegal!!
477 
478  MSElementDescrP ExtractElementDescr0 ();
479 
480 public:
481 
483 
486  EditElementHandle (MSElementDescrP descr, bool owned, bool isUnmodified, DgnModelRefP modelRef=NULL) : ElementHandle (descr, owned, isUnmodified, modelRef) {}
487 
490  EditElementHandle (ElementRefP elRef, DgnModelRefP modelRef=NULL) : ElementHandle (elRef, modelRef) {}
491 
494  EditElementHandle (MSElementCP el, DgnModelRefP modelRef) : ElementHandle (el, modelRef){}
495 
500  EditElementHandle (ElementId id, DgnModelRefP modelRef) : ElementHandle (id, modelRef) {}
501 
506  DGNPLATFORM_EXPORT EditElementHandle (ElementHandleCR from, bool duplicateDescr);
507 
509  DGNPLATFORM_EXPORT void Duplicate (ElementHandleCR);
510 
513  DGNPLATFORM_EXPORT void SetModelRef (DgnModelRefP modelRef);
514 
517  void SetNonPersistent () {m_isPersistent = false; m_elRef = NULL;}
518 
520  void Invalidate () {ElementHandle::Invalidate ();}
521 
522  void SetIElementState (IElementStateP state) {ClearElemState (); m_state = state; if (m_state) m_state->AddRef ();}
523  IElementStateP GetIElementState () {return m_state;}
524 
526 
527 
533  MSElementDescrP GetElementDescrP () {return (MSElementDescrP) ElementHandle::GetElementDescrCP();}
534 
539  MSElementP GetElementP () {GetElementDescrP(); return m_descr ? &m_descr->el : NULL;}
540 
543  DGNPLATFORM_EXPORT StatusInt ReplaceElement (MSElementCP el);
544 
551  DGNPLATFORM_EXPORT StatusInt ReplaceElementDescr (MSElementDescrP elDscr);
552 
558  DGNPLATFORM_EXPORT MSElementDescrP ExtractElementDescr ();
559 
567  void SetElementDescr (MSElementDescrP elDscr, bool owned, bool isUnmodified, DgnModelRefP modelRef = NULL) {AssignElemDescr (elDscr, owned, isUnmodified, modelRef);}
568 
574  void SetElementRef (ElementRefP elRef, DgnModelRefP modelRef) {AssignElementRef (elRef, modelRef);}
575 
576 
578 
580 
581 
604  DGNPLATFORM_EXPORT StatusInt ScheduleWriteXAttribute (XAttributeHandlerIdCR h, UInt32 xAttrId, size_t dataSize, void const* data);
605 
610  DGNPLATFORM_EXPORT StatusInt CancelWriteXAttribute (XAttributeHandlerIdCR h, UInt32 xAttrId);
611 
620  DGNPLATFORM_EXPORT StatusInt ScheduleDeleteXAttribute (XAttributeHandlerIdCR h, UInt32 xAttrId);
621 
626  DGNPLATFORM_EXPORT StatusInt CancelDeleteXAttribute (XAttributeHandlerIdCR h, UInt32 xAttrId);
628 
630 
631  DGNPLATFORM_EXPORT StatusInt FindByID (ElementId elemID, DgnModelP dgnCache, bool allowDeleted = false);
632 
633  DGNPLATFORM_EXPORT StatusInt FindByID (ElementId elemID, DgnModelRefP modelRef, bool allowDeleted = false);
635 
637 
638 
644  DGNPLATFORM_EXPORT StatusInt AddToModel ();
645 
650  DGNPLATFORM_EXPORT StatusInt DeleteFromModel ();
651 
658  DGNPLATFORM_EXPORT StatusInt ReplaceInModel (ElementRefP oldRef);
660 
662 
663 
666  DGNPLATFORM_EXPORT ElementLinkageIterator BeginElementLinkages (UInt16 rl = 0);
667 
669  DGNPLATFORM_EXPORT ElementLinkageIterator EndElementLinkages ();
670 
679  DGNPLATFORM_EXPORT StatusInt ReplaceElementLinkage (ElementLinkageIteratorR it, LinkageHeader const& newLinkageHeader, void const* newLinkageData);
680 
683 
694  DGNPLATFORM_EXPORT StatusInt RemoveElementLinkage (ElementLinkageIteratorR it);
696 
708  DGNPLATFORM_EXPORT StatusInt InsertElementLinkage (ElementLinkageIterator* newLinkageIt, LinkageHeaderCR newLinkageHeader, void const* newLinkageData, ElementLinkageIterator& wh, UInt16 rl = 0);
709 
716  DGNPLATFORM_EXPORT StatusInt AppendElementLinkage (ElementLinkageIterator* newLinkageIt, LinkageHeaderCR newLinkageHeader, void const* newLinkageData);
718 };
719 
720 /*=================================================================================**/
727 {
729  virtual size_t GetCount () = 0;
730 
734  virtual bool GetFirst (ElementHandleR elHandle) = 0;
735 
739  virtual bool GetNext (ElementHandleR elHandle) = 0;
740 };
741 
742 /*=================================================================================**/
756 {
757 
758 private:
759  bool m_hasDescr;
760  ElementRefVecP m_subElements;
761  ElementRefVec::const_iterator m_iter;
762 
763  DGNPLATFORM_EXPORT void ToNext_();
764 
765 public:
767  ChildElemIter () { m_hasDescr=false; m_subElements=NULL;}
768 
773 
777  // @note To test for a public child that supports a specific modification (such as in a locate filter) a ChildElemIter
778  // should be initialized using ExposeChildrenReason::Edit instead of creating a ChildEditElemIter.
779  DGNPLATFORM_EXPORT explicit ChildElemIter (ElementHandleCR from, ExposeChildrenReason reason=ExposeChildrenReason::Query);
780 
783  ChildElemIter ToNext () const {ChildElemIter n (*this); n.ToNext_(); return n;}
784 };
785 
786 /*=================================================================================**/
810 {
811 private:
812  MSElementDescrP m_nextDescr;
813  DGNPLATFORM_EXPORT void InitFrom (MSElementDescrP, DgnModelRefP, bool isPersistent);
814 
815 public:
817  ChildEditElemIter() { m_nextDescr=NULL;}
824 
825 
834 
837  ChildEditElemIter ToNext () {ChildEditElemIter n; n.InitFrom (m_nextDescr, m_modelRef, IsPersistent()); return n;};
838 };
839 
840 // =======================================================================================
842 // @remark Required library : DgnPlatform<ApiNumber>.lib i.e. DgnPlatform5.lib
843 // @bsiclass Bentley Systems
844 // =======================================================================================
846 {
848 protected:
849  friend struct ElementHandle;
850  LinkageHeader const* m_thisLinkage;
851  LinkageHeader const* m_end;
852  UInt16 m_requestedLinkage;
853 
854 
856 
857 public:
858  ConstElementLinkageIterator () {m_thisLinkage=m_end=0; m_requestedLinkage=0;}
859 
862  DGNPLATFORM_EXPORT bool IsValid () const;
863 
866  DGNPLATFORM_EXPORT bool ToNext ();
867 
868  ConstElementLinkageIterator& operator++ () {ToNext(); return *this;}
869  bool operator== (ConstElementLinkageIterator const& rhs) const {return m_thisLinkage == rhs.m_thisLinkage;}
870  bool operator!= (ConstElementLinkageIterator const& rhs) const {return !(m_thisLinkage == rhs.m_thisLinkage);}
871 
873  LinkageHeader const& operator* () const {return *m_thisLinkage;}
874 
876  LinkageHeader const* operator-> () const {return m_thisLinkage;}
877 
880  void const* GetData () const {return m_thisLinkage + 1;}
881 
883  LinkageHeader const* GetLinkage () const {return m_thisLinkage;}
884 
885 }; // ConstElementLinkageIterator
886 
887 // =======================================================================================
891 // @bsiclass Bentley Systems
892 // =======================================================================================
894 {
896 
897 protected:
898 
900 
901 public:
903 
904  ElementLinkageIterator& operator++() {ToNext(); return *this;}
905  bool operator==(ElementLinkageIterator const& rhs) const {return m_thisLinkage == rhs.m_thisLinkage;}
906  bool operator!=(ElementLinkageIterator const& rhs) const {return !(m_thisLinkage == rhs.m_thisLinkage);}
907 
909  LinkageHeader& operator*() {return const_cast<LinkageHeader&>(*m_thisLinkage);}
910 
912  LinkageHeader* operator->() {return const_cast<LinkageHeader*>(m_thisLinkage);}
913 
917  void* GetDataRW () {return const_cast<void*>(GetData());}
918 
919 }; // ReadWriteElementLinkageIterator
920 
922 
923 
924 
Provide read/write access to linkages on an element.
Definition: ElementHandle.h:893
An Iterator for the children of an ElementHandle for query purposes.
Definition: ElementHandle.h:755
Iterate Linkages on an element.
Definition: ElementHandle.h:845
ConstElementLinkageIterator()
Definition: ElementHandle.h:858
IDependencyHandlerP GetIDependencyHandler() const
A shortcut method to get the IDependencyHandler interface on the Handler for this ElementHandle...
Definition: ElementHandle.h:221
void * GetDataRW()
Returns a read-write pointer to the data immediately following the linkage header.
Definition: ElementHandle.h:917
A readonly "handle" to an element.
Definition: ElementHandle.h:113
MSElementCP GetElementCP() const
Get a const pointer to the MSElement associated with this ElementHandle.
Definition: ElementHandle.h:262
#define END_BENTLEY_DGNPLATFORM_NAMESPACE
Definition: DgnPlatformBaseType.r.h:69
OK to break, add vertices to, or extend this curve (1-D curves only)
Definition: ElementHandle.h:40
struct DgnPlatform::XAttributeHandlerId const & XAttributeHandlerIdCR
Definition: DgnPlatform.h:491
MSElementP GetElementP()
Get a pointer to a writeable MSElement from this EditElementHandle.
Definition: ElementHandle.h:539
OK to display the element according to its element type. Also includes permission to snap to the elem...
Definition: ElementHandle.h:36
void SetIElementState(IElementStateP state)
Definition: ElementHandle.h:522
ElementHandle()
construct a blank, invalid, ElementHandle
Definition: ElementHandle.h:161
ExposeChildrenReason
The reasons an application can ask a handler for an iterator to look at its "public" children...
Definition: Handler.h:79
LinkageHeader & operator*()
Get access to the LinkageHeader referenced by this iterator.
Definition: ElementHandle.h:909
OK to create a copy of the element (Note: Element Handler XAttribute is also copied) ...
Definition: ElementHandle.h:35
union DgnPlatform::MSElement * MSElementP
Definition: DgnPlatform.h:531
uint16_t UInt16
Definition: Bentley.r.h:118
bool IsValid() const
Determine whether this ElementHandle is currently valid.
Definition: ElementHandle.h:266
An element Handler should implement this interface if it wants to know when elements referenced by it...
Definition: XAttributeHandler.h:56
~ElementHandle()
Definition: ElementHandle.h:162
DgnFileP GetDgnFileP() const
Get the DgnFile of the DgnModel for this ElementHandle.
Definition: ElementHandle.h:251
A writeable "handle" to an MSElement.
Definition: ElementHandle.h:470
OK to change the element attributes (symbology, transparency, ...)
Definition: ElementHandle.h:41
#define DGNPLATFORM_EXPORT
Definition: DgnPlatform/ExportMacros.h:58
A DgnFile is an in-memory representation of a physical file, regardless of its format.
Definition: DgnFile.h:308
void const * GetData() const
Returns a read-only pointer to the data immediately following the linkage header. ...
Definition: ElementHandle.h:880
DisplayHandlerP GetDisplayHandler()
Use this method instead of dynamic_cast (handler)
EditElementHandle()
construct a blank, invalid, EditElementHandle
Definition: ElementHandle.h:482
ElementLinkageIterator & operator++()
Definition: ElementHandle.h:904
ElementLinkageIterator()
Definition: ElementHandle.h:902
Mask of all defined default flags.
Definition: ElementHandle.h:42
uint32_t UInt32
Definition: Bentley.r.h:128
#define NULL
Definition: Bentley.h:157
bstdmap & operator=(const bstdmap &__rhs)
Definition: stdcxx/bstdmap.h:170
LinkageHeader * operator->()
Get access to the LinkageHeader referenced by this iterator.
Definition: ElementHandle.h:912
struct DgnPlatform::MSElementDescr const * MSElementDescrCP
Definition: DgnPlatform.h:390
This interface provides a transparent way to provide access to a collection of ElemHandles.
Definition: ElementHandle.h:726
MSElementDescrP GetElementDescrP()
Get a writable MSElementDescr from this EditElementHandle.
Definition: ElementHandle.h:533
DgnFileP GetDgnFileP() const
Get the file that contains this model.
struct DgnPlatform::EditElementHandle const & EditElementHandleCR
Definition: DgnPlatform.h:254
OK to move (translate) the element.
Definition: ElementHandle.h:38
OK to display and possibly use default manipulators, according to its MicroStation element type...
Definition: ElementHandle.h:37
Definition: MSElementDescr.h:28
EditElementHandle(MSElementCP el, DgnModelRefP modelRef)
Construct an ElementHandle from an MSElement and a DgnModelRef.
Definition: ElementHandle.h:494
A DgnModel represents a DgnModel in memory.
Definition: DgnModel.h:236
Base class for handlers that control the display of graphic (visible) elements.
Definition: DisplayHandler.h:30
DisplayHandlerP GetDisplayHandler() const
A shortcut method to get a DisplayHandler pointer for the Handler of this ElementHandle, or NULL if the element's Handler does not derive from DisplayHandler.
Definition: ElementHandle.h:217
int GetElementType() const
Get the element type of the element referenced by this ElementHandle.
Definition: ElementHandle.h:274
ChildEditElemIter()
Create an invalid iterator.
Definition: ElementHandle.h:817
EditElementHandle(ElementRefP elRef, DgnModelRefP modelRef=0)
Construct an ElementHandle from an ElementRefP and a DgnModelRefP.
Definition: ElementHandle.h:490
#define CLRPUBLIC
Definition: DgnPlatform/ExportMacros.h:12
struct DgnPlatform::ITextQuery const * ITextQueryCP
Definition: DgnPlatform.h:338
void SetElementDescr(MSElementDescrP elDscr, bool owned, bool isUnmodified, DgnModelRefP modelRef=0)
Assign a new MSElementDescr to this EditElementHandle.
Definition: ElementHandle.h:567
A DgnModelRef provides access to a model in a Bentley::DgnPlatform::DgnFile.
Definition: DgnModelRef.h:172
DgnModelRefP GetModelRef() const
Get the DgnModelRef for this ElementHandle.
Definition: ElementHandle.h:256
Definition: ITextEdit.h:144
#define DGNPLATFORM_TYPEDEFS(_name_)
Definition: DgnPlatform.h:73
Interface implemented to hold additional information about an element held by an ElementHandle.
Definition: ElementHandle.h:99
ElementHandle(MSElementDescrCP elDscr, bool owned, bool isUnmodified=false, DgnModelRefP modelRef=0)
Construct an ElementHandle from an MSElementDescr.
Definition: ElementHandle.h:182
Interface that provides direct and efficient access to element data.
Definition: ElementRefBase.h:120
bool operator==(ElementLinkageIterator const &rhs) const
Definition: ElementHandle.h:905
bool operator!=(ElementLinkageIterator const &rhs) const
Definition: ElementHandle.h:906
#define BEGIN_BENTLEY_DGNPLATFORM_NAMESPACE
Definition: DgnPlatformBaseType.r.h:68
DVec3d operator*(Transform const &transform, DVec3d const &vector)
operator overload for multiplication of a transform and a vector li>The vector appears on the left as...
ChildEditElemIter ToNext()
Construct a new ChildEditElemIter that points to the next sibling element, relative to this...
Definition: ElementHandle.h:837
bool operator!=(const BentleyAllocator< _Ty > &, const BentleyAllocator< _Other > &)
Definition: BentleyAllocator.h:152
ElementHandle(ElementHandleCR from)
Copy an ElementHandle.
Definition: ElementHandle.h:191
OK to transform (mirror, rotate, scale, stretch) the element in arbitrarily complicated ways...
Definition: ElementHandle.h:39
bool IsPersistent() const
Determine whether this ElementHandle references an unmodified element in the cache.
Definition: ElementHandle.h:270
int StatusInt
Definition: Bentley.h:222
UInt64 ElementId
Definition: DgnPlatformBaseType.r.h:83
EditElementHandle(MSElementDescrP descr, bool owned, bool isUnmodified, DgnModelRefP modelRef=0)
Construct an ElementHandle from an MSElementDescr.
Definition: ElementHandle.h:486
OK to delete the element.
Definition: ElementHandle.h:34
ChildElemIter()
Create an invalid iterator.
Definition: ElementHandle.h:767
Interface adopted by an Element Handler that wants to participate in MicroStation transactions...
Definition: ITransactionHandler.h:37
ElementHandle(ElementRefP elRef, DgnModelRefP modelRef=0)
Construct an ElementHandle from an ElementRefP and a DgnModelRefP.
Definition: ElementHandle.h:167
MissingHandlerPermissions
An element handler can use these flags to specify what MicroStation can do with the element when the ...
Definition: ElementHandle.h:31
virtual UInt32 AddRef() const =0
ChildElemIter ToNext() const
Move to the next sibling element from the current element.
Definition: ElementHandle.h:783
void GetElementHeader(Elm_hdr &hdr) const
Get a copy of the Elm_hdr of the element referenced by this ElementHandle.
Definition: ElementHandle.h:277
MSElementDescrCP PeekElementDescrCP() const
Peek to see whether this ElementHandle currently has an MSElementDescr.
Definition: ElementHandle.h:281
void SetNonPersistent()
Turn off the "IsUnmodified" flag for this EditElementHandle.
Definition: ElementHandle.h:517
EditElementHandle(ElementId id, DgnModelRefP modelRef)
Construct an ElementHandle from an ElementId and a DgnModelRefP.
Definition: ElementHandle.h:500
struct DgnPlatform::LinkageHeader const & LinkageHeaderCR
Definition: DgnPlatform.h:363
struct DgnPlatform::ElementHandle const & ElementHandleCR
Definition: DgnPlatform.h:260
Disallow all operations on the element when handler is not available.
Definition: ElementHandle.h:33
Interface to be adopted by a class the implements the reference-counting pattern. ...
Definition: RefCounted.h:34
LinkageHeader const * GetLinkage() const
Get access to the LinkageHeader referenced by this iterator; same as the -> operator.
Definition: ElementHandle.h:883
ITransactionHandlerP GetITransactionHandler() const
A shortcut method to get the ITransactionHandler interface on the Handler for this ElementHandle...
Definition: ElementHandle.h:225
IElementStateP GetIElementState()
Definition: ElementHandle.h:523
union DgnPlatform::MSElement const * MSElementCP
Definition: DgnPlatform.h:531
void Invalidate()
Mark this EditElementHandle as invalid. If there is an MSElementDescr associated with this EditElemen...
Definition: ElementHandle.h:520
An Iterator for the children of an EditElementHandle that allows modification.
Definition: ElementHandle.h:809
void SetElementRef(ElementRefP elRef, DgnModelRefP modelRef)
Change the ElementRefP and DgnModelRef for this EditElementHandle.
Definition: ElementHandle.h:574
bool operator==(const BentleyAllocator< _Ty > &, const BentleyAllocator< _Other > &)
Definition: BentleyAllocator.h:146

Copyright © 2017 Bentley Systems, Incorporated. All rights reserved.