oaOccProducer.h

Go to the documentation of this file.
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

Return to top of page