[GME-commit] GMESRC/GME/Core CoreXmlFile.cpp,1.1,1.2 CoreXmlFile.h,1.1,1.2

gme-commit at list.isis.vanderbilt.edu gme-commit at list.isis.vanderbilt.edu
Tue May 11 12:29:44 CDT 2004


Update of /var/lib/gme/GMESRC/GME/Core
In directory braindrain:/tmp/cvs-serv10466

Modified Files:
	CoreXmlFile.cpp CoreXmlFile.h 
Log Message:
no message

CVS User: bogyom

Index: CoreXmlFile.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Core/CoreXmlFile.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** CoreXmlFile.cpp	3 May 2004 19:16:49 -0000	1.1
--- CoreXmlFile.cpp	11 May 2004 16:29:41 -0000	1.2
***************
*** 1,11 ****
- 
  #include "stdafx.h"
  #include <io.h>
  #include <stdlib.h>
! #include <util/PlatformUtils.hpp>
! #include <dom/DOM_NamedNodeMap.hpp>
  #include "CoreXmlFile.h"
  #include "CommonCollection.h"
  
  void bin2string( const unsigned char * bytes, int len, string& str )
[...2255 lines suppressed...]
!         fprintf(f,"guid=\"%s\">\n", guidStr.c_str() );
!         for( AttribMapIter it2 = obj->m_attributes.begin(); it2 != obj->m_attributes.end(); ++it2 )
!         {
!             XmlAttrBase * attr = it2->second;
!             if( attr->getType() == VALTYPE_POINTER && ((XmlAttrPointer*)attr)->m_parentGUID != GUID_NULL )
!             {
!                 guid2str( ((XmlAttrPointer*)attr)->m_parentGUID, guidStr );
!                 fprintf(f,"\t\t<pointer id=\"%d\" guid=\"%s\"/>\n", attr->m_attrId, guidStr.c_str() );
!             }
!         }
!         if( root )
!             fprintf(f,"\t</root>\n");
!         else
!             fprintf(f,"\t</object>\n");
!     }    
!     fprintf(f,"</cache>");
  
!     fclose(f);
  }
+ 

Index: CoreXmlFile.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Core/CoreXmlFile.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** CoreXmlFile.h	3 May 2004 19:16:49 -0000	1.1
--- CoreXmlFile.h	11 May 2004 16:29:41 -0000	1.2
***************
*** 1,343 ****
- 
  #ifndef MGA_COREXMLFILE_H
  #define MGA_COREXMLFILE_H
  
  #include <fstream.h>
! #include <slist>
  #include <map>
  #include <hash_map>
! #include <parsers/DOMParser.hpp>
  #include "..\Mga\MgaGeneric.h"
  
! class CCoreXmlFile;
  
! const metaobjidpair_type null_objid = {METAID_NONE, METAID_NONE};
! const GUID null_guid = {0,0,0,{0,0,0,0,0,0,0,0}};
  
! void bin2string( const unsigned char * bytes, int len, string& str );
! void string2bin( const char * str, unsigned char * bytes );
  
- // --------------------------- XmlAttr
  
  class XmlAttrBase
  {
  public:
!     attrid_type attrid;
  
! 	                     XmlAttrBase () : attrid(ATTRID_NONE) { }
! 	virtual             ~XmlAttrBase () { }
  
- 	static XmlAttrBase * Create      (valtype_type valtype);
  
! 	virtual valtype_type GetValType  () const NOTHROW = 0;
! 	virtual void         Set         (CCoreXmlFile *binfile, VARIANT p) = 0;
! 	virtual void         Get         (CCoreXmlFile *binfile, VARIANT *p) const = 0;
!     virtual void         ToString    (string& str) const = 0;
!     virtual void         FromString  (const char * str) = 0;
  };
  
! typedef slist<XmlAttrBase*>     xmlattrs_type;
! typedef xmlattrs_type::iterator xmlattrs_iterator;
  
- template<int VALTYPE>
- class XmlAttr;
  
! // --------------------------- XmlObject
  
! class XmlObject
  {
  public:
!     xmlattrs_type      xmlattrs;
! 	bool               deleted;
!     metaobjidpair_type parent;
!     GUID               guid;
  
!                     XmlObject           ();
! 	               ~XmlObject           ();
! 	
! 	void            CreateAttributes    (ICoreMetaObject *metaobject);
! 	void            DestroyAttributes   ();
!     XmlAttrBase *   FindAttribute       (attrid_type attrid);
  };
  
! typedef hash_map<metaobjidpair_type, XmlObject,
! 	metaobjidpair_hashfunc, metaobjidpair_equalkey> xmlobjects_type;
! typedef xmlobjects_type::iterator                   xmlobjects_iterator;
! typedef map<metaid_type,attrid_type>                parentmap_type;
! 
! extern xmlobjects_iterator no_xmlobject;
! 
! // --------------------------- CCoreXmlFile
  
! class ATL_NO_VTABLE CCoreXmlFile : 
! 	public CComObjectRootEx<CComSingleThreadModel>,
! 	public IDispatchImpl<ICoreStorage, &IID_ICoreStorage, &LIBID_CORELib>,
! 	public ISupportErrorInfoImpl<&IID_ICoreStorage>,
! 	public CComCoClass<CCoreXmlFile, &CLSID_CoreBinFile>
  {
  public:
! 	CCoreXmlFile();
! 	~CCoreXmlFile();
! 
! BEGIN_COM_MAP(CCoreXmlFile)
! 	COM_INTERFACE_ENTRY(ICoreStorage)
! 	COM_INTERFACE_ENTRY(IDispatch)
! 	COM_INTERFACE_ENTRY(ISupportErrorInfo)
! END_COM_MAP()
! 
! DECLARE_REGISTRY_RESOURCEID(IDR_COREXMLFILE)
! 
! // ------- MetaProject
! 
! public:
! 	CComObjPtr<ICoreMetaProject> metaproject;
! 	bindata metaprojectid;
! 
! 	STDMETHODIMP get_MetaProject(ICoreMetaProject **p);
! 	STDMETHODIMP put_MetaProject(ICoreMetaProject *p);
! 
! 	void OpenMetaProject();
! 	void CloseMetaProject() NOTHROW;
! 
! // ------- MetaObject
! 
! public:
! 	CComObjPtr<ICoreMetaObject> metaobject;
! 	metaid_type metaid;
! 
! 	STDMETHODIMP get_MetaObject(ICoreMetaObject **p);
! 	STDMETHODIMP put_MetaObject(ICoreMetaObject *p);
! 
! 	STDMETHODIMP get_MetaID(metaid_type *p);
! 	STDMETHODIMP put_MetaID(metaid_type p);
  
! 	void OpenMetaObject();
! 	void CloseMetaObject() NOTHROW;
  
! // ------- MetaAttribute
  
  public:
! 	CComObjPtr<ICoreMetaAttribute> metaattribute;
! 	attrid_type attrid;
! 
! 	STDMETHODIMP get_MetaAttribute(ICoreMetaAttribute **p);
! 	STDMETHODIMP put_MetaAttribute(ICoreMetaAttribute *p);
! 
! 	STDMETHODIMP get_AttrID(attrid_type *p);
! 	STDMETHODIMP put_AttrID(attrid_type p);
! 
! 	void OpenMetaAttribute();
! 	void CloseMetaAttribute() NOTHROW;
  
! // ------- Attribute
  
  public:
! 	typedef hash_map< XmlAttrBase*, CComVariant, 
! 		ptr_hashfunc<XmlAttrBase>, ptr_equalkey<XmlAttrBase> > undos_type;
! 	typedef undos_type::iterator undos_iterator;
! 
! 	undos_type undos;
! 
! 	STDMETHODIMP get_AttributeValue(VARIANT *p);
! 	STDMETHODIMP put_AttributeValue(VARIANT p);
  
! // ------- Object
  
  public:
! 	xmlobjects_type     objects;
! 	xmlobjects_iterator opened_object;
! 
! 	//typedef hash_map<metaid_type, objid_type> maxobjids_type;
! 	//typedef maxobjids_type::iterator maxobjids_iterator;
! 
! 	//maxobjids_type maxobjids;
!     int nextobjid;
! 
! 	slist<xmlobjects_iterator> deleted_objects;
! 	slist<xmlobjects_iterator> created_objects;
! 
! 	struct resolve_type
! 	{
! 		xmlobjects_iterator obj;
! 		attrid_type attrid;
! 		metaobjidpair_type idpair;
! 	};
! 
! 	typedef slist<resolve_type> resolvelist_type;
! 	resolvelist_type resolvelist;
! 
! 	void InitObjID();
  
! public:
! 	STDMETHODIMP OpenObject(objid_type objid);
! 	STDMETHODIMP CreateObject(objid_type *objid);
! 	STDMETHODIMP CloseObject() NOTHROW;
  
! 	STDMETHODIMP DeleteObject();
! 	STDMETHODIMP LockObject();
!     
! // ------- Project
  
  public:
! 	string filename;    // holds the root file name without extension
!     string filePath;    // holds the path
! 	bool   read_only;
! 	bool   intrans;
! 	bool   modified;
  
!     void FillFileNameAndPath(BSTR connection); 
  
! 	bool IsOpened() const { return !filename.empty(); }
! 	bool InTransaction() const { return intrans; }
  
! 	void CancelProject() NOTHROW;
! 	void SaveProject();
! 	void LoadProject();
  
  public:
! 	STDMETHODIMP OpenProject(BSTR connection, VARIANT_BOOL *ro_mode);
! 	STDMETHODIMP CreateProject(BSTR connection);
! 	STDMETHODIMP CloseProject( VARIANT_BOOL abort = VARIANT_FALSE) NOTHROW;
! 	STDMETHODIMP SaveProject(BSTR connection, VARIANT_BOOL keepoldname);
! 	STDMETHODIMP DeleteProject() { return E_NOTIMPL; }
! 
! 	STDMETHODIMP BeginTransaction();
! 	STDMETHODIMP CommitTransaction();
! 	STDMETHODIMP AbortTransaction();
! 
! 	STDMETHODIMP get_StorageType(long *p);
! 
  protected:
!     parentmap_type  parentmap;
  
!     void ReadObject         ( DOM_Element * element );
!     void WriteObject        ( FILE * file, string indent, xmlobjects_iterator it );
!     void FillParentMap      ();
!     void SetParents         ();
!     void SetPointers        ();
!     void SetCollections     ();
  };
  
- // --------------------------- XmlAttr<VALTYPE_LONG>
  
! template<>
! class XmlAttr<VALTYPE_LONG> : public XmlAttrBase
  {
  public:
! 	XmlAttr() : a(0) { }
! 
! 	long a;
  
! 	virtual valtype_type GetValType() const NOTHROW { return VALTYPE_LONG; }
! 	virtual void Set(CCoreXmlFile *binfile, VARIANT p)
! 	    { ASSERT( binfile != NULL ); binfile->modified = true; CopyTo(p, a); }
  
! 	virtual void Get         (CCoreXmlFile *binfile, VARIANT *p) const { CopyTo(a, p); }
!     virtual void ToString    (string& str) const;
!     virtual void FromString  (const char * str);
! };
  
! // --------------------------- XmlAttr<VALTYPE_REAL>
  
! template<>
! class XmlAttr<VALTYPE_REAL> : public XmlAttrBase
! {
! public:
! 	XmlAttr() : a(0) { }
  
! 	double a;
  
! 	virtual valtype_type GetValType() const NOTHROW { return VALTYPE_REAL; }
! 	virtual void Set(CCoreXmlFile *binfile, VARIANT p)
! 	{ ASSERT( binfile != NULL ); binfile->modified = true; CopyTo(p, a); }
  
- 	virtual void Get         (CCoreXmlFile *binfile, VARIANT *p) const { CopyTo(a, p); }
-     virtual void ToString    (string& str) const;
-     virtual void FromString  (const char * str);
- };
  
! // --------------------------- XmlAttr<VALTYPE_STRING>
  
- template<>
- class XmlAttr<VALTYPE_STRING> : public XmlAttrBase
- {
- public:
- 	CComBstrObj a;
  
- 	virtual valtype_type GetValType() const NOTHROW { return VALTYPE_STRING; }
- 	virtual void Set(CCoreXmlFile *binfile, VARIANT p)
- 	{ ASSERT( binfile != NULL ); binfile->modified = true; CopyTo(p, a); }
  
! 	virtual void Get         (CCoreXmlFile *binfile, VARIANT *p) const { CopyTo(a, p); }
!     virtual void ToString    (string& str) const { CopyTo(a, str); }
!     virtual void FromString  (const char * str)  { CopyTo(str, a); }
! };
  
! // --------------------------- XmlAttr<VALTYPE_BINARY>
  
! template<>
! class XmlAttr<VALTYPE_BINARY> : public XmlAttrBase
! {
! public:
! 	bindata a;
  
- 	virtual valtype_type GetValType() const NOTHROW { return VALTYPE_BINARY; }
- 	virtual void Set(CCoreXmlFile *binfile, VARIANT p)
- 	{ ASSERT( binfile != NULL ); binfile->modified = true; CopyTo(p, a); }
  
! 	virtual void Get         (CCoreXmlFile *binfile, VARIANT *p) const { CopyTo(a, p); }
!     virtual void ToString    (string& str) const;
!     virtual void FromString  (const char * str);
! };
  
! // --------------------------- XmlAttr<VALTYPE_LOCK>
  
! template<>
! class XmlAttr<VALTYPE_LOCK> : public XmlAttrBase
  {
  public:
! 	XmlAttr() : a(0) { }
! 
! 	lockval_type a;
  
! 	virtual valtype_type GetValType() const NOTHROW { return VALTYPE_LOCK; }
! 	virtual void Set         (CCoreXmlFile *binfile, VARIANT p) { CopyTo(p, a); }
! 	virtual void Get         (CCoreXmlFile *binfile, VARIANT *p) const { CopyTo(a, p); }
!     virtual void ToString    (string& str) const {}         // TODO
!     virtual void FromString  (const char * str) { a = 0; }  // TODO
! };
  
! // --------------------------- XmlAttr<VALTYPE_POINTER>
  
- template<>
- class XmlAttr<VALTYPE_POINTER> : public XmlAttrBase
- {
  public:
! 	XmlAttr() : a(no_xmlobject) { }
  
! 	xmlobjects_iterator a;
!     GUID                refered_objid;
  
! 	virtual valtype_type GetValType() const NOTHROW { return VALTYPE_POINTER; }
! 	void Set(CCoreXmlFile *binfile, xmlobjects_iterator a);
! 	virtual void Set         (CCoreXmlFile *binfile, VARIANT p);
! 	virtual void Get         (CCoreXmlFile *binfile, VARIANT *p) const;
!     virtual void ToString    (string& str) const;
!     virtual void FromString  (const char * str);
! };
  
! // --------------------------- XmlAttr<VALTYPE_COLLECTION>
  
! template<>
! class XmlAttr<VALTYPE_COLLECTION> : public XmlAttrBase
! {
! public:
! 	vector<xmlobjects_iterator> a;
  
- 	virtual valtype_type GetValType() const NOTHROW { return VALTYPE_COLLECTION; }
- 	virtual void Set         (CCoreXmlFile *binfile, VARIANT p) { ASSERT(false); }
- 	virtual void Get         (CCoreXmlFile *binfile, VARIANT *p) const;
-     virtual void ToString    (string& str) const;
-     virtual void FromString  (const char * str);
  };
  
--- 1,346 ----
  #ifndef MGA_COREXMLFILE_H
  #define MGA_COREXMLFILE_H
  
+ #include "resource.h"
  #include <fstream.h>
! #include <list>
  #include <map>
  #include <hash_map>
! #include <set>
! //#include <parsers/DOMParser.hpp>
  #include "..\Mga\MgaGeneric.h"
  
! const metaobjidpair_type ROOT_ID_PAIR = {METAID_ROOT, OBJID_ROOT};
  
! struct GUID_less
! {
! 	bool operator()(const GUID& a, const GUID& b) const
! 	{
!         if( a.Data1 < b.Data1 )
!             return true;
!         else if( a.Data1 > b.Data1 )
!             return false;
!         else
!         {
!             DWORD * adw = (DWORD*)&a;
!             DWORD * bdw = (DWORD*)&b;
!             if( *(adw+1) < *(bdw+1) )
!                 return true;
!             else if( *(adw+1) > *(bdw+1) )
!                 return false;
!             else if( *(adw+2) < *(bdw+2) )
!                 return true;
!             else if( *(adw+2) > *(bdw+2) )
!                 return false;
!             else if( *(adw+3) < *(bdw+3) )
!                 return true;
!             else 
!                 return false;
!         }
! 	}
! };
  
! typedef vector<GUID>        GUIDVec;
! typedef GUIDVec::iterator   GUIDVecIter;
! typedef set<GUID,GUID_less> GUIDSet;
! typedef GUIDSet::iterator   GUIDSetIter;
  
  
+ ////////////////////////////////////////////////////////////////////////////////
+ // XmlAttrBase class
+ ////////////////////////////////////////////////////////////////////////////////
  class XmlAttrBase
  {
  public:
!     static XmlAttrBase * create      (valtype_type type);
  
!                          XmlAttrBase ();
!     virtual             ~XmlAttrBase ();
  
  
!     virtual valtype_type getType     () const            = 0;
!     virtual void         fromVariant (VARIANT p)         = 0;
! 	virtual void         toVariant   (VARIANT *p) const  = 0;
!     virtual void         fromString  (const char * str)  = 0;
!     virtual void         toString    (string& str) const = 0;
! 
!     attrid_type     m_attrId;
  };
  
! typedef map<attrid_type,XmlAttrBase*>   AttribMap;
! typedef AttribMap::iterator             AttribMapIter;
  
  
! ////////////////////////////////////////////////////////////////////////////////
! // XmlAttrLong class
! ////////////////////////////////////////////////////////////////////////////////
  
! class XmlAttrLong: public XmlAttrBase
  {
  public:
!                          XmlAttrLong ();
  
!     virtual valtype_type getType     () const;
!     virtual void         fromVariant (VARIANT p);
! 	virtual void         toVariant   (VARIANT *p) const;
!     virtual void         fromString  (const char * str);
!     virtual void         toString    (string& str) const;
! protected:
!     long    m_value;
  };
  
! ////////////////////////////////////////////////////////////////////////////////
! // XmlAttrReal class
! ////////////////////////////////////////////////////////////////////////////////
  
! class XmlAttrReal: public XmlAttrBase
  {
  public:
!                          XmlAttrReal ();
  
!     virtual valtype_type getType     () const;
!     virtual void         fromVariant (VARIANT p);
! 	virtual void         toVariant   (VARIANT *p) const;
!     virtual void         fromString  (const char * str);
!     virtual void         toString    (string& str) const;
! protected:
!     double  m_value;
! };
  
! ////////////////////////////////////////////////////////////////////////////////
! // XmlAttrString class
! ////////////////////////////////////////////////////////////////////////////////
  
+ class XmlAttrString: public XmlAttrBase
+ {
  public:
!     virtual valtype_type getType     () const;
!     virtual void         fromVariant (VARIANT p);
! 	virtual void         toVariant   (VARIANT *p) const;
!     virtual void         fromString  (const char * str);
!     virtual void         toString    (string& str) const;
! protected:
!     string  m_value;
! };
  
! ////////////////////////////////////////////////////////////////////////////////
! // XmlAttrBinary class
! ////////////////////////////////////////////////////////////////////////////////
  
+ class XmlAttrBinary: public XmlAttrBase
+ {
  public:
!     virtual valtype_type getType     () const;
!     virtual void         fromVariant (VARIANT p);
! 	virtual void         toVariant   (VARIANT *p) const;
!     virtual void         fromString  (const char * str);
!     virtual void         toString    (string& str) const;
! protected:
!     bindata m_value;
! };
  
! ////////////////////////////////////////////////////////////////////////////////
! // XmlAttrLock class
! ////////////////////////////////////////////////////////////////////////////////
  
+ class XmlAttrLock: public XmlAttrBase
+ {
  public:
!                          XmlAttrLock ();
  
!     virtual valtype_type getType     () const;
!     virtual void         fromVariant (VARIANT p);
! 	virtual void         toVariant   (VARIANT *p) const;
!     virtual void         fromString  (const char * str);
!     virtual void         toString    (string& str) const;
! protected:
!     lockval_type    m_value;
! };
  
! ////////////////////////////////////////////////////////////////////////////////
! // XmlAttrPointer class
! ////////////////////////////////////////////////////////////////////////////////
  
+ class XmlAttrPointer: public XmlAttrBase
+ {
  public:
!                          XmlAttrPointer ();
  
!     virtual valtype_type getType        () const;
!     virtual void         fromVariant    (VARIANT p);
! 	virtual void         toVariant      (VARIANT *p) const;
!     virtual void         fromString     (const char * str);
!     virtual void         toString       (string& str) const;
! protected:
!     GUID    m_parentGUID;
  
!     friend class CCoreXmlFile;
! };
  
! ////////////////////////////////////////////////////////////////////////////////
! // XmlAttrCollection class
! ////////////////////////////////////////////////////////////////////////////////
  
+ class XmlAttrCollection: public XmlAttrBase
+ {
  public:
!     virtual valtype_type getType     () const;
!     virtual void         fromVariant (VARIANT p);
! 	virtual void         toVariant   (VARIANT *p) const;
!     virtual void         fromString  (const char * str);
!     virtual void         toString    (string& str) const;
  protected:
!     GUIDSet    m_childGUIDs;
  
!     friend class CCoreXmlFile;
  };
  
  
! ////////////////////////////////////////////////////////////////////////////////
! // XmlObject class
! ////////////////////////////////////////////////////////////////////////////////
! 
! class XmlObject
  {
  public:
!                 XmlObject           (ICoreMetaObject *metaobject);
  
!     void        createAttributes    (ICoreMetaObject *metaobject);
  
! protected:
!     AttribMap          m_attributes;
!     GUID               m_guid;
!     metaobjidpair_type m_objIdPair;
!     bool               m_deleted;
!     bool               m_attribsInMemory;
!     bool               m_readOnly;
!     bool               m_modified;
  
!     //GUID               m_fileLevelObject;  // point to the ascendent which stores this, or GUID_NULL if this is a file level object
  
!     friend class CCoreXmlFile;
  
! };
  
! typedef map<GUID, XmlObject*,GUID_less>                         GUIDToXmlObjectMap;
! typedef GUIDToXmlObjectMap::iterator                            GUIDToXmlObjectMapIter;
! typedef map<metaobjidpair_type, XmlObject*,metaobjidpair_less>  ObjIdPairToXmlObjectMap;
! typedef ObjIdPairToXmlObjectMap::iterator                       ObjIdPairToXmlObjectMapIter;
  
  
! /*
!   - metaid, objid
!   - GUID
!   - attributumok listaja
!     (lehet hogy csak a pointer es collection attributumok vannak meg->az ojektum meg nem lett 
!     beolvasva a file-bol)
!   
! */
  
  
  
! ////////////////////////////////////////////////////////////////////////////////
! // CCoreXmlFile class
! ////////////////////////////////////////////////////////////////////////////////
  
! /*
!   - objektumok, GUID szerint mapelve
!   - objektumok, metaid+corid szerint mapelve
  
!   /- kell egy adatszerkezet a modositasok tarolasahoz a tranzakcio kezeles miatt
  
  
!   
!   
  
! */
  
! class ATL_NO_VTABLE CCoreXmlFile : 
! 	public CComObjectRootEx<CComSingleThreadModel>,
! 	public IDispatchImpl<ICoreStorage, &IID_ICoreStorage, &LIBID_CORELib>,
! 	public ISupportErrorInfoImpl<&IID_ICoreStorage>,
! 	public CComCoClass<CCoreXmlFile, &CLSID_CoreBinFile>
  {
  public:
! 	CCoreXmlFile();
! 	~CCoreXmlFile();
  
! BEGIN_COM_MAP(CCoreXmlFile)
! 	COM_INTERFACE_ENTRY(ICoreStorage)
! 	COM_INTERFACE_ENTRY(IDispatch)
! 	COM_INTERFACE_ENTRY(ISupportErrorInfo)
! END_COM_MAP()
  
! DECLARE_REGISTRY_RESOURCEID(IDR_COREXMLFILE)
  
  public:
! 	STDMETHODIMP get_MetaProject        (ICoreMetaProject **p);
! 	STDMETHODIMP put_MetaProject        (ICoreMetaProject *p);
! 	STDMETHODIMP get_MetaObject         (ICoreMetaObject **p);
! 	STDMETHODIMP put_MetaObject         (ICoreMetaObject *p);
! 	STDMETHODIMP get_MetaID             (metaid_type *p);
! 	STDMETHODIMP put_MetaID             (metaid_type p);
! 	STDMETHODIMP get_MetaAttribute      (ICoreMetaAttribute **p);
! 	STDMETHODIMP put_MetaAttribute      (ICoreMetaAttribute *p);
! 	STDMETHODIMP get_AttrID             (attrid_type *p);
! 	STDMETHODIMP put_AttrID             (attrid_type p);
! 	STDMETHODIMP get_AttributeValue     (VARIANT *p);
! 	STDMETHODIMP put_AttributeValue     (VARIANT p);
! 	STDMETHODIMP OpenObject             (objid_type objid);
! 	STDMETHODIMP CreateObject           (objid_type *objid);
! 	STDMETHODIMP CloseObject            ();
! 	STDMETHODIMP DeleteObject           ();
! 	STDMETHODIMP LockObject             ();
! 	STDMETHODIMP OpenProject            (BSTR connection, VARIANT_BOOL *ro_mode);
! 	STDMETHODIMP CreateProject          (BSTR connection);
!     STDMETHODIMP SaveProject            (BSTR connection, VARIANT_BOOL keepoldname);
! 	STDMETHODIMP CloseProject           (VARIANT_BOOL abort = VARIANT_FALSE);
! 	STDMETHODIMP DeleteProject          ();
! 	STDMETHODIMP BeginTransaction       ();
! 	STDMETHODIMP CommitTransaction      ();
! 	STDMETHODIMP AbortTransaction       ();
! 	STDMETHODIMP get_StorageType        (long *p);
  
! protected:
!     void         closeMetaProject       ();
!     void         openMetaObject         ();
!     void         closeMetaObject        ();
!     void         openMetaAttribute      ();
!     void         closeMetaAttribute     ();
!     void         clearObjects           ();
!     void         setFolderPath          (BSTR connection);
!     void         addObject              (XmlObject * obj);
!     void         getPointerAttrVal      (XmlAttrPointer * attr, VARIANT * p);    
!     void         getCollectionAttrVal   (XmlAttrCollection * attr, VARIANT * p);
!     void         setPointerAttrVal      (XmlAttrPointer * attr, VARIANT p);
!     
!     void         writeCache             ();
!     //void         readCache             ();
  
! protected:
!     // meta project
!     CComObjPtr<ICoreMetaProject>    m_metaProject;
  
!     // meta object
!     CComObjPtr<ICoreMetaObject>     m_metaObject;
!     metaid_type                     m_metaObjectId;
  
!     // meta attribute
!     CComObjPtr<ICoreMetaAttribute>  m_metaAttribute;
! 	attrid_type                     m_metaAttributeId;
!     
!     // project
!     bool                            m_opened;
!     bool                            m_modified;
!     string                          m_folderPath;   // absolute path of the folder contains the project files
!     string                          m_cacheFileName;
!     bool                            m_inTransaction;
! 
!     // objects
!     GUIDToXmlObjectMap              m_objectsByGuid;
!     ObjIdPairToXmlObjectMap         m_objectsByObjIdPair;
!     XmlObject                     * m_openedObject;
!     int                             m_lastObjID;
  
  };
  



More information about the GME-commit mailing list