00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaOccProducer.h 00004 // 00005 // This file contains the declaration for the oaOccProducer class. This class 00006 // implements an occurrence producer for connectivity objects in the 00007 // occurrence domain. Capabilities it supports include: 00008 // 00009 // * a virtual produce() method initiates the producer. Overriding the produce 00010 // function in a derivation class will enable custom ordering for the process*() 00011 // set of functions. 00012 // * header filtering by overriding the startInstHeader or 00013 // startModuleInstHeader set of functions 00014 // * the virtual functions process*() are called 00015 // for connectivity objects of a specific type. Applications deriving from 00016 // the oaOccProducer class will need to override a subset of the process*() 00017 // set of functions. 00018 // ***************************************************************************** 00019 // Except as specified in the OpenAccess terms of use of Cadence or Silicon 00020 // Integration Initiative, this material may not be copied, modified, 00021 // re-published, uploaded, executed, or distributed in any way, in any medium, 00022 // in whole or in part, without prior written permission from Cadence. 00023 // 00024 // Copyright 2009-2009 Cadence Design Systems, Inc. 00025 // All Rights Reserved. 00026 // 00027 // $Author: rursu $ 00028 // $Revision: #7 $ 00029 // $Date: 2008/08/29 $ 00030 // $State: Exp $ 00031 // ***************************************************************************** 00032 // ***************************************************************************** 00033 00034 00035 00036 #if !defined(oaOccProducer_P) 00037 #define oaOccProducer_P 00038 00039 00040 00041 // ***************************************************************************** 00042 // Nested includes 00043 // ***************************************************************************** 00044 #include "oaOccVectorInstDef.h" 00045 #include "oaOccInstHeader.h" 00046 #include "oaOccModuleInstHeader.h" 00047 #include "oaOccBusNetDef.h" 00048 #include "oaOccInstTerm.h" 00049 #include "oaOccBusTermDef.h" 00050 #include "oaOccConnectDef.h" 00051 #include "oaOccAssignment.h" 00052 00053 00054 00055 // ***************************************************************************** 00056 // Declare and define types in the OpenAccess namespace. 00057 // ***************************************************************************** 00058 BEGIN_OA_NAMESPACE 00059 00060 00061 00062 // ***************************************************************************** 00063 // oaOccProducer 00064 // ***************************************************************************** 00065 class OA_DESIGN_DLL_API oaOccProducer { 00066 public: 00067 oaOccProducer(oaOccurrence *occ); 00068 virtual ~oaOccProducer(); 00069 00070 oaOccurrence * getOccurrence(); 00071 void setOccurrence(oaOccurrence *occ); 00072 00073 virtual void produce(); 00074 00075 virtual void processOccurrence(oaOccurrence *occ); 00076 virtual void processInst(oaOccInst *inst); 00077 virtual void processNet(oaOccNet *net); 00078 virtual void processBusNetDef(oaOccBusNetDef *def); 00079 virtual void processTerm(oaOccTerm *term); 00080 virtual void processBusTermDef(oaOccBusTermDef *def); 00081 virtual void processInstTerm(oaOccInstTerm *instTerm); 00082 virtual void processVectorInstDef(oaOccVectorInstDef *def); 00083 virtual void processInstHeader(oaOccInstHeader *ih); 00084 virtual void processModuleInstHeader(oaOccModuleInstHeader *modIH); 00085 virtual void processAssignment(oaOccAssignment *assign); 00086 virtual void processConnectDef(oaOccConnectDef *connectDef); 00087 00088 virtual oaBoolean startInstHeader(oaOccInstHeader *ih); 00089 virtual void endInstHeader(oaOccInstHeader *ih); 00090 virtual oaBoolean startModuleInstHeader(oaOccModuleInstHeader *modIH); 00091 virtual void endModuleInstHeader(oaOccModuleInstHeader *modIH); 00092 00093 protected: 00094 void produceInsts(); 00095 void produceNets(); 00096 void produceBusNetDefs(); 00097 void produceTerms(); 00098 void produceBusTermDefs(); 00099 void produceInstTerms(); 00100 void produceVectorInstDefs(); 00101 void produceInstHeaders(); 00102 void produceModuleInstHeaders(); 00103 void produceAssignments(); 00104 void produceConnectDefs(); 00105 00106 oaOccTraverserPvt *prod; 00107 }; 00108 00109 00110 00111 END_OA_NAMESPACE 00112 00113 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.