307 lines
7.9 KiB
C++
307 lines
7.9 KiB
C++
/***SDOF***********************************************************************
|
|
*
|
|
* UbiSoft Development Network
|
|
* ---------------------------
|
|
*
|
|
* FILE........: version_manager.h
|
|
*
|
|
* DESCRIPTION.: This file is used to manage version of linked library module
|
|
* in executable.
|
|
* The class CModuleInfo manage module information and the
|
|
* class CGSVersion manages the version for linked modules.
|
|
* This file was generated by a script for version management.
|
|
* If you have problems with this file, you should contact
|
|
* Guillaume Plante at gplante@ubisoft.com.
|
|
*
|
|
******************************************************************************
|
|
* FILE HISTORY
|
|
******************************************************************************
|
|
*
|
|
* DATE........: 2002/3/25 @ 16:44
|
|
* AUTHOR......: gplante
|
|
* DESCRIPTION.: Automatic generation
|
|
*
|
|
***********************************************************************EDOF***/
|
|
|
|
// length defines
|
|
#define LIBSTRINGSIZE 70
|
|
#define INTROSTRINGSIZE 150
|
|
|
|
// generic headers
|
|
#include "GSTypes.h"
|
|
|
|
#include <cstdio>
|
|
#include <cstring>
|
|
|
|
// different library version definition
|
|
#include "version_libgschat.h"
|
|
#include "version_libgsclient.h"
|
|
#include "version_libgsclinkc.h"
|
|
#include "version_libgsclinkg.h"
|
|
#include "version_libgsgame.h"
|
|
#include "version_libgsgamestarter.h"
|
|
#include "version_libgslobbylan.h"
|
|
#include "version_libgsmsclient.h"
|
|
#include "version_libgsregserver.h"
|
|
#include "version_libgspeergame.h"
|
|
#include "version_libgsscore.h"
|
|
#include "version_libgsadmin.h"
|
|
#include "version_libgsconnect.h"
|
|
#include "version_libgsgameserver.h"
|
|
#include "version_libgslauncher.h"
|
|
#include "version_libgsmodule.h"
|
|
#include "version_libgsproxyclient.h"
|
|
#include "version_libgsresult.h"
|
|
#include "version_libgssocket.h"
|
|
#include "version_libgsthreads.h"
|
|
#include "version_libgsutility.h"
|
|
#include "version_libgscsp.h"
|
|
#include "version_libgsdatacontainer.h"
|
|
#include "version_libgsz.h"
|
|
#include "version_libgscdkey.h"
|
|
#include "version_libgscrypto.h"
|
|
#include "version_libgshttp.h"
|
|
#include "version_libgsnat.h"
|
|
|
|
//=============================================================================
|
|
// CLASS: CModuleInfo
|
|
//
|
|
// DESCRIPTION: Manage the module information
|
|
//=============================================================================
|
|
class CModuleInfo
|
|
{
|
|
public:
|
|
// pointer to the next module class
|
|
CModuleInfo *m_Next;
|
|
|
|
CModuleInfo(GSchar *szModuleName,GSuint uiModuleVersion)
|
|
{
|
|
m_Next = NULL;
|
|
strncpy(m_szModuleName,szModuleName,31);
|
|
m_uiModuleVersion = uiModuleVersion;
|
|
};
|
|
~CModuleInfo()
|
|
{
|
|
if(m_Next) delete m_Next;
|
|
m_Next = NULL;
|
|
};
|
|
GSchar *GetModuleName(){return m_szModuleName;};
|
|
GSuint GetModuleVersion(){return m_uiModuleVersion;};
|
|
|
|
private:
|
|
GSchar m_szModuleName[32];
|
|
GSuint m_uiModuleVersion;
|
|
};
|
|
|
|
//=============================================================================
|
|
// CLASS: CGSVersion
|
|
//
|
|
// DESCRIPTION: Manage the module version
|
|
//=============================================================================
|
|
class CGSVersion
|
|
{
|
|
public:
|
|
CGSVersion()
|
|
{
|
|
m_ModuleHead = m_ModuleEnd = NULL;
|
|
m_ubNbrModule = 0;
|
|
|
|
#ifdef VERSION_LIBGSCHAT
|
|
AddModule("libgschat",VERSION_LIBGSCHAT);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSCLIENT
|
|
AddModule("libgsclient",VERSION_LIBGSCLIENT);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSCLINKC
|
|
AddModule("libgsclinkc",VERSION_LIBGSCLINKC);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSCLINKG
|
|
AddModule("libgsclinkg",VERSION_LIBGSCLINKG);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSGAME
|
|
AddModule("libgsgame",VERSION_LIBGSGAME);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSGAMESTARTER
|
|
AddModule("libgsgamestarter",VERSION_LIBGSGAMESTARTER);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSLOBBYLAN
|
|
AddModule("libgslobbylan",VERSION_LIBGSLOBBYLAN);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSMSCLIENT
|
|
AddModule("libgsmsclient",VERSION_LIBGSMSCLIENT);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSREGSERVER
|
|
AddModule("libgsregserver",VERSION_LIBGSREGSERVER);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSPEERGAME
|
|
AddModule("libgspeergame",VERSION_LIBGSPEERGAME);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSSCORE
|
|
AddModule("libgsscore",VERSION_LIBGSSCORE);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSADMIN
|
|
AddModule("libgsadmin",VERSION_LIBGSADMIN);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSCONNECT
|
|
AddModule("libgsconnect",VERSION_LIBGSCONNECT);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSGAMESERVER
|
|
AddModule("libgsgameserver",VERSION_LIBGSGAMESERVER);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSLAUNCHER
|
|
AddModule("libgslauncher",VERSION_LIBGSLAUNCHER);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSMODULE
|
|
AddModule("libgsmodule",VERSION_LIBGSMODULE);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSPROXYCLIENT
|
|
AddModule("libgsproxyclient",VERSION_LIBGSPROXYCLIENT);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSRESULT
|
|
AddModule("libgsresult",VERSION_LIBGSRESULT);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSSOCKET
|
|
AddModule("libgssocket",VERSION_LIBGSSOCKET);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSTHREADS
|
|
AddModule("libgsthreads",VERSION_LIBGSTHREADS);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSUTILITY
|
|
AddModule("libgsutility",VERSION_LIBGSUTILITY);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSCSP
|
|
AddModule("libgscsp",VERSION_LIBGSCSP);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSDATACONTAINER
|
|
AddModule("libgsdatacontainer",VERSION_LIBGSDATACONTAINER);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSCRYPTO
|
|
AddModule("libgscrypto",VERSION_LIBGSCRYPTO);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSCDKEY
|
|
AddModule("libgscdkey",VERSION_LIBGSCDKEY);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSHTTP
|
|
AddModule("libgshttp",VERSION_LIBGSHTTP);
|
|
#endif
|
|
|
|
#ifdef VERSION_LIBGSNAT
|
|
AddModule("libgsnat",VERSION_LIBGSNAT);
|
|
#endif
|
|
}
|
|
|
|
~CGSVersion()
|
|
{
|
|
// delete previously stored object
|
|
if(m_ModuleHead) delete m_ModuleHead;
|
|
m_ModuleHead = m_ModuleEnd = NULL;
|
|
}
|
|
// print all registered module name and version
|
|
GSbool PrintModulesVersion(GSchar *szBuffer = NULL,GSuint *puiBufSize = NULL);
|
|
|
|
private:
|
|
// add a module to the module list
|
|
GSvoid AddModule(GSchar *szModuleName,GSuint uiModuleVersion);
|
|
CModuleInfo *m_ModuleHead;
|
|
CModuleInfo *m_ModuleEnd;
|
|
GSubyte m_ubNbrModule;
|
|
};
|
|
|
|
GSvoid CGSVersion::AddModule(GSchar *szModuleName,GSuint uiModuleVersion)
|
|
{
|
|
CModuleInfo *_modinfo = new CModuleInfo(szModuleName,uiModuleVersion);
|
|
++m_ubNbrModule;
|
|
if(!m_ModuleHead)
|
|
m_ModuleHead = m_ModuleEnd = _modinfo;
|
|
else
|
|
m_ModuleEnd = m_ModuleEnd->m_Next = _modinfo;
|
|
}
|
|
|
|
GSbool CGSVersion::PrintModulesVersion(GSchar *szBuffer,GSuint *puiBufSize)
|
|
{
|
|
CModuleInfo *m_ModuleIt = m_ModuleHead;
|
|
|
|
// in that case, print to stdout
|
|
if((!szBuffer)&&(!puiBufSize))
|
|
{
|
|
printf("\n--- Begin Module Version Output ---\r\n\r\n");
|
|
if(!m_ubNbrModule)
|
|
{
|
|
printf(" - no linked gs library. \r\n");
|
|
}
|
|
else
|
|
{
|
|
|
|
while(m_ModuleIt != NULL)
|
|
{
|
|
printf(" - library: %s -> version: %d\r\n",m_ModuleIt->GetModuleName(),
|
|
m_ModuleIt->GetModuleVersion());
|
|
m_ModuleIt = m_ModuleIt->m_Next;
|
|
}
|
|
}
|
|
printf("\r\n--- End Module Version Output ---\r\n\r\n");
|
|
return GS_TRUE;
|
|
}
|
|
if(puiBufSize)
|
|
{
|
|
if(szBuffer)
|
|
{
|
|
sprintf(szBuffer,"--- Begin Module Version Output ---\r\n\r\n");
|
|
if(!m_ubNbrModule)
|
|
{
|
|
strcat(szBuffer," - no linked gs library. \r\n");
|
|
}
|
|
else
|
|
{
|
|
while(m_ModuleIt != NULL)
|
|
{
|
|
GSchar szTemp[LIBSTRINGSIZE];
|
|
#ifdef GS_WIN32
|
|
_snprintf(szTemp,LIBSTRINGSIZE," - library: %s -> version: %d\r\n",
|
|
m_ModuleIt->GetModuleName(),m_ModuleIt->GetModuleVersion());
|
|
#else
|
|
snprintf(szTemp,LIBSTRINGSIZE," - library: %s -> version: %d\r\n",
|
|
m_ModuleIt->GetModuleName(),m_ModuleIt->GetModuleVersion());
|
|
#endif
|
|
szTemp[LIBSTRINGSIZE-1] = 0;
|
|
strcat(szBuffer,szTemp);
|
|
m_ModuleIt = m_ModuleIt->m_Next;
|
|
}
|
|
}
|
|
strcat(szBuffer,"\r\n--- End Module Version Output ---\r\n");
|
|
return GS_TRUE;
|
|
}
|
|
else // return the size of the needed buffer
|
|
{
|
|
*puiBufSize = (INTROSTRINGSIZE+(LIBSTRINGSIZE*m_ubNbrModule));
|
|
return GS_TRUE;
|
|
}
|
|
}
|
|
return GS_TRUE;
|
|
}
|