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