[GME-commit] GMESRC/GME/XmlBackEnd CoreXmlFile.cpp,NONE,1.1 CoreXmlFile.h,NONE,1.1 CoreXmlFile.rgs,NONE,1.1 resource.h,NONE,1.1 Ssauto.h,NONE,1.1 StdAfx.cpp,NONE,1.1 StdAfx.h,NONE,1.1 VSSLoginDlg.cpp,NONE,1.1 VSSLoginDlg.h,NONE,1.1 XmlBackEnd.cpp,NONE,1.1 XmlBackEnd.def,NONE,1.1 XmlBackEnd.dsp,NONE,1.1 XmlBackEnd.idl,NONE,1.1 XmlBackEnd.rc,NONE,1.1

gme-commit at list.isis.vanderbilt.edu gme-commit at list.isis.vanderbilt.edu
Tue Sep 14 11:40:04 CDT 2004


Update of /var/lib/gme/GMESRC/GME/XmlBackEnd
In directory braindrain:/tmp/cvs-serv1643

Added Files:
	CoreXmlFile.cpp CoreXmlFile.h CoreXmlFile.rgs resource.h 
	Ssauto.h StdAfx.cpp StdAfx.h VSSLoginDlg.cpp VSSLoginDlg.h 
	XmlBackEnd.cpp XmlBackEnd.def XmlBackEnd.dsp XmlBackEnd.idl 
	XmlBackEnd.rc 
Log Message:
no message

CVS User: bogyom

--- NEW FILE: CoreXmlFile.cpp ---
#include "stdafx.h"
#include <stdio.h>
#include <io.h>
#include <stdlib.h>
#include "CoreXmlFile.h"
#include "CommonCollection.h"
#include "VSSLoginDlg.h"

using namespace XERCES_CPP_NAMESPACE;


void bin2string( const unsigned char * bytes, int len, string& str )
{
    char hex[3];
    str.clear();
    for( int i=0; i<len; ++i )
    {
        sprintf( hex, "%02x", bytes[i] );
        str += hex;
[...2664 lines suppressed...]





TODO:
1. cache tesztelese nagyobb projekteknel
2. hibakalezels
     
 


SZIVAS!

  
  Kerdesek: 
  1. a lockot minek undozni?
 

*/
--- NEW FILE: CoreXmlFile.h ---
#ifndef MGA_COREXMLFILE_H
#define MGA_COREXMLFILE_H

#include "resource.h"
#include <fstream.h>
#include <list>
#include <map>
#include <hash_map>
#include <set>
#include <xercesc/dom/dom.hpp>
#include "..\Mga\MgaGeneric.h"
#include "Ssauto.h"
#include "ccauto.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;
        }
	}
};

class XmlObject;

typedef set<XmlObject*>                 XmlObjSet;
typedef XmlObjSet::iterator             XmlObjSetIter;
typedef vector<XmlObject*>              XmlObjVec;
typedef XmlObjVec::iterator             XmlObjVecIter;
typedef map<metaid_type,attrid_type>    ParentMap;
typedef map<GUID, XmlObject*,GUID_less> GUIDToXmlObjectMap;
typedef GUIDToXmlObjectMap::iterator    GUIDToXmlObjectMapIter;


////////////////////////////////////////////////////////////////////////////////
// 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)         {}
    virtual void         toVariant   (VARIANT *p) const  {}
    virtual void         fromString  (const char * str)  {}
    virtual void         toString    (string& str) const {}
};

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;
protected:
    XmlObject * m_parent;

    friend class CCoreXmlFile;
};

////////////////////////////////////////////////////////////////////////////////
// XmlAttrCollection class
////////////////////////////////////////////////////////////////////////////////

class XmlAttrCollection: public XmlAttrBase
{
public:
    virtual valtype_type getType     () const;
protected:
    XmlObjSet   m_children;

    friend class CCoreXmlFile;
};


////////////////////////////////////////////////////////////////////////////////
// XmlObject class
////////////////////////////////////////////////////////////////////////////////

class XmlObject
{
public:
    enum AttrSet
    {
        ATTR_PRIMARY,
        ATTR_SECONDARY,
        ATTR_ALL        
    };

public:
                XmlObject           (ICoreMetaObject *metaobject, bool createAllAttributes);
               ~XmlObject           ();

    bool        isContainer         ();
        
protected:
    void        createAttributes        (ICoreMetaObject *metaobject, int attrSet );
    void        deleteSecondaryAttribs  ();

protected:
    metaid_type        m_metaid;
    GUID               m_guid;
    int                m_index;            // index in the m_objects array
    AttribMap          m_attributes;
    bool               m_loaded;           // true if all attributes are loded (otherwise only pointer, collections and locks stored)
    bool               m_deleted;
    bool               m_modified;

    friend class CCoreXmlFile;
};


struct UnresolvedPointer
{
    XmlObject   * m_object;             // whose attribute is this
    attrid_type   m_attrib;
    GUID          m_pointedObjGuid;
};

typedef vector<UnresolvedPointer>       UnresolvedPointerVec;
typedef UnresolvedPointerVec::iterator  UnresolvedPointerVecIt;

struct UndoItem
{
    UndoItem( XmlObject * object, attrid_type attrId, CComVariant value )
    {
        m_object = object;
        m_value  = value;
        m_attrId = attrId;
    };

    attrid_type   m_attrId;
    XmlObject *   m_object;
    CComVariant   m_value;
};

typedef map<XmlAttrBase*, UndoItem>  UndoMap;
typedef UndoMap::iterator            UndoMapIter;


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:
    enum SourceControl
    {
        SC_NONE,
        SC_SOURCESAFE,
        SC_CLEARCASE
    };

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         fillParentMap          ();

    void         closeMetaProject       ();

    void         openMetaObject         ();

    void         closeMetaObject        ();

    void         openMetaAttribute      ();

    void         closeMetaAttribute     ();

    void         parseConnectionString  ( BSTR connection );

    void         setFileNames           ();

    void         getContainerFileName   (XmlObject * obj, string& str, bool fullpath=true);
    
    // graph operatrions
    void         clearAll               ();

    void         addObject              (XmlObject * obj);

    void         deleteObject           (XmlObject * obj);

    void         setPointer             (XmlObject * obj, attrid_type attribId, XmlObject * pointed);

    //void         setPointer             (XmlObject * obj, XmlAttrPointer * attr, VARIANT p)

    void         setPointer             (VARIANT p);
    
    void         updateCollections      ();

    void         resolvePointers        (UnresolvedPointerVec& pointers);

    // getting connections
    void         getPointer             (XmlAttrPointer * attr, VARIANT * p);

    void         getCollection          (XmlAttrCollection * attr, VARIANT * p);

    XmlObject *  getContainer           (XmlObject * obj);

    void         getContainedObjects    (XmlObject * obj, XmlObjVec& vec);

    // check out
    void         getCheckOutContainers  (XmlObjSet& objects, XmlObjSet& containers);

    void         getDependetContainers  (XmlObject * obj, XmlObjSet& containers, XmlObjSet& processedObjects);

    bool         checkOutFiles          (XmlObjSet& containers);

    // object pointer and id conversion
    XmlObject *  objectFromObjId        (metaobjidpair_type idpair);

    void         objIdFromObject        (XmlObject * obj, metaobjidpair_type& idpair);
    
    // serialization
    void         writeBinaryCache       ();

    bool         readBinaryCache        ();

    void         createProjectFile      ();

    void         readProjectFile        ();
    
    void         writeAll               ();
    
    void         writeXMLFile           (XmlObject * container);

    void         writeObject            (XmlObject * obj, FILE * file, bool container, const char * prefix);

    bool         moveContainerToDisk    (XmlObject * container);

    void         fullReadContainer      (XmlObject * container);

    void         readXMLFile            (const char * fileName, UnresolvedPointerVec& pointers, bool fullLoad );

    void         readObject             (XERCES_CPP_NAMESPACE::DOMElement * e, UnresolvedPointerVec& pointers, 
                                         XmlObject * parent, bool fullLoad );

    void         readAll                ( bool fullLoad );

    void         getLatestAndLoad       ();

    // source control
    bool         getSourceSafeUserInfo  ();

    void         createSourceSafeDatabase();

    void         openSourceSafeDatabase ();

    void         getSourceSafePath      (XmlObject * obj, string& str);

    bool         isContainerReadOnly    (XmlObject * obj);

    bool         isContinerCheckedOut   (XmlObject * obj);

    void         checkOutContainer      (XmlObject * obj);

    void         addToSourceControl     (XmlObject * container);

    void         getLatestVersion       ();

    void         checkInAll             ();

    void         checkInAll             ( bool keepCheckedOut );

    bool         createClearCaseApp     ();
    
    bool         isPathUnderClearCase   ( const char * path );

    bool         isFileCheckedOutCC     ( const char * path );

    void         checkOutFileCC         ( const char * path );

    void         checkInFileCC          ( const char * path );

    void         addFileToCC            ( const char * path );

    void         addDirToCC             ( const char * path );

    void         getLatestVerCC         ( const char * path );

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;
    valtype_type                    m_metaAttributeValType;

    ParentMap                       m_parentMap;
    
    // project
    bool                            m_opened;
    bool                            m_modified;
    string                          m_parentFolderPath;   // absolute path of the folder contains the project folder
    string                          m_folderPath;   // absolute path of the folder contains the project files
    string                          m_cacheFileName;
    string                          m_projectFileName;
    string                          m_projectName;
    bool                            m_inTransaction;

    // source control info
    int                             m_sourceControl;

    // sourcesafe
    string                          m_vssDatabaseStr;
    string                          m_vssParentPath;
    string                          m_vssPath;
    CComObjPtr<IVSSDatabase>        m_vssDatabase;
    string                          m_vssUser;
    string                          m_vssPassword;

    // clearcase
    string                          m_clearCaseString;
    CComObjPtr<IClearCase>          m_clearCase;
    CComObjPtr<IClearTool>          m_clearTool;

    // objects
    XmlObjVec                       m_objects;
    GUIDToXmlObjectMap              m_objectsByGUID;
    XmlObject                     * m_openedObject;
    XmlObject                     * m_root;

    // transaction handling
    UndoMap                         m_undoMap;
    XmlObjSet                       m_modifiedObjects;
    XmlObjVec                       m_createdObjects;
    XmlObjSet                       m_deletedObjects;
    //XmlObjSet                       m_checkOutContainers;
};

#endif//MGA_COREXMLFILE_H

--- NEW FILE: CoreXmlFile.rgs ---
HKCR
{
	Mga.CoreXmlFile.1 = s 'CoreXmlFile Class'
	{
		CLSID = s '{F729BE0C-ACE5-470B-8F98-DAE52D6A5949}'
	}
	Mga.CoreXmlFile = s 'CoreXmlFile Class'
	{
		CLSID = s '{F729BE0C-ACE5-470B-8F98-DAE52D6A5949}'
	}
	NoRemove CLSID
	{
		ForceRemove {F729BE0C-ACE5-470B-8F98-DAE52D6A5949} = s 'CoreXmlFile Class'
		{
			ProgID = s 'Mga.CoreXmlFile.1'
			VersionIndependentProgID = s 'Mga.CoreXmlFile'
			InprocServer32 = s '%MODULE%'
			{
				val ThreadingModel = s 'both'
			}
		}
	}
}

--- NEW FILE: resource.h ---
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by XmlBackEnd.rc
//
#define IDS_PROJNAME                    100
#define IDS_COREXMLFILE_DESC            102
#define IDR_CoreXmlFile                 103
#define IDC_EDIT_USER                   201
#define IDD_DIALOG_VSSLOGIN             201
#define IDC_EDIT_PWD                    202
#define IDC_STATIC_PROJECT              203
#define IDC_STATIC_DATABASE             204

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        205
#define _APS_NEXT_COMMAND_VALUE         32768
#define _APS_NEXT_CONTROL_VALUE         205
#define _APS_NEXT_SYMED_VALUE           104
#endif
#endif

--- NEW FILE: Ssauto.h ---
/* This header file machine-generated by mktyplib.exe */
/* Interface to type library: SourceSafeTypeLib */

#ifndef _SourceSafeTypeLib_H_
#define _SourceSafeTypeLib_H_

DEFINE_GUID(LIBID_SourceSafeTypeLib,0x783CD4E0L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);
#ifndef BEGIN_INTERFACE
#define BEGIN_INTERFACE
#endif

typedef enum _VSSFlags {
    VSSFLAG_USERRONO = 1,
    VSSFLAG_USERROYES = 2,
    VSSFLAG_TIMENOW = 4,
    VSSFLAG_TIMEMOD = 8,
    VSSFLAG_TIMEUPD = 12,
    VSSFLAG_EOLCR = 16,
    VSSFLAG_EOLLF = 32,
    VSSFLAG_EOLCRLF = 48,
    VSSFLAG_REPASK = 64,
    VSSFLAG_REPREPLACE = 128,
    VSSFLAG_REPSKIP = 192,
    VSSFLAG_REPMERGE = 256,
    VSSFLAG_CMPFULL = 512,
    VSSFLAG_CMPTIME = 1024,
    VSSFLAG_CMPCHKSUM = 1536,
    VSSFLAG_CMPFAIL = 2048,
    VSSFLAG_RECURSNO = 4096,
    VSSFLAG_RECURSYES = 8192,
    VSSFLAG_FORCEDIRNO = 16384,
    VSSFLAG_FORCEDIRYES = 32768,
    VSSFLAG_KEEPNO = 65536,
    VSSFLAG_KEEPYES = 131072,
    VSSFLAG_DELNO = 262144,
    VSSFLAG_DELYES = 524288,
    VSSFLAG_DELNOREPLACE = 786432,
    VSSFLAG_BINTEST = 1048576,
    VSSFLAG_BINBINARY = 2097152,
    VSSFLAG_BINTEXT = 3145728,
    VSSFLAG_DELTAYES = 4194304,
    VSSFLAG_DELTANO = 8388608,
    VSSFLAG_UPDASK = 16777216,
    VSSFLAG_UPDUPDATE = 33554432,
    VSSFLAG_UPDUNCH = 50331648,
    VSSFLAG_GETYES = 67108864,
    VSSFLAG_GETNO = 134217728,
    VSSFLAG_CHKEXCLUSIVEYES = 268435456,
    VSSFLAG_CHKEXCLUSIVENO = 536870912,
    VSSFLAG_HISTIGNOREFILES = 1073741824
} VSSFlags;

typedef enum _VSSFileStatus {
    VSSFILE_NOTCHECKEDOUT = 0,
    VSSFILE_CHECKEDOUT = 1,
    VSSFILE_CHECKEDOUT_ME = 2
} VSSFileStatus;

typedef enum _VSSItemType {
    VSSITEM_PROJECT = 0,
    VSSITEM_FILE = 1
} VSSItemType;

typedef enum _VSSRights {
    VSSRIGHTS_READ = 1,
    VSSRIGHTS_CHKUPD = 2,
    VSSRIGHTS_ADDRENREM = 4,
    VSSRIGHTS_DESTROY = 8,
    VSSRIGHTS_ALL = 15,
    VSSRIGHTS_INHERITED = 16
} VSSRights;

interface IVSSItem;

interface IVSSItems;

interface IVSSVersions;

interface IVSSVersion;

interface IVSSCheckouts;

interface IVSSCheckout;

interface IVSSUsers;

interface IVSSUser;

DEFINE_GUID(IID_IVSSItemOld,0x783CD4E1L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSSItemOld */
#undef INTERFACE
#define INTERFACE IVSSItemOld

DECLARE_INTERFACE_(IVSSItemOld, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSItemOld methods */
    STDMETHOD_(HRESULT, get_Spec)(THIS_ BSTR FAR* pSpec) PURE;
    STDMETHOD_(HRESULT, get_Binary)(THIS_ VARIANT_BOOL FAR* pbBinary) PURE;
    STDMETHOD_(HRESULT, put_Binary)(THIS_ VARIANT_BOOL bBinary) PURE;
    STDMETHOD_(HRESULT, get_Deleted)(THIS_ VARIANT_BOOL FAR* pbDeleted) PURE;
    STDMETHOD_(HRESULT, put_Deleted)(THIS_ VARIANT_BOOL bDeleted) PURE;
    STDMETHOD_(HRESULT, get_Type)(THIS_ int FAR* piType) PURE;
    STDMETHOD_(HRESULT, get_LocalSpec)(THIS_ BSTR FAR* pLocal) PURE;
    STDMETHOD_(HRESULT, put_LocalSpec)(THIS_ BSTR Local) PURE;
    STDMETHOD_(HRESULT, get_Name)(THIS_ BSTR FAR* pName) PURE;
    STDMETHOD_(HRESULT, put_Name)(THIS_ BSTR Name) PURE;
    STDMETHOD_(HRESULT, get_Parent)(THIS_ IVSSItem FAR* FAR* ppIParent) PURE;
    STDMETHOD_(HRESULT, get_VersionNumber)(THIS_ long FAR* piVersion) PURE;
    STDMETHOD_(HRESULT, get_Items)(THIS_ VARIANT_BOOL IncludeDeleted, IVSSItems FAR* FAR* ppIItems) PURE;
    STDMETHOD_(HRESULT, Get)(THIS_ BSTR FAR* Local, long iFlags) PURE;
    STDMETHOD_(HRESULT, Checkout)(THIS_ BSTR Comment, BSTR Local, long iFlags) PURE;
    STDMETHOD_(HRESULT, Checkin)(THIS_ BSTR Comment, BSTR Local, long iFlags) PURE;
    STDMETHOD_(HRESULT, UndoCheckout)(THIS_ BSTR Local, long iFlags) PURE;
    STDMETHOD_(HRESULT, get_IsCheckedOut)(THIS_ long FAR* piStatus) PURE;
    STDMETHOD_(HRESULT, get_Checkouts)(THIS_ IVSSCheckouts FAR* FAR* ppICheckouts) PURE;
    STDMETHOD_(HRESULT, get_IsDifferent)(THIS_ BSTR Local, VARIANT_BOOL FAR* pbDifferent) PURE;
    STDMETHOD_(HRESULT, Add)(THIS_ BSTR Local, BSTR Comment, long iFlags, IVSSItem FAR* FAR* ppIItem) PURE;
    STDMETHOD_(HRESULT, NewSubproject)(THIS_ BSTR Name, BSTR Comment, IVSSItem FAR* FAR* ppIItem) PURE;
    STDMETHOD_(HRESULT, Share)(THIS_ IVSSItem FAR* pIItem, BSTR Comment, long iFlags) PURE;
    STDMETHOD_(HRESULT, Destroy)(THIS) PURE;
    STDMETHOD_(HRESULT, Move)(THIS_ IVSSItem FAR* pINewParent) PURE;
    STDMETHOD_(HRESULT, Label)(THIS_ BSTR Label, BSTR Comment) PURE;
    STDMETHOD_(HRESULT, get_Versions)(THIS_ long iFlags, IVSSVersions FAR* FAR* pIVersions) PURE;
    STDMETHOD_(HRESULT, get_Version)(THIS_ VARIANT Version, IVSSItem FAR* FAR* ppIItem) PURE;
};

DEFINE_GUID(IID_IVSSItem,0x2A0DE0E7L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

/* Definition of interface: IVSSItem */
#undef INTERFACE
#define INTERFACE IVSSItem

DECLARE_INTERFACE_(IVSSItem, IVSSItemOld)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IVSSItemOld methods */
    STDMETHOD_(HRESULT, get_Spec)(THIS_ BSTR FAR* pSpec) PURE;
    STDMETHOD_(HRESULT, get_Binary)(THIS_ VARIANT_BOOL FAR* pbBinary) PURE;
    STDMETHOD_(HRESULT, put_Binary)(THIS_ VARIANT_BOOL bBinary) PURE;
    STDMETHOD_(HRESULT, get_Deleted)(THIS_ VARIANT_BOOL FAR* pbDeleted) PURE;
    STDMETHOD_(HRESULT, put_Deleted)(THIS_ VARIANT_BOOL bDeleted) PURE;
    STDMETHOD_(HRESULT, get_Type)(THIS_ int FAR* piType) PURE;
    STDMETHOD_(HRESULT, get_LocalSpec)(THIS_ BSTR FAR* pLocal) PURE;
    STDMETHOD_(HRESULT, put_LocalSpec)(THIS_ BSTR Local) PURE;
    STDMETHOD_(HRESULT, get_Name)(THIS_ BSTR FAR* pName) PURE;
    STDMETHOD_(HRESULT, put_Name)(THIS_ BSTR Name) PURE;
    STDMETHOD_(HRESULT, get_Parent)(THIS_ IVSSItem FAR* FAR* ppIParent) PURE;
    STDMETHOD_(HRESULT, get_VersionNumber)(THIS_ long FAR* piVersion) PURE;
    STDMETHOD_(HRESULT, get_Items)(THIS_ VARIANT_BOOL IncludeDeleted, IVSSItems FAR* FAR* ppIItems) PURE;
    STDMETHOD_(HRESULT, Get)(THIS_ BSTR FAR* Local, long iFlags) PURE;
    STDMETHOD_(HRESULT, Checkout)(THIS_ BSTR Comment, BSTR Local, long iFlags) PURE;
    STDMETHOD_(HRESULT, Checkin)(THIS_ BSTR Comment, BSTR Local, long iFlags) PURE;
    STDMETHOD_(HRESULT, UndoCheckout)(THIS_ BSTR Local, long iFlags) PURE;
    STDMETHOD_(HRESULT, get_IsCheckedOut)(THIS_ long FAR* piStatus) PURE;
    STDMETHOD_(HRESULT, get_Checkouts)(THIS_ IVSSCheckouts FAR* FAR* ppICheckouts) PURE;
    STDMETHOD_(HRESULT, get_IsDifferent)(THIS_ BSTR Local, VARIANT_BOOL FAR* pbDifferent) PURE;
    STDMETHOD_(HRESULT, Add)(THIS_ BSTR Local, BSTR Comment, long iFlags, IVSSItem FAR* FAR* ppIItem) PURE;
    STDMETHOD_(HRESULT, NewSubproject)(THIS_ BSTR Name, BSTR Comment, IVSSItem FAR* FAR* ppIItem) PURE;
    STDMETHOD_(HRESULT, Share)(THIS_ IVSSItem FAR* pIItem, BSTR Comment, long iFlags) PURE;
    STDMETHOD_(HRESULT, Destroy)(THIS) PURE;
    STDMETHOD_(HRESULT, Move)(THIS_ IVSSItem FAR* pINewParent) PURE;
    STDMETHOD_(HRESULT, Label)(THIS_ BSTR Label, BSTR Comment) PURE;
    STDMETHOD_(HRESULT, get_Versions)(THIS_ long iFlags, IVSSVersions FAR* FAR* pIVersions) PURE;
    STDMETHOD_(HRESULT, get_Version)(THIS_ VARIANT Version, IVSSItem FAR* FAR* ppIItem) PURE;
#endif

    /* IVSSItem methods */
    STDMETHOD_(HRESULT, get_Links)(THIS_ IVSSItems FAR* FAR* ppIItems) PURE;
    STDMETHOD_(HRESULT, Branch)(THIS_ BSTR Comment, long iFlags, IVSSItem FAR* FAR* ppIItem) PURE;
};

DEFINE_GUID(IID_IVSSVersions,0x783CD4E7L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSSVersions */
#undef INTERFACE
#define INTERFACE IVSSVersions

DECLARE_INTERFACE_(IVSSVersions, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSVersions methods */
    STDMETHOD(_NewEnum)(THIS_ IUnknown * FAR* ppIEnum) PURE;
};

DEFINE_GUID(IID_IVSSVersionOld,0x783CD4E8L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSSVersionOld */
#undef INTERFACE
#define INTERFACE IVSSVersionOld

DECLARE_INTERFACE_(IVSSVersionOld, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSVersionOld methods */
    STDMETHOD_(HRESULT, get_Username)(THIS_ BSTR FAR* pUsername) PURE;
    STDMETHOD_(HRESULT, get_VersionNumber)(THIS_ long FAR* piVersion) PURE;
    STDMETHOD_(HRESULT, get_Action)(THIS_ BSTR FAR* pAction) PURE;
    STDMETHOD_(HRESULT, get_Date)(THIS_ DATE FAR* pDate) PURE;
    STDMETHOD_(HRESULT, get_Comment)(THIS_ BSTR FAR* pComment) PURE;
    STDMETHOD_(HRESULT, get_Label)(THIS_ BSTR FAR* pLabel) PURE;
    STDMETHOD_(HRESULT, get_VSSItem)(THIS_ IVSSItem FAR* FAR* ppIItem) PURE;
};

DEFINE_GUID(IID_IVSSVersion,0x2A0DE0E9L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

/* Definition of interface: IVSSVersion */
#undef INTERFACE
#define INTERFACE IVSSVersion

DECLARE_INTERFACE_(IVSSVersion, IVSSVersionOld)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IVSSVersionOld methods */
    STDMETHOD_(HRESULT, get_Username)(THIS_ BSTR FAR* pUsername) PURE;
    STDMETHOD_(HRESULT, get_VersionNumber)(THIS_ long FAR* piVersion) PURE;
    STDMETHOD_(HRESULT, get_Action)(THIS_ BSTR FAR* pAction) PURE;
    STDMETHOD_(HRESULT, get_Date)(THIS_ DATE FAR* pDate) PURE;
    STDMETHOD_(HRESULT, get_Comment)(THIS_ BSTR FAR* pComment) PURE;
    STDMETHOD_(HRESULT, get_Label)(THIS_ BSTR FAR* pLabel) PURE;
    STDMETHOD_(HRESULT, get_VSSItem)(THIS_ IVSSItem FAR* FAR* ppIItem) PURE;
#endif

    /* IVSSVersion methods */
    STDMETHOD_(HRESULT, get_LabelComment)(THIS_ BSTR FAR* pComment) PURE;
};

DEFINE_GUID(IID_IVSSItems,0x783CD4E5L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSSItems */
#undef INTERFACE
#define INTERFACE IVSSItems

DECLARE_INTERFACE_(IVSSItems, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSItems methods */
    STDMETHOD_(HRESULT, get_Count)(THIS_ long FAR* piCount) PURE;
    STDMETHOD_(HRESULT, get_Item)(THIS_ VARIANT sItem, IVSSItem FAR* FAR* ppIItem) PURE;
    STDMETHOD_(HRESULT, _NewEnum)(THIS_ IUnknown * FAR* ppIEnum) PURE;
};

DEFINE_GUID(IID_IVSSCheckouts,0x8903A770L,0xF55F,0x11CF,0x92,0x27,0x00,0xAA,0x00,0xA1,0xEB,0x95);

/* Definition of interface: IVSSCheckouts */
#undef INTERFACE
#define INTERFACE IVSSCheckouts

DECLARE_INTERFACE_(IVSSCheckouts, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSCheckouts methods */
    STDMETHOD_(HRESULT, get_Count)(THIS_ long FAR* piCount) PURE;
    STDMETHOD_(HRESULT, get_Item)(THIS_ VARIANT sItem, IVSSCheckout FAR* FAR* ppICheckout) PURE;
    STDMETHOD_(HRESULT, _NewEnum)(THIS_ IUnknown * FAR* ppIEnum) PURE;
};

DEFINE_GUID(IID_IVSSCheckout,0x783CD4E6L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSSCheckout */
#undef INTERFACE
#define INTERFACE IVSSCheckout

DECLARE_INTERFACE_(IVSSCheckout, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSCheckout methods */
    STDMETHOD_(HRESULT, get_Username)(THIS_ BSTR FAR* pUsername) PURE;
    STDMETHOD_(HRESULT, get_Date)(THIS_ DATE FAR* pDate) PURE;
    STDMETHOD_(HRESULT, get_LocalSpec)(THIS_ BSTR FAR* pLocal) PURE;
    STDMETHOD_(HRESULT, get_Machine)(THIS_ BSTR FAR* pMachine) PURE;
    STDMETHOD_(HRESULT, get_Project)(THIS_ BSTR FAR* pProject) PURE;
    STDMETHOD_(HRESULT, get_Comment)(THIS_ BSTR FAR* pComment) PURE;
    STDMETHOD_(HRESULT, get_VersionNumber)(THIS_ long FAR* piVersion) PURE;
};

DEFINE_GUID(IID_IVSSDatabaseOld,0x783CD4E2L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSSDatabaseOld */
#undef INTERFACE
#define INTERFACE IVSSDatabaseOld

DECLARE_INTERFACE_(IVSSDatabaseOld, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSDatabaseOld methods */
    STDMETHOD_(HRESULT, Open)(THIS_ BSTR SrcSafeIni, BSTR Username, BSTR Password) PURE;
    STDMETHOD_(HRESULT, get_SrcSafeIni)(THIS_ BSTR FAR* pSrcSafeIni) PURE;
    STDMETHOD_(HRESULT, get_DatabaseName)(THIS_ BSTR FAR* pDatabaseName) PURE;
    STDMETHOD_(HRESULT, get_UserName)(THIS_ BSTR FAR* pUsername) PURE;
    STDMETHOD_(HRESULT, get_CurrentProject)(THIS_ BSTR FAR* pPrj) PURE;
    STDMETHOD_(HRESULT, put_CurrentProject)(THIS_ BSTR Prj) PURE;
    STDMETHOD_(HRESULT, get_VSSItem)(THIS_ BSTR Spec, VARIANT_BOOL Deleted, IVSSItem FAR* FAR* ppIVSSItem) PURE;
};

DEFINE_GUID(IID_IVSSDatabase,0x2A0DE0E2L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

/* Definition of interface: IVSSDatabase */
#undef INTERFACE
#define INTERFACE IVSSDatabase

DECLARE_INTERFACE_(IVSSDatabase, IVSSDatabaseOld)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IVSSDatabaseOld methods */
    STDMETHOD_(HRESULT, Open)(THIS_ BSTR SrcSafeIni, BSTR Username, BSTR Password) PURE;
    STDMETHOD_(HRESULT, get_SrcSafeIni)(THIS_ BSTR FAR* pSrcSafeIni) PURE;
    STDMETHOD_(HRESULT, get_DatabaseName)(THIS_ BSTR FAR* pDatabaseName) PURE;
    STDMETHOD_(HRESULT, get_UserName)(THIS_ BSTR FAR* pUsername) PURE;
    STDMETHOD_(HRESULT, get_CurrentProject)(THIS_ BSTR FAR* pPrj) PURE;
    STDMETHOD_(HRESULT, put_CurrentProject)(THIS_ BSTR Prj) PURE;
    STDMETHOD_(HRESULT, get_VSSItem)(THIS_ BSTR Spec, VARIANT_BOOL Deleted, IVSSItem FAR* FAR* ppIVSSItem) PURE;
#endif

    /* IVSSDatabase methods */
    STDMETHOD_(HRESULT, AddUser)(THIS_ BSTR User, BSTR Password, VARIANT_BOOL ReadOnly, IVSSUser FAR* FAR* ppIUser) PURE;
    STDMETHOD_(HRESULT, get_User)(THIS_ BSTR Name, IVSSUser FAR* FAR* ppIUser) PURE;
    STDMETHOD_(HRESULT, get_Users)(THIS_ IVSSUsers FAR* FAR* ppIUsers) PURE;
    STDMETHOD_(HRESULT, get_ProjectRightsEnabled)(THIS_ VARIANT_BOOL FAR* pEnabled) PURE;
    STDMETHOD_(HRESULT, put_ProjectRightsEnabled)(THIS_ VARIANT_BOOL pEnabled) PURE;
    STDMETHOD_(HRESULT, get_DefaultProjectRights)(THIS_ long FAR* pRights) PURE;
    STDMETHOD_(HRESULT, put_DefaultProjectRights)(THIS_ long Rights) PURE;
};

DEFINE_GUID(IID_IVSSUser,0x2A0DE0E3L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

/* Definition of interface: IVSSUser */
#undef INTERFACE
#define INTERFACE IVSSUser

DECLARE_INTERFACE_(IVSSUser, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSUser methods */
    STDMETHOD_(HRESULT, Delete)(THIS) PURE;
    STDMETHOD_(HRESULT, get_Name)(THIS_ BSTR FAR* pName) PURE;
    STDMETHOD_(HRESULT, put_Name)(THIS_ BSTR Name) PURE;
    STDMETHOD_(HRESULT, put_Password)(THIS_ BSTR Password) PURE;
    STDMETHOD_(HRESULT, get_ReadOnly)(THIS_ VARIANT_BOOL FAR* pReadOnly) PURE;
    STDMETHOD_(HRESULT, put_ReadOnly)(THIS_ VARIANT_BOOL ReadOnly) PURE;
    STDMETHOD_(HRESULT, get_ProjectRights)(THIS_ BSTR Project, long FAR* piRightsOut) PURE;
    STDMETHOD_(HRESULT, put_ProjectRights)(THIS_ BSTR Project, long iRightsIn) PURE;
    STDMETHOD_(HRESULT, RemoveProjectRights)(THIS_ BSTR Project) PURE;
};

DEFINE_GUID(IID_IVSSUsers,0x2A0DE0E4L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

/* Definition of interface: IVSSUsers */
#undef INTERFACE
#define INTERFACE IVSSUsers

DECLARE_INTERFACE_(IVSSUsers, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSSUsers methods */
    STDMETHOD_(HRESULT, get_Count)(THIS_ long FAR* piCount) PURE;
    STDMETHOD_(HRESULT, get_Item)(THIS_ VARIANT sItem, IVSSUser FAR* FAR* ppIUser) PURE;
    STDMETHOD_(HRESULT, _NewEnum)(THIS_ IUnknown * FAR* ppIEnum) PURE;
};

DEFINE_GUID(CLSID_VSSItem,0x783CD4E3L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

#ifdef __cplusplus
class VSSItem;
#endif

DEFINE_GUID(CLSID_VSSVersion,0x783CD4ECL,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

#ifdef __cplusplus
class VSSVersion;
#endif

DEFINE_GUID(CLSID_VSSCheckout,0x2A0DE0E0L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

#ifdef __cplusplus
class VSSCheckout;
#endif

DEFINE_GUID(CLSID_VSSDatabase,0x783CD4E4L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

#ifdef __cplusplus
class VSSDatabase;
#endif

DEFINE_GUID(CLSID_VSSUser,0x2A0DE0E5L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

#ifdef __cplusplus
class VSSUser;
#endif

DEFINE_GUID(IID_IVSSEventsOld,0x783CD4E9L,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSSEventsOld */
#undef INTERFACE
#define INTERFACE IVSSEventsOld

DECLARE_INTERFACE_(IVSSEventsOld, IUnknown)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;
#endif

    /* IVSSEventsOld methods */
    STDMETHOD_(HRESULT, BeforeAdd)(THIS_ IVSSItem FAR* pIPrj, BSTR Local, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterAdd)(THIS_ IVSSItem FAR* pIItem, BSTR Local) PURE;
    STDMETHOD_(HRESULT, BeforeCheckout)(THIS_ IVSSItem FAR* pIItem, BSTR Local, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterCheckout)(THIS_ IVSSItem FAR* pIItem, BSTR Local) PURE;
    STDMETHOD_(HRESULT, BeforeCheckin)(THIS_ IVSSItem FAR* pIItem, BSTR Local, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterCheckin)(THIS_ IVSSItem FAR* pIItem, BSTR Local) PURE;
    STDMETHOD_(HRESULT, BeforeUndoCheckout)(THIS_ IVSSItem FAR* pIItem, BSTR Local, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterUndoCheckout)(THIS_ IVSSItem FAR* pIItem, BSTR Local) PURE;
    STDMETHOD_(HRESULT, BeforeRename)(THIS_ IVSSItem FAR* pIItem, BSTR NewName, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterRename)(THIS_ IVSSItem FAR* pIItem, BSTR OldName) PURE;
    STDMETHOD_(HRESULT, BeforeBranch)(THIS_ IVSSItem FAR* pIItem, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterBranch)(THIS_ IVSSItem FAR* pIItem) PURE;
    STDMETHOD_(HRESULT, BeforeEvent)(THIS_ long iEvent, IVSSItem FAR* pIItem, BSTR Str, VARIANT var, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterEvent)(THIS_ long iEvent, IVSSItem FAR* pIItem, BSTR Str, VARIANT var) PURE;
};

DEFINE_GUID(IID_IVSSEvents,0x2A0DE0E8L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

/* Definition of interface: IVSSEvents */
#undef INTERFACE
#define INTERFACE IVSSEvents

DECLARE_INTERFACE_(IVSSEvents, IUnknown)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;
#endif

    /* IVSSEvents methods */
    STDMETHOD_(HRESULT, BeforeAdd)(THIS_ IVSSItem FAR* pIPrj, BSTR Local, BSTR Comment, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterAdd)(THIS_ IVSSItem FAR* pIItem, BSTR Local, BSTR Comment) PURE;
    STDMETHOD_(HRESULT, BeforeCheckout)(THIS_ IVSSItem FAR* pIItem, BSTR Local, BSTR Comment, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterCheckout)(THIS_ IVSSItem FAR* pIItem, BSTR Local, BSTR Comment) PURE;
    STDMETHOD_(HRESULT, BeforeCheckin)(THIS_ IVSSItem FAR* pIItem, BSTR Local, BSTR Comment, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterCheckin)(THIS_ IVSSItem FAR* pIItem, BSTR Local, BSTR Comment) PURE;
    STDMETHOD_(HRESULT, BeforeUndoCheckout)(THIS_ IVSSItem FAR* pIItem, BSTR Local, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterUndoCheckout)(THIS_ IVSSItem FAR* pIItem, BSTR Local) PURE;
    STDMETHOD_(HRESULT, BeforeRename)(THIS_ IVSSItem FAR* pIItem, BSTR NewName, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterRename)(THIS_ IVSSItem FAR* pIItem, BSTR OldName) PURE;
    STDMETHOD_(HRESULT, BeforeBranch)(THIS_ IVSSItem FAR* pIItem, BSTR Comment, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterBranch)(THIS_ IVSSItem FAR* pIItem, BSTR Comment) PURE;
    STDMETHOD_(HRESULT, BeginCommand)(THIS_ long unused, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, EndCommand)(THIS_ long unused) PURE;
    STDMETHOD_(HRESULT, BeforeEvent)(THIS_ long iEvent, IVSSItem FAR* pIItem, BSTR Str, VARIANT var, VARIANT_BOOL FAR* pbContinue) PURE;
    STDMETHOD_(HRESULT, AfterEvent)(THIS_ long iEvent, IVSSItem FAR* pIItem, BSTR Str, VARIANT var) PURE;
};

DEFINE_GUID(IID_IVSS,0x783CD4EBL,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSS */
#undef INTERFACE
#define INTERFACE IVSS

DECLARE_INTERFACE_(IVSS, IDispatch)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      OLECHAR FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;
#endif

    /* IVSS methods */
    STDMETHOD_(HRESULT, get_VSSDatabase)(THIS_ IVSSDatabase FAR* FAR* ppIVSSDatabase) PURE;
};

DEFINE_GUID(IID_IVSSEventHandler,0x783CD4EAL,0x9D54,0x11CF,0xB8,0xEE,0x00,0x60,0x8C,0xC9,0xA7,0x1F);

/* Definition of interface: IVSSEventHandler */
#undef INTERFACE
#define INTERFACE IVSSEventHandler

DECLARE_INTERFACE_(IVSSEventHandler, IUnknown)
{
BEGIN_INTERFACE
#ifndef NO_BASEINTERFACE_FUNCS

    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;
#endif

    /* IVSSEventHandler methods */
    STDMETHOD(Init)(THIS_ IVSS FAR* pIVSS) PURE;
};

DEFINE_GUID(CLSID_VSSApp,0x2A0DE0E1L,0x2E9F,0x11D0,0x92,0x36,0x00,0xAA,0x00,0xA1,0xEB,0x95);

#ifdef __cplusplus
class VSSApp;
#endif

#endif

--- NEW FILE: StdAfx.cpp ---
// stdafx.cpp : source file that includes just the standard includes
//  stdafx.pch will be the pre-compiled header
//  stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#include <statreg.cpp>
#endif

#include <atlimpl.cpp>

--- NEW FILE: StdAfx.h ---
// stdafx.h : include file for standard system include files,
//      or project specific include files that are used frequently,
//      but are changed infrequently

#if !defined(AFX_STDAFX_H__6DE09E50_EB29_43FD_A37B_A41FA6758CA0__INCLUDED_)
#define AFX_STDAFX_H__6DE09E50_EB29_43FD_A37B_A41FA6758CA0__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define STRICT
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif
#define _ATL_APARTMENT_THREADED

#include <afxwin.h>
#include <afxdisp.h>

#include <atlbase.h>
//You may derive a class from CComModule and use it if you want to override
//something, but do not change the name of _Module
extern CComModule _Module;
#include <atlcom.h>

#define _NOTHREADS
#include <stl_config.h>
#undef __SGI_STL_NO_ARROW_OPERATOR
#define __SGI_STL_INTERNAL_RELOPS


#include "CoreLib.h"
#include "CommonSmart.h"
#include "CommonStl.h"
#include "CoreUtilities.h"

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__6DE09E50_EB29_43FD_A37B_A41FA6758CA0__INCLUDED)

--- NEW FILE: VSSLoginDlg.cpp ---
// VSSLoginDlg.cpp : implementation file
//

#include "stdafx.h"
#include "resource.h"
#include "VSSLoginDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CVSSLoginDlg dialog


CVSSLoginDlg::CVSSLoginDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CVSSLoginDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CVSSLoginDlg)
	m_password = _T("");
	m_user = _T("");
	m_database = _T("");
	m_project = _T("");
	//}}AFX_DATA_INIT
}


void CVSSLoginDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CVSSLoginDlg)
	DDX_Text(pDX, IDC_EDIT_PWD, m_password);
	DDX_Text(pDX, IDC_EDIT_USER, m_user);
	DDX_Text(pDX, IDC_STATIC_DATABASE, m_database);
	DDX_Text(pDX, IDC_STATIC_PROJECT, m_project);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CVSSLoginDlg, CDialog)
	//{{AFX_MSG_MAP(CVSSLoginDlg)
		// NOTE: the ClassWizard will add message map macros here
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVSSLoginDlg message handlers

--- NEW FILE: VSSLoginDlg.h ---
#if !defined(AFX_VSSLOGINDLG_H__912CEEC2_1AD6_4BCD_B827_E8604CEE7889__INCLUDED_)
#define AFX_VSSLOGINDLG_H__912CEEC2_1AD6_4BCD_B827_E8604CEE7889__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// VSSLoginDlg.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CVSSLoginDlg dialog

class CVSSLoginDlg : public CDialog
{
// Construction
public:
	CVSSLoginDlg(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
	//{{AFX_DATA(CVSSLoginDlg)
	enum { IDD = IDD_DIALOG_VSSLOGIN };
	CString	m_password;
	CString	m_user;
	CString	m_database;
	CString	m_project;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CVSSLoginDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CVSSLoginDlg)
		// NOTE: the ClassWizard will add member functions here
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_VSSLOGINDLG_H__912CEEC2_1AD6_4BCD_B827_E8604CEE7889__INCLUDED_)

--- NEW FILE: XmlBackEnd.cpp ---
// XmlBackEnd.cpp : Implementation of DLL Exports.


// Note: Proxy/Stub Information
//      To build a separate proxy/stub DLL, 
//      run nmake -f XmlBackEndps.mk in the project directory.

#include "stdafx.h"
#include "resource.h"
#include <initguid.h>
#include "Core.h"
#include "Core_i.c"
#include "CoreLib.h"
#include "CoreLib_i.c"
#include "XmlBackEnd.h"
#include "XmlBackEnd_i.c"
#include "CoreXmlFile.h"


CComModule _Module;

BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_CoreXmlFile, CCoreXmlFile)
END_OBJECT_MAP()

class CXmlBackEndApp : public CWinApp
{
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CXmlBackEndApp)
	public:
    virtual BOOL InitInstance();
    virtual int ExitInstance();
	//}}AFX_VIRTUAL

	//{{AFX_MSG(CXmlBackEndApp)
		// NOTE - the ClassWizard will add and remove member functions here.
		//    DO NOT EDIT what you see in these blocks of generated code !
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(CXmlBackEndApp, CWinApp)
	//{{AFX_MSG_MAP(CXmlBackEndApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

CXmlBackEndApp theApp;

BOOL CXmlBackEndApp::InitInstance()
{
    _Module.Init(ObjectMap, m_hInstance, &LIBID_XMLBACKENDLib);
    return CWinApp::InitInstance();
}

int CXmlBackEndApp::ExitInstance()
{
    _Module.Term();
    return CWinApp::ExitInstance();
}

/////////////////////////////////////////////////////////////////////////////
// Used to determine whether the DLL can be unloaded by OLE

STDAPI DllCanUnloadNow(void)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    return (AfxDllCanUnloadNow()==S_OK && _Module.GetLockCount()==0) ? S_OK : S_FALSE;
}

/////////////////////////////////////////////////////////////////////////////
// Returns a class factory to create an object of the requested type

STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
    return _Module.GetClassObject(rclsid, riid, ppv);
}

/////////////////////////////////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry

STDAPI DllRegisterServer(void)
{
    // registers object, typelib and all interfaces in typelib
    return _Module.RegisterServer(TRUE);
}

/////////////////////////////////////////////////////////////////////////////
// DllUnregisterServer - Removes entries from the system registry

STDAPI DllUnregisterServer(void)
{
    return _Module.UnregisterServer(TRUE);
}



--- NEW FILE: XmlBackEnd.def ---
; XmlBackEnd.def : Declares the module parameters.

LIBRARY      "XmlBackEnd.DLL"

EXPORTS
	DllCanUnloadNow     @1 PRIVATE
	DllGetClassObject   @2 PRIVATE
	DllRegisterServer   @3 PRIVATE
	DllUnregisterServer	@4 PRIVATE

--- NEW FILE: XmlBackEnd.dsp ---
# Microsoft Developer Studio Project File - Name="XmlBackEnd" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **

# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102

CFG=XmlBackEnd - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE 
!MESSAGE NMAKE /f "XmlBackEnd.mak".
!MESSAGE 
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE 
!MESSAGE NMAKE /f "XmlBackEnd.mak" CFG="XmlBackEnd - Win32 Debug"
!MESSAGE 
!MESSAGE Possible choices for configuration are:
!MESSAGE 
!MESSAGE "XmlBackEnd - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "XmlBackEnd - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE 

# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe

!IF  "$(CFG)" == "XmlBackEnd - Win32 Debug"

# PROP BASE Use_MFC 2
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 2
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../Include" /I "../Include/ODBC" /I "../Include/repository" /I "../Interfaces" /I "../Include/STL" /I "../Common" /I "../Gme" /I "../Core" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /FR /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 xerces-c_2D.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /libpath:"../lib"
# Begin Custom Build - Performing registration
OutDir=.\Debug
TargetPath=.\Debug\XmlBackEnd.dll
InputPath=.\Debug\XmlBackEnd.dll
SOURCE="$(InputPath)"

"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
	regsvr32 /s /c "$(TargetPath)" 
	echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" 
	
# End Custom Build

!ELSEIF  "$(CFG)" == "XmlBackEnd - Win32 Release"

# PROP BASE Use_MFC 2
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "XmlBackEnd___Win32_Release"
# PROP BASE Intermediate_Dir "XmlBackEnd___Win32_Release"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 2
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O1 /I "../Include" /I "../Include/ODBC" /I "../Include/repository" /I "../Interfaces" /I "../Include/STL" /I "../Common" /I "../Gme" /I "../Core" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O1 /I "../Include" /I "../Include/ODBC" /I "../Include/repository" /I "../Interfaces" /I "../Include/STL" /I "../Common" /I "../Gme" /I "../Core" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /FR /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 xerces-c_2.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"../lib"
# ADD LINK32 xerces-c_2.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"../lib"
# Begin Custom Build - Performing registration
OutDir=.\Release
TargetPath=.\Release\XmlBackEnd.dll
InputPath=.\Release\XmlBackEnd.dll
SOURCE="$(InputPath)"

"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
	regsvr32 /s /c "$(TargetPath)" 
	echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" 
	
# End Custom Build

!ENDIF 

# Begin Target

# Name "XmlBackEnd - Win32 Debug"
# Name "XmlBackEnd - Win32 Release"
# Begin Group "Source Files"

# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File

SOURCE=.\ccauto.IDL
# End Source File
# Begin Source File

SOURCE=..\Common\CommonError.cpp
# End Source File
# Begin Source File

SOURCE=..\Common\CommonSmart.cpp
# End Source File
# Begin Source File

SOURCE=.\CoreXmlFile.cpp
# End Source File
# Begin Source File

SOURCE=.\StdAfx.cpp
# ADD CPP /Yc"stdafx.h"
# End Source File
# Begin Source File

SOURCE=.\VSSLoginDlg.cpp
# End Source File
# Begin Source File

SOURCE=.\XmlBackEnd.cpp
# End Source File
# Begin Source File

SOURCE=.\XmlBackEnd.def
# End Source File
# Begin Source File

SOURCE=.\XmlBackEnd.idl

!IF  "$(CFG)" == "XmlBackEnd - Win32 Debug"

# ADD MTL /I "../Interfaces" /tlb ".\XmlBackEnd.tlb" /h "XmlBackEnd.h" /iid "XmlBackEnd_i.c" /Oicf

!ELSEIF  "$(CFG)" == "XmlBackEnd - Win32 Release"

# ADD BASE MTL /tlb ".\XmlBackEnd.tlb" /h "XmlBackEnd.h" /iid "XmlBackEnd_i.c" /Oicf
# ADD MTL /tlb ".\XmlBackEnd.tlb" /h "XmlBackEnd.h" /iid "XmlBackEnd_i.c" /Oicf

!ENDIF 

# End Source File
# Begin Source File

SOURCE=.\XmlBackEnd.rc
# End Source File
# End Group
# Begin Group "Header Files"

# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File

SOURCE=.\ccauto.h
# End Source File
# Begin Source File

SOURCE=.\CoreXmlFile.h
# End Source File
# Begin Source File

SOURCE=.\Resource.h
# End Source File
# Begin Source File

SOURCE=.\StdAfx.h
# End Source File
# Begin Source File

SOURCE=.\VSSLoginDlg.h
# End Source File
# End Group
# Begin Group "Resource Files"

# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File

SOURCE=.\CoreXmlFile.rgs
# End Source File
# End Group
# End Target
# End Project

--- NEW FILE: XmlBackEnd.idl ---
// XmlBackEnd.idl : IDL source for XmlBackEnd.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (XmlBackEnd.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";

import "Core.idl";
	
	
[
	uuid(09107441-E750-4516-B6D0-DE6358FDBA9B),
	version(1.0),
	helpstring("XmlBackEnd 1.0 Type Library")
]
library XMLBACKENDLib
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	
	[
		uuid(F729BE0C-ACE5-470B-8F98-DAE52D6A5949),
		helpstring("CoreXmlFile Class")
	]
	coclass CoreXmlFile
	{
		[default] interface ICoreStorage;
		interface ISupportErrorInfo;
	};
};

--- NEW FILE: XmlBackEnd.rc ---
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE DISCARDABLE 
BEGIN
    "1 TYPELIB ""XmlBackEnd.tlb""\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904B0"
        BEGIN
            VALUE "CompanyName", "\0"
            VALUE "FileDescription", "XmlBackEnd Module\0"
            VALUE "FileVersion", "1, 0, 0, 1\0"
            VALUE "InternalName", "XmlBackEnd\0"
            VALUE "LegalCopyright", "Copyright 2004\0"
            VALUE "OriginalFilename", "XmlBackEnd.DLL\0"
            VALUE "ProductName", "XmlBackEnd Module\0"
            VALUE "ProductVersion", "1, 0, 0, 1\0"
            VALUE "OLESelfRegister", "\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

#endif    // !_MAC


/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_DIALOG_VSSLOGIN DIALOG DISCARDABLE  0, 0, 258, 151
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Login to VSS Database"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "This project is connected to a SourceSafe database. You have to login to the database to work with this project.",
                    IDC_STATIC,7,7,244,18
    LTEXT           "Project",IDC_STATIC,17,33,22,8
    LTEXT           "c:\\temp\\alma1.mgx",IDC_STATIC_PROJECT,52,33,183,8
    LTEXT           "Database",IDC_STATIC,17,53,31,8
    LTEXT           "c:\\temp\\almafa\\kortefa\\dinnye\\somminden\\sourcesafe.ini",
                    IDC_STATIC_DATABASE,52,53,183,10
    LTEXT           "User:",IDC_STATIC,17,73,17,8
    EDITTEXT        IDC_EDIT_USER,52,71,120,14,ES_AUTOHSCROLL
    LTEXT           "Password:",IDC_STATIC,17,93,33,8
    EDITTEXT        IDC_EDIT_PWD,52,91,120,14,ES_PASSWORD | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,71,120,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,137,120,50,14
END


/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//

#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE 
BEGIN
    IDD_DIALOG_VSSLOGIN, DIALOG
    BEGIN
        LEFTMARGIN, 7
        RIGHTMARGIN, 251
        VERTGUIDE, 17
        VERTGUIDE, 52
        VERTGUIDE, 172
        TOPMARGIN, 7
        BOTTOMMARGIN, 144
    END
END
#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// REGISTRY
//

IDR_CoreXmlFile         REGISTRY DISCARDABLE    "CoreXmlFile.rgs"

/////////////////////////////////////////////////////////////////////////////
//
// String Table
//

STRINGTABLE DISCARDABLE 
BEGIN
    IDS_PROJNAME            "XmlBackEnd"
    IDS_COREXMLFILE_DESC    "CoreXmlFile Class"
END

#endif    // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
1 TYPELIB "XmlBackEnd.tlb"

/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED




More information about the GME-commit mailing list