oaChangeRec.h

Go to the documentation of this file.
00001 // ****************************************************************************
00002 // ****************************************************************************
00003 // oaChangeRec.h
00004 //
00005 // This file contains the definition of the Change Record in the change set.
00006 //
00007 //  oaChangeRec Class Hierarchy
00008 //    oaChangeRec
00009 //      A change record represents a change or an event in the database. It can
00010 //      be leaf-level change, hierarchical change, or an event change.
00011 //
00012 //    oaLeafChangeRec
00013 //      A change record represents a change in the database. It includes 
00014 //      information about the type of the change, the subject of the change
00015 //      and the value of the change. This the base class and there're various
00016 //      derived class to provide specific informations of those.
00017 //
00018 //    oaAttributeChangeRec
00019 //      This is the base class for change records of attribute changes.
00020 //
00021 //    oaSetAttributeChangeRec
00022 //      This is the class for change records of setting an attribute.
00023 //
00024 //    oaUnsetAttributeChangeRec
00025 //      This is the class for change records of un-setting an attribute.
00026 //
00027 //    oaRelationshipChangeRec
00028 //      This is the base class for change records of relationship changes.
00029 //
00030 //    oaCreateRelationshipChangeRec
00031 //      This is the base class for change records of relationship creations.
00032 //
00033 //    oaDestroyRelationshipChangeRec
00034 //      This is the base class for change records of relationship deletion.
00035 // 
00036 //    oaCreate1to1RelationshipChangeRec
00037 //      This is the class for change records of creating an 1-to-1 relationship.
00038 //
00039 //    oaCreate1toNRelationshipChangeRec
00040 //      This is the class for change records of creating an 1-to-N relationship.
00041 //
00042 //    oaCreate2DTableRelationshipChangeRec
00043 //      This is the class for change records of creating a 2DTable relationship.
00044 //      Since this is a templatized type, we also store the relationship base.
00045 //
00046 //    oaDestroy1to1RelationshipChangeRec
00047 //      This is the class for change records of destroying an 1-to-1 
00048 //      relationship.
00049 //
00050 //    oaDestroy1toNRelationshipChangeRec
00051 //      This is the class for change records of destroying an 1-to-N 
00052 //      relationship.
00053 //
00054 //    oaDestroy2DTableRelationshipChangeRec
00055 //      This is the class for change records of destroying an 2DTable 
00056 //      relationship.
00057 //
00058 //    oaHierChangeRec
00059 //     A single, higher level OpenAccess API call can map to a state change 
00060 //     that might include multiple levels of lower level state changes. For 
00061 //     complex APIs, this decomposition may span more than one level of 
00062 //     hierarchy, creating a tree of change records. The oaHierChangeRec class 
00063 //     is used to represent the hierachy of changes.
00064 //
00065 //    oaMarkerChangeRecType
00066 //      A wrapper class for oaMarkerChangeRecTypeEnum, providing a mapping 
00067 //      between enum value and name. 
00068 //
00069 //    oaMarkerChangeRec
00070 //      A marker change record represents an event happened in the session.
00071 //      It does not reflect changes to the data model. 
00072 //
00073 //    oaExportMarkerChangeRec
00074 //      This is class representing a marker type change record that is exported
00075 //      along with the other change records.
00076 //
00077 //    oaTransientMarkerChangeRec
00078 //      This is class representing a marker type change record that is not 
00079 //      exported. 
00080 //
00081 //    oaConvertObjectChangeRec 
00082 //      This is the class of change records created when an object of one
00083 //      type is converted into an object of another type.
00084 //
00085 //    oaChangeRecVisitor
00086 //      oaChangeRec classes supports visitor pattern for various actions on
00087 //      them. This is the interface for the visitor, which is capable of
00088 //      visiting concrete oaChangeRec nodes. It can be derived to define
00089 //      specific actions.
00090 // 
00091 // ****************************************************************************
00092 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00093 // Integration Initiative, this material may not be copied, modified,
00094 // re-published, uploaded, executed, or distributed in any way, in any medium,
00095 // in whole or in part, without prior written permission from Cadence.
00096 //
00097 //                Copyright 2009 Cadence Design Systems, Inc.
00098 //                           All Rights Reserved.
00099 //
00100 //  $Author: icftcm $
00101 //  $Revision: #1 $
00102 //  $Date: 2010/08/09 $
00103 //  $State: $
00104 // ****************************************************************************
00105 // ****************************************************************************
00106 
00107 
00108 
00109 #if !defined(oaChangeRec_P)
00110 #define oaChangeRec_P
00111 
00112 
00113 
00114 // ****************************************************************************
00115 // Nested includes
00116 // ****************************************************************************
00117 #include <vector>
00118 #include "srBase.h"
00119 #include "srVisitor.h"
00120 #include "oaArray.h"
00121 #include "oaTimeStamp.h"
00122 #include "oaCMObject.h"
00123 
00124 
00125 
00126 // *****************************************************************************
00127 // Declare and define types in the OpenAccess namespace.
00128 // *****************************************************************************
00129 BEGIN_OA_NAMESPACE
00130 
00131 
00132 
00133 // *****************************************************************************
00134 // Forward Public Class Declarations
00135 // *****************************************************************************
00136 class oaChangeSet;
00137 class oaChangeSetBase;
00138 class oaCMObjectRef;
00139 class oaCMObjectDef;
00140 class oaHierChangeRec;
00141 class oaChangeRecVisitor;
00142 
00143 
00144 
00145 // ****************************************************************************
00146 // oaMarkerChangeRecTypeEnum
00147 // ****************************************************************************
00148 #define oavNumMarkerChangeRecTypes   8
00149 
00150 enum oaMarkerChangeRecTypeEnum {
00151     oacChangeSetExportMarkerChangeRecType   = 0,
00152     oacDesignCpMarkerChangeRecType          = 1,
00153     oacDBLOOpenMarkerChangeRecType          = 2,
00154     oacDBLOSaveMarkerChangeRecType          = 3,
00155     oacDBLOSaveAsMarkerChangeRecType        = 4,
00156     oacDBLOPurgeMarkerChangeRecType         = 5,
00157     oacDBLOTruncateMarkerChangeRecType      = 6,
00158     oacTechCpMarkerChangeRecType            = 7
00159 };
00160 
00161 
00162 
00163 // *****************************************************************************
00164 // oaMarkerChangeRecType
00165 // *****************************************************************************
00166 class OA_CM_DLL_API oaMarkerChangeRecType {
00167 public:
00168                                 oaMarkerChangeRecType(oaMarkerChangeRecTypeEnum valueIn);
00169                                 oaMarkerChangeRecType(const oaString &name);
00170                                 ~oaMarkerChangeRecType();
00171 
00172     const oaString              &getName() const;
00173                                 operator                    oaMarkerChangeRecTypeEnum() const;
00174 
00175 private:
00176     oaMarkerChangeRecTypeEnum   m_value;
00177 };
00178 
00179 
00180 
00181 // ****************************************************************************
00182 // oaChangeRec
00183 // ****************************************************************************
00184 class OA_CM_DLL_API oaChangeRec {
00185 public:
00186                             oaChangeRec(oaChangeSetBase *changeSetIn);
00187     virtual                 ~oaChangeRec();
00188 
00189     virtual void            accept(oaChangeRecVisitor   *visitor,
00190                                    oaBoolean            forward = true) = 0;
00191 
00192     oaTimeStamp             getTimeStamp() const;
00193     oaChangeSetBase         *getChangeSet() const;
00194     oaHierChangeRec         *getParent() const; 
00195 
00196     void                    setParent(oaHierChangeRec *parent);
00197 
00198     virtual oaBoolean       isMarkerChangeRec() const;
00199     virtual oaBoolean       isConvertObjectChangeRec() const;
00200     virtual oaBoolean       isCreateObjectChangeRec() const;
00201     virtual oaBoolean       isDestroyObjectChangeRec() const;
00202 
00203 protected:
00204     oaUInt4                 m_flags;
00205     oaTimeStamp             m_timeStamp;
00206     oaChangeSetBase         *m_changeSet;
00207     oaHierChangeRec         *m_parent;
00208 };
00209 
00210 
00211 
00212 // ****************************************************************************
00213 // oaLeafChangeRec
00214 // ****************************************************************************
00215 class OA_CM_DLL_API oaLeafChangeRec : public oaChangeRec {
00216 public:
00217                                     oaLeafChangeRec(oaChangeSetBase *changeSetIn);
00218 
00219     oaBoolean                       isPrimary() const;
00220     void                            setIsPrimary(oaBoolean val);
00221 
00222     virtual oaCMDatabaseRef::SPtr   getDatabaseRef() const = 0;
00223 };
00224 
00225 
00226 
00227 // ****************************************************************************
00228 // oaAttributeChangeRec
00229 // ****************************************************************************
00230 class OA_CM_DLL_API oaAttributeChangeRec : public oaLeafChangeRec {
00231 public:
00232                                     oaAttributeChangeRec(oaChangeSetBase *changeSetIn);
00233 
00234     virtual oaCMObjectRef::SPtr     getOwner() const = 0;
00235     virtual const sd::sdAttribute   *getSchemaDefinition() const = 0;
00236 
00237     virtual oaCMDatabaseRef::SPtr   getDatabaseRef() const;
00238 };
00239 
00240 
00241 
00242 // ****************************************************************************
00243 // oaSetAttributeChangeRec
00244 // ****************************************************************************
00245 class OA_CM_DLL_API oaSetAttributeChangeRec : public oaAttributeChangeRec {
00246 public:
00247                                     oaSetAttributeChangeRec(oaChangeSetBase             *changeSetIn,
00248                                                             sr::srAttributeBase::SPtr   valueIn);
00249     virtual                         ~oaSetAttributeChangeRec();
00250 
00251     virtual const sd::sdAttribute   *getSchemaDefinition() const;
00252     virtual oaCMObjectRef::SPtr     getOwner() const;
00253     sr::srAttributeBase::SPtr       getValue() const;
00254 
00255     virtual void                    accept(oaChangeRecVisitor   *visitor,
00256                                            oaBoolean            forward = true);
00257 
00258 private:
00259     sr::srAttributeBase::SPtr       m_value;
00260 };
00261 
00262 
00263 
00264 // ****************************************************************************
00265 // oaUnsetAttributeChangeRec
00266 // ****************************************************************************
00267 class OA_CM_DLL_API oaUnsetAttributeChangeRec : public oaAttributeChangeRec {
00268 public:
00269                                     oaUnsetAttributeChangeRec(oaChangeSetBase       *changeSetIn,
00270                                                               oaCMObjectRef::SPtr   ownerIn,
00271                                                               sd::sdAttribute       *attrIn);
00272     virtual                         ~oaUnsetAttributeChangeRec();
00273 
00274     virtual const sd::sdAttribute   *getSchemaDefinition() const;
00275     virtual oaCMObjectRef::SPtr     getOwner() const;
00276 
00277     virtual void                    accept(oaChangeRecVisitor   *visitor,
00278                                            oaBoolean            forward = true);
00279 
00280 private:
00281     const sd::sdAttribute           *m_attr;
00282     oaCMObjectRef::SPtr             m_owner;
00283 };
00284 
00285 
00286 
00287 // ****************************************************************************
00288 // oaRelationshipChangeRec
00289 // ****************************************************************************
00290 class OA_CM_DLL_API oaRelationshipChangeRec : public oaLeafChangeRec {
00291 public:
00292                                             oaRelationshipChangeRec(oaChangeSetBase *changeSetIn);
00293 
00294     virtual oaCMObjectRef::SPtr             getFrom() const;
00295     virtual const sd::sdRelationshipBase    *getSchemaDefinition() const;
00296 
00297     virtual oaCMDatabaseRef::SPtr           getDatabaseRef() const;
00298 };
00299 
00300 
00301 
00302 // ****************************************************************************
00303 // oaCreateRelationshipChangeRec
00304 // ****************************************************************************
00305 class OA_CM_DLL_API oaCreateRelationshipChangeRec : public oaRelationshipChangeRec {
00306 public:
00307                             oaCreateRelationshipChangeRec(oaChangeSetBase *changeSetIn);
00308 };
00309 
00310 
00311 
00312 // ****************************************************************************
00313 // oaDestroyRelationshipChangeRec
00314 // ****************************************************************************
00315 class OA_CM_DLL_API oaDestroyRelationshipChangeRec : public oaRelationshipChangeRec {
00316 public:
00317                             oaDestroyRelationshipChangeRec(oaChangeSetBase *changeSetIn);
00318 };
00319 
00320 
00321 
00322 // ****************************************************************************
00323 // oaCreate1to1RelationshipChangeRec
00324 // ****************************************************************************
00325 class OA_CM_DLL_API oaCreate1to1RelationshipChangeRec : public oaCreateRelationshipChangeRec {
00326 public:
00327                                             oaCreate1to1RelationshipChangeRec(oaChangeSetBase               *changeSetIn,
00328                                                                               sr::sr1to1Relationship::SPtr  valueIn);
00329     virtual                                 ~oaCreate1to1RelationshipChangeRec();
00330 
00331     virtual const sd::sdRelationshipBase    *getSchemaDefinition() const;
00332     virtual oaCMObjectRef::SPtr             getFrom() const;
00333     sr::sr1to1Relationship::SPtr            getValue() const;
00334 
00335     virtual void                            accept(oaChangeRecVisitor   *visitor,
00336                                                    oaBoolean            forward = true);
00337 
00338 private:
00339     sr::sr1to1Relationship::SPtr            m_value;
00340 };
00341 
00342 
00343 
00344 // ****************************************************************************
00345 // oaCreate1toNRelationshipChangeRec
00346 // ****************************************************************************
00347 class OA_CM_DLL_API oaCreate1toNRelationshipChangeRec : public oaCreateRelationshipChangeRec {
00348 public:
00349                                             oaCreate1toNRelationshipChangeRec(oaChangeSetBase               *changeSetIn,
00350                                                                               sr::sr1toNRelationship::SPtr  valueIn);
00351 
00352     virtual                                 ~oaCreate1toNRelationshipChangeRec();
00353 
00354     virtual const sd::sdRelationshipBase    *getSchemaDefinition() const;
00355     virtual oaCMObjectRef::SPtr             getFrom() const;
00356     sr::sr1toNRelationship::SPtr            getValue() const;
00357 
00358     virtual void                            accept(oaChangeRecVisitor   *visitor,
00359                                                    oaBoolean            forward = true);
00360 
00361 private:
00362     sr::sr1toNRelationship::SPtr            m_value;
00363 };
00364 
00365 
00366 
00367 // ****************************************************************************
00368 // oaCreate2DTableRelationshipChangeRec
00369 // ****************************************************************************
00370 class OA_CM_DLL_API oaCreate2DTableRelationshipChangeRec : public oaCreateRelationshipChangeRec {
00371 public:
00372                                             oaCreate2DTableRelationshipChangeRec(oaChangeSetBase                *changeSetIn,
00373                                                                                  sr::srRelationshipBase::SPtr   valueIn);
00374 
00375     virtual                                 ~oaCreate2DTableRelationshipChangeRec();
00376 
00377     virtual const sd::sdRelationshipBase    *getSchemaDefinition() const;
00378     virtual oaCMObjectRef::SPtr             getFrom() const;
00379     sr::srRelationshipBase::SPtr            getValue() const;
00380 
00381     virtual void                            accept(oaChangeRecVisitor   *visitor,
00382                                                    oaBoolean            forward = true);
00383 
00384 private:
00385     sr::srRelationshipBase::SPtr            m_value;
00386 };
00387 
00388 
00389 
00390 // ****************************************************************************
00391 // oaDestroy1to1RelationshipChangeRec
00392 // ****************************************************************************
00393 class OA_CM_DLL_API oaDestroy1to1RelationshipChangeRec : public oaDestroyRelationshipChangeRec {
00394 public:
00395                                             oaDestroy1to1RelationshipChangeRec(oaChangeSetBase              *changeSetIn,
00396                                                                                sr::sr1to1Relationship::SPtr valueIn);
00397     virtual                                 ~oaDestroy1to1RelationshipChangeRec();
00398 
00399     virtual const sd::sdRelationshipBase    *getSchemaDefinition() const;
00400     virtual oaCMObjectRef::SPtr             getFrom() const;
00401     sr::sr1to1Relationship::SPtr            getValue() const;
00402 
00403     virtual void                            accept(oaChangeRecVisitor   *visitor,
00404                                                    oaBoolean            forward = true);
00405 
00406 private:
00407     sr::sr1to1Relationship::SPtr            m_origValue;
00408 };
00409 
00410 
00411 
00412 // ****************************************************************************
00413 // oaDestroy1toNRelationshipChangeRec
00414 // ****************************************************************************
00415 class OA_CM_DLL_API oaDestroy1toNRelationshipChangeRec : public oaDestroyRelationshipChangeRec {
00416 public:
00417                                             oaDestroy1toNRelationshipChangeRec(oaChangeSetBase              *changeSetIn,
00418                                                                                sr::sr1toNRelationship::SPtr valueIn);
00419     virtual                                 ~oaDestroy1toNRelationshipChangeRec();
00420 
00421     virtual const sd::sdRelationshipBase    *getSchemaDefinition() const;
00422     virtual oaCMObjectRef::SPtr             getFrom() const;
00423     sr::sr1toNRelationship::SPtr            getValue() const;
00424 
00425     virtual void                            accept(oaChangeRecVisitor   *visitor,
00426                                                    oaBoolean            forward = true);
00427 
00428 private:
00429     sr::sr1toNRelationship::SPtr            m_origValue;
00430 };
00431 
00432 
00433 
00434 // ****************************************************************************
00435 // oaDestroy2DTableRelationshipChangeRec
00436 // ****************************************************************************
00437 class OA_CM_DLL_API oaDestroy2DTableRelationshipChangeRec : public oaDestroyRelationshipChangeRec {
00438 public:
00439                                             oaDestroy2DTableRelationshipChangeRec(oaChangeSetBase               *changeSetIn,
00440                                                                                   sr::srRelationshipBase::SPtr  valueIn);
00441     virtual                                 ~oaDestroy2DTableRelationshipChangeRec();
00442 
00443     virtual const sd::sdRelationshipBase    *getSchemaDefinition() const;
00444     virtual oaCMObjectRef::SPtr             getFrom() const;
00445     sr::srRelationshipBase::SPtr            getValue() const;
00446 
00447     virtual void                            accept(oaChangeRecVisitor   *visitor,
00448                                                    oaBoolean            forward = true);
00449 
00450 private:
00451     sr::srRelationshipBase::SPtr            m_origValue;
00452 };
00453 
00454 
00455 
00456 
00457 // ****************************************************************************
00458 // oaObjectChangeRec
00459 // ****************************************************************************
00460 class OA_CM_DLL_API oaObjectChangeRec : public oaLeafChangeRec {
00461 public:
00462                                     oaObjectChangeRec(oaChangeSetBase       *changeSetIn,
00463                                                       oaCMObjectRef::SPtr   objectRefIn);
00464     virtual                         ~oaObjectChangeRec();
00465 
00466     oaCMObjectRef::SPtr             getObject() const;
00467     const sd::sdObject              *getSchemaDefinition() const;
00468 
00469     virtual oaCMDatabaseRef::SPtr   getDatabaseRef() const;
00470 
00471 private:
00472     oaCMObjectRef::SPtr             m_objectRef;
00473 };
00474 
00475 
00476 
00477 // ****************************************************************************
00478 // oaCreateObjectChangeRec
00479 // ****************************************************************************
00480 class OA_CM_DLL_API oaCreateObjectChangeRec : public oaObjectChangeRec {
00481 public:
00482                                 oaCreateObjectChangeRec(oaChangeSetBase             *changeSet,
00483                                                         oaCMObjectRef::SPtr         objectRef,
00484                                                         oaCMObjectStateEntry::SPtr  objectState);
00485     virtual                     ~oaCreateObjectChangeRec();
00486 
00487     oaCMObjectStateEntry::SPtr  getObjectStateEntry() const;
00488     oaCMObjectStateEntry::SPtr  setObjectStateEntry(oaCMObjectStateEntry::SPtr objectState);
00489     virtual oaBoolean           isCreateObjectChangeRec() const;
00490 
00491     virtual void                accept(oaChangeRecVisitor   *visitor,
00492                                        oaBoolean            forward = true);
00493 
00494 private:
00495     oaCMObjectStateEntry::SPtr  m_objectState;
00496 };
00497 
00498 
00499 
00500 // ****************************************************************************
00501 // oaDestroyObjectChangeRec
00502 // ****************************************************************************
00503 class oaDestroyObjectChangeRec : public oaObjectChangeRec {
00504 public:
00505                             oaDestroyObjectChangeRec(oaChangeSetBase        *changeSetIn,
00506                                                      oaCMObjectRef::SPtr    objectRefIn);
00507 
00508     virtual oaBoolean       isDestroyObjectChangeRec() const;
00509 
00510     virtual void            accept(oaChangeRecVisitor   *visitor,
00511                                    oaBoolean            forward = true);
00512 };
00513 
00514 
00515 
00516 // **************************************************************************** 
00517 // oaConvertObjectChangeRec 
00518 //*****************************************************************************
00519 class OA_CM_DLL_API oaConvertObjectChangeRec : public oaObjectChangeRec {
00520 public:
00521                                 oaConvertObjectChangeRec(oaChangeSetBase        *changeSetIn,
00522                                                          oaCMObjectRef::SPtr    objRef,
00523                                                          oaCMObjectRef::SPtr    convObjRef);
00524 
00525     oaCMObjectRef::SPtr         getConvertedToObject() const;
00526     void                        setConvertedToObject(const oaCMObjectRef::SPtr          convObjRef,
00527                                                      const oaCMObjectStateEntry::SPtr   convObjState);
00528 
00529     oaCMObjectStateEntry::SPtr  getObjectStateEntry() const;
00530 
00531     virtual void                accept(oaChangeRecVisitor   *visitor,
00532                                        oaBoolean            forward = true);
00533 
00534     virtual oaBoolean           isConvertObjectChangeRec() const;
00535 
00536 private:
00537     oaCMObjectRef::SPtr         m_convObjRef;
00538     oaCMObjectStateEntry::SPtr  m_objectState;
00539 };
00540 
00541 
00542 
00543 // ****************************************************************************
00544 // oaHierChangeRec
00545 // ****************************************************************************
00546 class OA_CM_DLL_API oaHierChangeRec : public oaChangeRec {
00547 public:
00548     typedef std::vector<oaChangeRec*>               ChangeRecVector;
00549     typedef ChangeRecVector::const_iterator         ChangeRecsConstIter;
00550     typedef ChangeRecVector::iterator               ChangeRecsIter;
00551     typedef ChangeRecVector::const_reverse_iterator ConstReverseIter;
00552     typedef ChangeRecVector::reverse_iterator       ReverseIter;
00553 
00554                                                     oaHierChangeRec(oaChangeSetBase *changeSetIn);
00555     virtual                                         ~oaHierChangeRec();
00556 
00557     virtual void                                    accept(oaChangeRecVisitor   *visitor,
00558                                                            oaBoolean            forward = true);
00559 
00560     oaLeafChangeRec                                 *getPrimary() const;
00561     void                                            setPrimary(oaLeafChangeRec *primary);
00562 
00563     ChangeRecsConstIter                             beginChild() const;
00564     ChangeRecsConstIter                             endChild() const;
00565 
00566     ChangeRecsIter                                  beginChild();
00567     ChangeRecsIter                                  endChild();
00568 
00569     ConstReverseIter                                rbeginChild() const;
00570     ConstReverseIter                                rendChild() const;
00571 
00572     ReverseIter                                     rbeginChild();
00573     ReverseIter                                     rendChild();
00574 
00575     void                                            addChild(oaChangeRec *child);
00576     void                                            removeChild(oaChangeRec *child);
00577 
00578     oaBoolean                                       isCollapsible() const;
00579 
00580 private:
00581     oaLeafChangeRec                                 *m_primary;
00582     ChangeRecVector                                 m_children;
00583 };
00584 
00585 
00586 
00587 // ****************************************************************************
00588 // oaMarkerChangeRec
00589 // ****************************************************************************
00590 class OA_CM_DLL_API oaMarkerChangeRec : public oaLeafChangeRec {
00591 public:
00592                                     oaMarkerChangeRec(oaChangeSetBase           *changeSetIn,
00593                                                       oaMarkerChangeRecTypeEnum typeIn,
00594                                                       oaCMDatabaseRef::SPtr     dbRef);
00595 
00596     virtual                         ~oaMarkerChangeRec();
00597 
00598     virtual oaMarkerChangeRec       *clone() = 0;
00599 
00600     virtual void                    accept(oaChangeRecVisitor   *visitor,
00601                                            oaBoolean            forward = true) = 0;
00602 
00603     virtual oaBoolean               isMarkerChangeRec() const;
00604 
00605     oaMarkerChangeRecType           getType() const;
00606     virtual oaCMDatabaseRef::SPtr   getDatabaseRef() const;
00607 
00608     void                            setDatabaseRef(oaCMDatabaseRef::SPtr dbRef);
00609 
00610 private:
00611     oaMarkerChangeRecType           m_type;
00612     oaCMDatabaseRef::SPtr           m_db;
00613 };
00614 
00615 
00616 
00617 // ****************************************************************************
00618 // oaExportMarkerChangeRec
00619 // ****************************************************************************
00620 class OA_CM_DLL_API oaExportMarkerChangeRec : public oaMarkerChangeRec {
00621 public:
00622                                 oaExportMarkerChangeRec(oaChangeSetBase             *changeSetIn,
00623                                                         oaMarkerChangeRecTypeEnum   typeIn,
00624                                                         oaCMDatabaseRef::SPtr       dbRef);
00625 
00626     virtual oaMarkerChangeRec   *clone();
00627 
00628     virtual void                accept(oaChangeRecVisitor   *visitor,
00629                                        oaBoolean            forward = true);
00630 
00631     oaString                    getMessage() const;
00632     void                        setMessage(const oaString &msg);
00633 
00634 private:
00635     oaString                    m_message;
00636 };
00637 
00638 
00639 
00640 // ****************************************************************************
00641 // oaTransientMarkerChangeRec
00642 // ****************************************************************************
00643 class OA_CM_DLL_API oaTransientMarkerChangeRec : public oaMarkerChangeRec {
00644 public:
00645                                 oaTransientMarkerChangeRec(oaChangeSetBase              *changeSetIn,
00646                                                            oaMarkerChangeRecTypeEnum    typeIn,
00647                                                            oaCMDatabaseRef::SPtr        dbRef);
00648 
00649     virtual oaMarkerChangeRec   *clone();
00650     virtual void                accept(oaChangeRecVisitor   *visitor,
00651                                        oaBoolean            forward = true);
00652 };
00653 
00654 
00655 
00656 // ****************************************************************************
00657 // oaChangeRecVisitor Interface
00658 // ****************************************************************************
00659 class OA_CM_DLL_API oaChangeRecVisitor {
00660 public:
00661     virtual void            visit(oaHierChangeRec *node) = 0;
00662     virtual void            visit(oaExportMarkerChangeRec *node) = 0;
00663     virtual void            visit(oaTransientMarkerChangeRec *node) = 0;
00664 
00665     virtual void            visit(oaSetAttributeChangeRec *node) = 0;
00666     virtual void            visit(oaUnsetAttributeChangeRec *node) = 0;
00667     virtual void            visit(oaCreate1to1RelationshipChangeRec *node) = 0;
00668     virtual void            visit(oaCreate1toNRelationshipChangeRec *node) = 0;
00669     virtual void            visit(oaCreate2DTableRelationshipChangeRec *node) = 0;
00670 
00671     virtual void            visit(oaDestroy1to1RelationshipChangeRec *node) = 0;
00672     virtual void            visit(oaDestroy1toNRelationshipChangeRec *node) = 0;
00673     virtual void            visit(oaDestroy2DTableRelationshipChangeRec *node) = 0;
00674 
00675     virtual void            visit(oaCreateObjectChangeRec *node) = 0;
00676     virtual void            visit(oaDestroyObjectChangeRec *node) = 0;
00677     virtual void            visit(oaConvertObjectChangeRec *node) = 0;
00678 
00679     virtual oaBoolean       startHier(oaHierChangeRec *node) = 0;
00680     virtual void            endHier(oaHierChangeRec *node) = 0;
00681 };
00682 
00683 
00684 
00685 END_OA_NAMESPACE
00686 
00687 #endif

Return to top of page