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
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.