[GME-commit] GMESRC/GME/Parser MgaDumper.cpp,1.12,1.13 MgaDumper.h,1.7,1.8

gme-commit at list.isis.vanderbilt.edu gme-commit at list.isis.vanderbilt.edu
Wed Jun 2 16:55:36 CDT 2004


Update of /var/lib/gme/GMESRC/GME/Parser
In directory braindrain:/tmp/cvs-serv31285

Modified Files:
	MgaDumper.cpp MgaDumper.h 
Log Message:
1.Closure dumpers introduced
2.Attribute values checked for special characters like & and escaped. (Annotation names bug corrected)



CVS User: zolmol

Index: MgaDumper.cpp
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Parser/MgaDumper.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** MgaDumper.cpp	24 May 2004 13:35:44 -0000	1.12
--- MgaDumper.cpp	2 Jun 2004 20:55:33 -0000	1.13
***************
*** 6,9 ****
--- 6,87 ----
  #define FLUSH_LIMIT			1000
  
+ #include "map"
+ 
+ // -----------------------------------------------------------
+ // --------------------------- GmeEqual ----------------------
+ // -----------------------------------------------------------
+ GmeEqual::GmeEqual( CComObjPtr<IMgaObject> obj)
+ : m_objToFind( obj), m_which( 1)
+ { }
+ 
+ 
+ GmeEqual::GmeEqual( CComObjPtr<IMgaFCO> fco)
+ : m_fcoToFind( fco), m_which( 2)
+ { }
+ 
+ 
+ GmeEqual::GmeEqual( CComObjPtr<IMgaFolder> folder)
+ : m_folderToFind( folder), m_which( 3)
+ { }
+ 
+ 
+ GmeEqual::GmeEqual( CComObjPtr<IMgaModel> model)
+ : m_modelToFind( model), m_which( 4)
+ { }
+ 
+ 
+ bool GmeEqual::operator() ( CComObjPtr<IMgaObject>& op )
+ {
+ 	ASSERT( m_which == 1); // which variable is set
+ 
+ 	VARIANT_BOOL is_equal;
+ 	COMTHROW( m_objToFind->get_IsEqual( op, &is_equal));
+ 
+ 	if (is_equal != VARIANT_FALSE)
+ 		return true;
+ 
+ 	return false;
+ }
+ 
+ bool GmeEqual::operator() ( CComObjPtr<IMgaFCO>& op )
+ {
+ 	ASSERT( m_which == 2); // which variable is set
+ 
+ 	VARIANT_BOOL is_equal;
+ 	COMTHROW( m_fcoToFind->get_IsEqual( op, &is_equal));
+ 
+ 	if (is_equal != VARIANT_FALSE)
+ 		return true;
+ 
+ 	return false;
+ }
+ 
+ bool GmeEqual::operator() ( CComObjPtr<IMgaFolder>& op )
+ {
+ 	ASSERT( m_which == 3); // which variable is set
+ 
+ 	VARIANT_BOOL is_equal;
+ 	COMTHROW( m_folderToFind->get_IsEqual( op, &is_equal));
+ 
+ 	if (is_equal != VARIANT_FALSE)
+ 		return true;
+ 
+ 	return false;
+ }
+ 
+ bool GmeEqual::operator() ( CComObjPtr<IMgaModel>& op )
+ {
+ 	ASSERT( m_which == 4); // which variable is set
+ 
+ 	VARIANT_BOOL is_equal;
+ 	COMTHROW( m_modelToFind->get_IsEqual( op, &is_equal));
+ 
+ 	if (is_equal != VARIANT_FALSE)
+ 		return true;
+ 
+ 	return false;
+ }
+ 
+ 
  // --------------------------- CMgaDumper
  
***************
*** 54,58 ****
  			project->CommitTransaction();
  	}
! 	root_fcos.clear();
  	project = NULL;
  }
--- 132,138 ----
  			project->CommitTransaction();
  	}
! 	
! 	m_selFcos.clear();
! 	m_selFolders.clear();
  	project = NULL;
  }
***************
*** 79,99 ****
  }
  
! STDMETHODIMP CMgaDumper::DumpFCOs(IMgaFCOs *p, BSTR xmlfile)
  {
! 	CHECK_IN(p);
  
  	COMTRY
  	{
! 		CopyTo(p, root_fcos);
  
! 		if( root_fcos.empty() )
  			return S_OK;
  
  		CComObjPtr<IMgaProject> project;
! 		COMTHROW( root_fcos.front()->get_Project(PutOut(project)) );
  
  		InitDump(project, xmlfile);
  
! 		ofs << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
  		ofs << "<!DOCTYPE clipboard SYSTEM \"mga.dtd\" [\n";
  		ofs << "\t<!ELEMENT clipboard (folder|model|atom|reference|set|connection)*>\n";
--- 159,191 ----
  }
  
! STDMETHODIMP CMgaDumper::DumpFCOs(IMgaFCOs *p, IMgaFolders *f, BSTR xmlfile)
  {
! 	m_strictDump = false; // this method uses the permissive dump
! 	// meaning that if a model/folder is in the closure then all children
! 	// and grandchildren are dumped as well
! 
! 	//CHECK_IN( (int)p | (int)f);
  
  	COMTRY
  	{
! 		if ( p) CopyTo(p, m_selFcos);
! 		if ( f) CopyTo(f, m_selFolders);
  
! 		if( m_selFcos.empty() && m_selFolders.empty())
  			return S_OK;
  
  		CComObjPtr<IMgaProject> project;
! 
! 		if ( !m_selFcos.empty())
! 			COMTHROW( m_selFcos.front()->get_Project( PutOut( project)) );
! 		else if ( !m_selFolders.empty())
! 			COMTHROW( m_selFolders.front()->get_Project( PutOut( project)) );
! 		else
! 			return S_OK;
! 
  
  		InitDump(project, xmlfile);
  
! 		ofs << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
  		ofs << "<!DOCTYPE clipboard SYSTEM \"mga.dtd\" [\n";
  		ofs << "\t<!ELEMENT clipboard (folder|model|atom|reference|set|connection)*>\n";
***************
*** 102,107 ****
  		StartElem("clipboard");
  
! 		CComObjPtrVector<IMgaFCO>::iterator i = root_fcos.begin();
! 		while( i != root_fcos.end() )
  		{
  			// PETER: put the object into the parser's territory
--- 194,211 ----
  		StartElem("clipboard");
  
! 		CComObjPtrVector<IMgaFolder>::iterator fi = m_selFolders.begin();
! 		while( fi != m_selFolders.end() )
! 		{
! 			CComObjPtr<IMgaObject> obj;
! 			COMTHROW(territory->OpenObj(*fi, PutOut(obj)));
! 			CComObjPtr<IMgaFolder> folder;
! 			COMTHROW(obj.QueryInterface(folder));
! 
! 			Dump(folder);
! 			++fi;
! 		}
! 
! 		CComObjPtrVector<IMgaFCO>::iterator i = m_selFcos.begin();
! 		while( i != m_selFcos.end() )
  		{
  			// PETER: put the object into the parser's territory
***************
*** 123,126 ****
--- 227,249 ----
  // ------- Low level stuff
  
+ string CMgaDumper::xmlFilter( const string& in)
+ {
+ 	map<char, string> m;
+ 	m['&'] = "&amp;";
+ 	m['>'] = "&gt;";
+ 	m['<'] = "&lt;";
+ 	m['"'] = "&quot;";
+ 	m['\''] = "&apos;";
+ 
+ 	string ret;
+ 	for( string::const_iterator i = in.begin(); i != in.end(); ++i)
+ 		if ( m.find( *i) != m.end())
+ 			ret += m[*i];
+ 		else
+ 			ret += *i;
+ 
+ 	return ret;
+ }
+ 
  inline void CMgaDumper::Indent(int i)
  {
***************
*** 156,161 ****
  
  	ASSERT( !elems.empty() && !elems.back().inbody );
  
! 	ofs << ' ' << name << "=\"" << value << '"';
  }
  
--- 279,286 ----
  
  	ASSERT( !elems.empty() && !elems.back().inbody );
+ 	
+ 	string t = xmlFilter( value); //ZolMol
  
! 	ofs << ' ' << name << "=\"" << t.c_str() << '"';
  }
  
***************
*** 168,174 ****
  	ASSERT( !elems.empty() && !elems.back().inbody && !elems.back().indata );
  
! 	ofs << ' ' << name << "=\"";
! 	ofs.write(value, len);
! 	ofs << '"';
  }
  
--- 293,299 ----
  	ASSERT( !elems.empty() && !elems.back().inbody && !elems.back().indata );
  
! 	string t = xmlFilter( string( value, len)); // ZolMol
! 	
! 	ofs << ' ' << name << "=\"" << t.c_str() << '"';
  }
  
***************
*** 230,265 ****
  }
  
! inline bool CMgaDumper::CheckInClosure(CComObjPtr<IMgaFCO> fco) 
  {
! 	if (root_fcos.empty()) {
! 		// Everything is in the closure if we are not
! 		// dumping selected FCOs
  		return true;
  	}
  
  	bool in_closure = false;
! 	
! 	CComObjPtr<IMgaFCO> curr_fco = fco;
! 	while ((curr_fco != NULL) && (!in_closure)) {
! 		
! 		CComObjPtrVector<IMgaFCO>::iterator i = root_fcos.begin();
! 		while( i != root_fcos.end() )
  		{
! 			VARIANT_BOOL is_equal;
! 			COMTHROW(curr_fco->get_IsEqual(*i, &is_equal));
  
! 			if (is_equal != VARIANT_FALSE) {
! 				in_closure = true;
! 				break;
  			}
  			
! 			++i;
  		}
  
! 		CComObjPtr<IMgaModel> parent;
! 		COMTHROW(curr_fco->get_ParentModel(PutOut(parent)));
! 		curr_fco = NULL;
! 		if (parent != NULL) {
! 			COMTHROW( ::QueryInterface(parent, curr_fco) );
  		}
  	}
--- 355,452 ----
  }
  
! // ------- CheckInClosure
! // there are two ways:
! //  strict: those objects are dumped which are selected ( can be found in m_selFCO/Folder)
! //          this method is used by the copy closure methods
! //  permissive: hierarchical selection, meaning that if a folder/model is selected then
! //              its children/grandchildren need not to be selected (need not be in m_selFCO/Folder)
! //              this is used by regular clipboard methods
! //
! inline bool CMgaDumper::CheckInClosure(CComObjPtr<IMgaAttribute> ) { return true;}
! inline bool CMgaDumper::CheckInClosure(CComObjPtr<IMgaConnPoint> ) { return true;}
! 
! bool CMgaDumper::CheckInClosure(CComObjPtr<IMgaFolder> folder)
  {
! 	if ( m_selFolders.empty() && m_selFcos.empty()) {
! 		// if the selected FCOs and selected Folders values are empty
! 		// then everything is in the closure 
  		return true;
  	}
  
  	bool in_closure = false;
! 
! 	if (m_strictDump)
! 	{
! 		in_closure = find_if( m_selFolders.begin(), m_selFolders.end(), GmeEqual( folder)) != m_selFolders.end();
! 	}
! 	else
! 	{
! 		CComObjPtr<IMgaFolder> curr_folder = folder;
! 		while ( curr_folder != NULL && !in_closure)
  		{
! 			in_closure = find_if( m_selFolders.begin(), m_selFolders.end(), GmeEqual( curr_folder)) != m_selFolders.end();
  
! 			CComObjPtr<IMgaFolder> parent;
! 			COMTHROW(curr_folder->get_ParentFolder(PutOut( parent)));
! 
! 			curr_folder = NULL;
! 			
! 			if (parent != NULL) {
! 				curr_folder = parent;
  			}
+ 		}
+ 	}
+ 	return in_closure;
+ }
+ 
+ bool CMgaDumper::CheckInClosure(CComObjPtr<IMgaFCO> fco) 
+ {
+ 	if ( m_selFolders.empty() && m_selFcos.empty()) {
+ 		// if the selected FCOs and selected Folders values are empty
+ 		// then everything is in the closure 
+ 		return true;
+ 	}
+ 
+ 	bool in_closure = false;
+ 
+ 	if (m_strictDump)
+ 	{
+ 		in_closure = find_if( m_selFcos.begin(), m_selFcos.end(), GmeEqual( fco)) != m_selFcos.end();
+ 	}
+ 	else
+ 	{
+ 		
+ 		CComObjPtr<IMgaFCO> curr_fco = fco;
+ 		CComObjPtr<IMgaFCO> last_fco = fco;
+ 		while ( curr_fco != NULL && !in_closure) {
  			
! 			in_closure = find_if( m_selFcos.begin(), m_selFcos.end(), GmeEqual( curr_fco)) != m_selFcos.end();
! 
! 			CComObjPtr<IMgaModel> parent;
! 			COMTHROW(curr_fco->get_ParentModel(PutOut(parent)));
! 			last_fco = curr_fco;
! 			curr_fco = NULL;
! 			if (parent != NULL) {
! 				COMTHROW( ::QueryInterface(parent, curr_fco) );
! 			}
  		}
  
! 		if ( !in_closure) // no parent yet (model) in closure, need to check folders
! 		{
! 			CComObjPtr<IMgaFolder> par_folder;
! 			COMTHROW( last_fco->get_ParentFolder(PutOut( par_folder)));
! 
! 			while ( par_folder != NULL && !in_closure)
! 			{
! 				in_closure = find_if( m_selFolders.begin(), m_selFolders.end(), GmeEqual( par_folder)) != m_selFolders.end();
! 
! 				CComObjPtr<IMgaFolder> parent;
! 				COMTHROW(par_folder->get_ParentFolder(PutOut( parent)));
! 
! 				par_folder = NULL;
! 				
! 				if (parent != NULL)
! 					par_folder = parent;
! 			}
  		}
  	}
***************
*** 844,847 ****
--- 1031,1035 ----
  		{
  			if (!CheckInClosure(*i)) {
+ 				++i; // inserted by ZolMol
  				continue;
  			}
***************
*** 860,864 ****
  		}
  
! 		Attr(name, idrefs);
  	}
  }
--- 1048,1053 ----
  		}
  
! 		if ( !idrefs.empty())
! 			Attr(name, idrefs);
  	}
  }
***************
*** 1064,1066 ****
  	}	
  
! }
\ No newline at end of file
--- 1253,1404 ----
  	}	
  
! }
! 
! void CMgaDumper::putInTerritory( CComObjPtrVector<IMgaFCO>& fco_vec)
! {		
! 	CComObjPtrVector<IMgaFCO>::iterator i = fco_vec.begin();
! 	for( ; i != fco_vec.end(); ++i )
! 	{
! 		CComObjPtr<IMgaObject> obj;
! 		COMTHROW(territory->OpenObj(*i, PutOut(obj)));
! 		CComObjPtr<IMgaFCO> fco;
! 		COMTHROW(obj.QueryInterface(fco));
! 		*i = fco;
! 	}
! }
! 
! void CMgaDumper::putInTerritory( CComObjPtrVector<IMgaFolder>& fold_vec)
! {
! 	CComObjPtrVector<IMgaFolder>::iterator j = fold_vec.begin();
! 	for( ; j != fold_vec.end(); ++j )
! 	{
! 		CComObjPtr<IMgaObject> obj;
! 		COMTHROW(territory->OpenObj(*j, PutOut(obj)));
! 		CComObjPtr<IMgaFolder> fold;
! 		COMTHROW(obj.QueryInterface(fold));
! 		*j = fold;
! 	}
! }
! 
! STDMETHODIMP CMgaDumper::DumpClos( IMgaFCOs *p_sel_fcos, IMgaFolders *p_sel_folds,  BSTR xmlfile)
! {
! 	m_strictDump = true;
! 
! 	COMTRY
! 	{
! 		if ( p_sel_fcos )
! 			CopyTo( p_sel_fcos, m_selFcos);
! 
! 		if ( p_sel_folds) 
! 			CopyTo( p_sel_folds, m_selFolders);
! 
! 		CComObjPtr<IMgaProject> project;
! 
! 		if ( !m_selFcos.empty())
! 			COMTHROW( m_selFcos.front()->get_Project( PutOut( project)) );
! 		else if ( !m_selFolders.empty())
! 			COMTHROW( m_selFolders.front()->get_Project( PutOut( project)) );
! 		else
! 			return S_OK;
! 
! 
! 		InitDump( project, xmlfile);
! 
! 		putInTerritory( m_selFcos);
! 		putInTerritory( m_selFolders);
! 		
! 		if ( false) // clipboard format
! 		{
! 			ofs << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
! 			ofs << "<!DOCTYPE clipboard SYSTEM \"mga.dtd\" [\n";
! 			ofs << "\t<!ELEMENT clipboard (folder|model|atom|reference|set|connection)*>\n";
! 			ofs << "]>\n\n";
! 
! 			StartElem("clipboard");
! 			Dump( project); 
! 			EndElem();
! 		}
! 		else
! 		{
! 			ofs << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
! 			ofs << "<!DOCTYPE project SYSTEM \"mga.dtd\">\n\n";
! 
! 			Dump( project); 
! 		}
! 		DoneDump(false);
! 	}
! 	COMCATCH( DoneDump(true); )
! 
! 	m_selFcos.clear();
! 	m_selFolders.clear();
! }
! 
! STDMETHODIMP CMgaDumper::DumpClosR(
! 			IMgaFCOs *p_sel_fcos, IMgaFolders *p_sel_folds,  BSTR xmlfile, 
! 			IMgaFCOs *p_top_fcos, IMgaFolders *p_top_folds )
! {
! 	m_strictDump = true;
! 
! 	COMTRY
! 	{
! 		if ( p_sel_fcos )
! 			CopyTo( p_sel_fcos, m_selFcos);
! 
! 		if ( p_sel_folds) 
! 			CopyTo( p_sel_folds, m_selFolders);
! 
! 		CComObjPtr<IMgaProject> project;
! 
! 		if ( !m_selFcos.empty())
! 			COMTHROW( m_selFcos.front()->get_Project( PutOut( project)) );
! 		else if ( !m_selFolders.empty())
! 			COMTHROW( m_selFolders.front()->get_Project( PutOut( project)) );
! 		else
! 			return S_OK;
! 
! 
! 		CComObjPtrVector<IMgaFCO>	parentless_fcos; // parentless fcos from the selected set
! 		CComObjPtrVector<IMgaFolder> parentless_folders; // parentless folders from the selected set
! 
! 		if ( p_top_fcos )
! 			CopyTo( p_top_fcos, parentless_fcos);
! 
! 		if ( p_top_folds) 
! 			CopyTo( p_top_folds, parentless_folders);
! 
! 		if ( parentless_fcos.empty() && parentless_folders.empty())
! 		{
! 			// this case should be handled by the DumpClos()
! 			ASSERT( 0);
! 			return DumpClos( p_sel_fcos, p_sel_folds, xmlfile);
! 		}
! 
! 		InitDump( project, xmlfile);
! 
! 		putInTerritory( m_selFcos);
! 		putInTerritory( parentless_fcos);
! 		putInTerritory( m_selFolders);
! 		putInTerritory( parentless_folders);
! 
! 		ofs << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
! 		ofs << "<!DOCTYPE clipboard SYSTEM \"mga.dtd\" [\n";
! 		ofs << "\t<!ELEMENT clipboard (folder|model|atom|reference|set|connection)*>\n";
! 		ofs << "]>\n\n";
! 
! 		StartElem("clipboard");
! 
! 		for( CComObjPtrVector<IMgaFolder>::iterator j = parentless_folders.begin(); j != parentless_folders.end(); ++j )
! 			Dump( *j); 
! 
! 		for( CComObjPtrVector<IMgaFCO>::iterator i = parentless_fcos.begin() ; i != parentless_fcos.end(); ++i )
! 			Dump( *i); 
! 		
! 		EndElem();
! 
! 		DoneDump(false);
! 	}
! 	COMCATCH( DoneDump(true); )
! 
! 	m_selFcos.clear();
! 	m_selFolders.clear();
! }

Index: MgaDumper.h
===================================================================
RCS file: /var/lib/gme/GMESRC/GME/Parser/MgaDumper.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** MgaDumper.h	26 Feb 2004 17:52:45 -0000	1.7
--- MgaDumper.h	2 Jun 2004 20:55:33 -0000	1.8
***************
*** 7,10 ****
--- 7,33 ----
  #include "CommonVersionInfo.h"
  
+ 
+ class GmeEqual
+ {
+ 	public:
+ 		GmeEqual( CComObjPtr<IMgaObject>);
+ 		GmeEqual( CComObjPtr<IMgaFCO>);
+ 		GmeEqual( CComObjPtr<IMgaFolder>);
+ 		GmeEqual( CComObjPtr<IMgaModel>);
+ 
+ 		bool operator() ( CComObjPtr<IMgaObject>& );
+ 		bool operator() ( CComObjPtr<IMgaFCO>& );
+ 		bool operator() ( CComObjPtr<IMgaFolder>& );
+ 		bool operator() ( CComObjPtr<IMgaModel>& );
+ 	private:
+ 		CComObjPtr<IMgaObject>	m_objToFind;
+ 		CComObjPtr<IMgaFCO>		m_fcoToFind;
+ 		CComObjPtr<IMgaFolder>	m_folderToFind;
+ 		CComObjPtr<IMgaModel>	m_modelToFind;
+ 		int						m_which; // which variable is set
+ };
+ 
+ 
+ 
  // --------------------------- CMgaDumper
  
***************
*** 17,21 ****
  {
  public:
! 	CMgaDumper() { dumpversion = 1; }
  
  DECLARE_REGISTRY_RESOURCEID(IDR_MGADUMPER)
--- 40,44 ----
  {
  public:
! 	CMgaDumper() : dumpversion( 1), m_strictDump( true) { }
  
  DECLARE_REGISTRY_RESOURCEID(IDR_MGADUMPER)
***************
*** 36,44 ****
  
  	STDMETHOD(DumpProject)(IMgaProject *p, BSTR xmlfile);
! 	STDMETHOD(DumpFCOs)(IMgaFCOs *p, BSTR xmlfile);
  	STDMETHOD(put_FormatVersion)(long p) { dumpversion = p; return S_OK; }
  
  // ------- Low level stuff
! 
  	void Indent(int i);
  	void StartElem(const char *name);
--- 59,69 ----
  
  	STDMETHOD(DumpProject)(IMgaProject *p, BSTR xmlfile);
! 	STDMETHOD(DumpFCOs)(IMgaFCOs *p, IMgaFolders *f, BSTR xmlfile);
! 	STDMETHOD(DumpClos)( IMgaFCOs *sel_fco, IMgaFolders *sel_fold, BSTR xmlfile);
! 	STDMETHOD(DumpClosR)( IMgaFCOs *sel_fco, IMgaFolders *sel_fold, BSTR xmlfile, IMgaFCOs *root_fco, IMgaFolders *root_fold);
  	STDMETHOD(put_FormatVersion)(long p) { dumpversion = p; return S_OK; }
  
  // ------- Low level stuff
! 	string xmlFilter( const string& in);
  	void Indent(int i);
  	void StartElem(const char *name);
***************
*** 129,133 ****
  		while( i != e )
  		{
! 			Dump(*i);
  
  			++i;
--- 154,159 ----
  		while( i != e )
  		{
! 			if ( CheckInClosure( *i)) // by ZolMol
! 				Dump(*i);
  
  			++i;
***************
*** 135,143 ****
  	}
  
! 	bool CheckInClosure(CComObjPtr<IMgaFCO> fco);
  
  // ------- Dumpers
  
  public:
  	void Dump(IMgaProject *project);
  	void Dump(IMgaFolder *folder);
--- 161,174 ----
  	}
  
! 	bool CheckInClosure( CComObjPtr<IMgaFCO>);
! 	bool CheckInClosure( CComObjPtr<IMgaFolder>);
! 	bool CheckInClosure( CComObjPtr<IMgaAttribute>);
! 	bool CheckInClosure( CComObjPtr<IMgaConnPoint>);
! 	
  
  // ------- Dumpers
  
  public:
+ 
  	void Dump(IMgaProject *project);
  	void Dump(IMgaFolder *folder);
***************
*** 182,191 ****
  	vector<elem> elems;
  
- 	CComObjPtr<IMgaProject> project;
- 	CComObjPtr<IMgaTerritory> territory;
- 	CComObjPtrVector<IMgaFCO> root_fcos;			// non-empty for DumpFCOs, closure checking
- 
  	long fco_count;
  	int dumpversion;
  };
  
--- 213,229 ----
  	vector<elem> elems;
  
  	long fco_count;
  	int dumpversion;
+ 
+ 	bool m_strictDump; // if true then containers dump their children only if the child is present in the closure collection
+ 
+ 	CComObjPtr<IMgaProject>			project;
+ 	CComObjPtr<IMgaTerritory>		territory;
+ 	
+ 	CComObjPtrVector<IMgaFCO>		m_selFcos;		// selected objects for dump or closure
+ 	CComObjPtrVector<IMgaFolder>	m_selFolders;
+ 
+ 	void putInTerritory( CComObjPtrVector<IMgaFCO>&);
+ 	void putInTerritory( CComObjPtrVector<IMgaFolder>&);
  };
  



More information about the GME-commit mailing list