[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