Files
Include/EGnEgtUUID.h
Dario Sassi bd081f09c3 Include :
- aggiornamento prototipi
- aggiunte costanti per utensili.
2019-05-17 18:22:13 +00:00

66 lines
2.3 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2015-2019
//----------------------------------------------------------------------------
// File : EGnEgtUUID.h Data : 16.05.19 Versione : 2.1e3
// Contenuto : Dichiarazione struttura EgtUUID e sue funzioni.
//
//
//
// Modifiche : 01.06.15 DS Creazione modulo.
// 16.05.19 DS Aggiunta funzione IsUUID.
//
//----------------------------------------------------------------------------
#pragma once
#include <string>
#include <vector>
//----------------------- Macro per import/export ----------------------------
#undef EGN_EXPORT
#if defined( I_AM_EGN) // da definirsi solo nella DLL
#define EGN_EXPORT __declspec( dllexport)
#else
#define EGN_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
struct EgtUUID {
unsigned int Data1 ;
unsigned short Data2 ;
unsigned short Data3 ;
unsigned char Data4[8] ;
EgtUUID( void)
{ Clear() ; }
bool Clear( void)
{ Data1 = 0 ; Data2 = 0; Data3 = 0 ; memset( Data4, 0, 8) ; return true ; }
bool operator ==( const EgtUUID& other) const
{ return ( Data1 == other.Data1 && Data2 == other.Data2 && Data3 == other.Data3 &&
memcmp( Data4, other.Data4, 8) == 0) ; }
bool operator !=( const EgtUUID& other) const
{ return ! operator ==( other) ; }
} ;
//----------------------------------------------------------------------------
EGN_EXPORT bool CreateEgtUUID( EgtUUID& uuId) ;
EGN_EXPORT std::string ToString( const EgtUUID& uuId) ;
EGN_EXPORT bool FromString( const std::string& sVal, EgtUUID& uuId) ;
inline bool IsUUID( const std::string& sVal)
{ EgtUUID Tmp ; return FromString( sVal, Tmp) ; }
//----------------------------------------------------------------------------
namespace std {
template <>
struct hash<EgtUUID>
{
typedef EgtUUID argument_type ;
typedef std::size_t result_type ;
std::size_t operator()( EgtUUID key) const {
return ( key.Data1 + key.Data2 + key.Data3 + key.Data4[0] + key.Data4[7]) ;
}
};
}
//----------------------------------------------------------------------------
typedef std::vector<EgtUUID> UUIDVECTOR ;