sdSession.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // sdSession.h
00004 //
00005 // This file contains the definition for the following classes.
00006 //
00007 //  sdSession
00008 //      This class represents a singleton session schema manager and manages
00009 //      the sdNameSpace objects in a session.
00010 //
00011 // *****************************************************************************
00012 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00013 // Integration Initiative, this material may not be copied, modified,
00014 // re-published, uploaded, executed, or distributed in any way, in any medium,
00015 // in whole or in part, without prior written permission from Cadence.
00016 //
00017 //                Copyright 2007 Cadence Design Systems, Inc.
00018 //                           All Rights Reserved.
00019 //
00020 //  $Author: icftcm $
00021 //  $Revision: #1 $
00022 //  $Date: 2007/03/20 $
00023 //  $State: Exp $
00024 // *****************************************************************************
00025 // *****************************************************************************
00026 
00027 
00028 
00029 #if !defined(sdSession_P)
00030 #define sdSession_P
00031 
00032 
00033 
00034 // *****************************************************************************
00035 // Nested includes
00036 // *****************************************************************************
00037 #include <vector>
00038 #include <map>
00039 #include "sdBaseTypes.h"
00040 
00041 
00042 
00043 // *****************************************************************************
00044 // Declare and define types in the schema definition namespace.
00045 // *****************************************************************************
00046 BEGIN_SD_NAMESPACE
00047 
00048 
00049 
00050 // *****************************************************************************
00051 // Forward Public Class Declarations
00052 // *****************************************************************************
00053 class sdNameSpace;
00054 
00055 
00056 
00057 // *****************************************************************************
00058 // sdSession
00059 // *****************************************************************************
00060 class SD_DLL_API sdSession {
00061 public:
00062     typedef std::vector<const sdNameSpace*>     NameSpaceVector;                
00063     typedef NameSpaceVector::const_iterator     NameSpaceConstIter;
00064 
00065     sdNameSpace                                 *getNameSpace(const std::string &name) const;
00066     void                                        destroyContents(sdNameSpace *nameSpace);
00067 
00068     NameSpaceConstIter                          begin() const;
00069     NameSpaceConstIter                          end() const;
00070 
00071     static sdSession                            *get();
00072 
00073 private:
00074     typedef std::map<std::string, sdNameSpace*> NameSpaceMap;
00075 
00076                                                 sdSession();
00077                                                 ~sdSession();
00078 
00079     void                                        addNameSpace(sdNameSpace *nameSpace);
00080     void                                        removeNameSpace(sdNameSpace *nameSpace);
00081 
00082     bool                                        isReferenced(sdNameSpace *nameSpace) const;
00083 
00084     NameSpaceVector                             m_nameSpaceVector;
00085     NameSpaceMap                                m_nameSpaceMap;
00086     static sdSession                            *s_session;
00087 
00088     friend class sdNameSpace;
00089 };
00090 
00091 
00092 
00093 END_SD_NAMESPACE
00094 
00095 #endif

Return to top of page