Files
EgtMachKernel/ToolData.cpp
T
Dario Sassi 64ed8babd1 EgtMachKernel 1.6f1 :
- aggiunta gestione DB utensili
- aggiunta gestione DB lavorazioni.
2015-06-06 17:50:38 +00:00

232 lines
6.4 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2015-2015
//----------------------------------------------------------------------------
// File : ToolData.cpp Data : 04.06.15 Versione : 1.6f1
// Contenuto : Implementazione struttura dati utensile.
//
//
//
// Modifiche : 04.06.15 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "ToolData.h"
#include "/EgtDev/Include/EGnStringUtils.h"
#include <array>
#include <cassert>
using namespace std ;
//----------------------------------------------------------------------------
enum nToolKey {
TK_COR = 0,
TK_CRAD,
TK_D,
TK_DRAW,
TK_DT,
TK_EXI,
TK_F,
TK_FE,
TK_FS,
TK_FT,
TK_HEA,
TK_L,
TK_LT,
TK_MM,
TK_NAME,
TK_NS,
TK_NU,
TK_OL,
TK_OR,
TK_S,
TK_SANG,
TK_SM,
TK_SUP,
TK_TH,
TK_TYP,
TK_UUID,
TK_ZZZ} ; // rappresenta il numero di elementi
static const std::array<std::string,TK_ZZZ> sToolKey = {
"COR",
"CRAD",
"D",
"DRAW",
"DT",
"EXI",
"F",
"FE",
"FS",
"FT",
"HEA",
"L",
"LT",
"MM",
"NAME",
"NS",
"NU",
"OL",
"OR",
"S",
"SANG",
"SM",
"SUP",
"TH",
"TYP",
"UUID"} ;
//----------------------------------------------------------------------------
int
ToolData::GetSize( void) const
{
// in debug verifico validità ultimo campo
assert( sToolKey[TK_UUID] == "UUID") ;
return TK_ZZZ ;
}
//----------------------------------------------------------------------------
int
FindToolKey( const string& sKey)
{
auto TheRange = equal_range( sToolKey.cbegin(), sToolKey.cend(), sKey) ;
if ( TheRange.first == TheRange.second)
return - 1 ;
return int( TheRange.first - sToolKey.cbegin()) ;
}
//----------------------------------------------------------------------------
bool
ToolData::FromString( const string& sString, int& nKey)
{
// separo chiave da valore
string sKey, sVal ;
SplitFirst( sString, "=", sKey, sVal) ;
// riconosco la chiave
nKey = FindToolKey( ToUpper( sKey)) ;
bool bOk = ( nKey >= 0) ;
switch ( nKey) {
case TK_COR :
bOk = ::FromString( sVal, m_nCorr) ;
break ;
case TK_CRAD :
bOk = ::FromString( sVal, m_dCornRad) ;
break ;
case TK_D :
bOk = ::FromString( sVal, m_dDiam) ;
break ;
case TK_DRAW :
m_sDraw = sVal ;
break ;
case TK_DT :
bOk = ::FromString( sVal, m_dTDiam) ;
break ;
case TK_EXI :
bOk = ::FromString( sVal, m_nExit) ;
break ;
case TK_F :
bOk = ::FromString( sVal, m_dFeed) ;
break ;
case TK_FE :
bOk = ::FromString( sVal, m_dEndFeed) ;
break ;
case TK_FS :
bOk = ::FromString( sVal, m_dStartFeed) ;
break ;
case TK_FT :
bOk = ::FromString( sVal, m_dTipFeed) ;
break ;
case TK_HEA :
m_sHead = sVal ;
bOk = ! m_sHead.empty() ;
break ;
case TK_L :
bOk = ::FromString( sVal, m_dLen) ;
break ;
case TK_LT :
bOk = ::FromString( sVal, m_dTLen) ;
break ;
case TK_MM :
bOk = ::FromString( sVal, m_dMaxMat) ;
break ;
case TK_NAME :
m_sName = sVal ;
bOk = ! m_sName.empty() ;
break ;
case TK_NS :
m_sSysNotes = sVal ;
break ;
case TK_NU :
m_sUserNotes = sVal ;
break ;
case TK_OL :
bOk = ::FromString( sVal, m_dOffsL) ;
break ;
case TK_OR :
bOk = ::FromString( sVal, m_dOffsR) ;
break ;
case TK_S :
bOk = ::FromString( sVal, m_dSpeed) ;
break ;
case TK_SANG :
bOk = ::FromString( sVal, m_dSideAng) ;
break ;
case TK_SM :
bOk = ::FromString( sVal, m_dMaxSpeed) ;
break ;
case TK_SUP :
m_sTcPos = sVal ;
break ;
case TK_TH :
bOk = ::FromString( sVal, m_dThick) ;
break ;
case TK_TYP :
bOk = ::FromString( sVal, m_nType) ;
break ;
case TK_UUID :
bOk = ::FromString( sVal, m_Uuid) ;
break ;
default :
bOk = false ;
break ;
}
return bOk ;
}
//----------------------------------------------------------------------------
string
ToolData::ToString( int nInd) const
{
switch ( nInd) {
case TK_COR : return ( sToolKey[TK_COR] + "=" + ::ToString( m_nCorr)) ;
case TK_CRAD : return ( sToolKey[TK_CRAD] + "=" + ::ToString( m_dCornRad)) ;
case TK_D : return ( sToolKey[TK_D] + "=" + ::ToString( m_dDiam)) ;
case TK_DRAW : return ( sToolKey[TK_DRAW] + "=" + m_sDraw) ;
case TK_DT : return ( sToolKey[TK_DT] + "=" + ::ToString( m_dTDiam)) ;
case TK_EXI : return ( sToolKey[TK_EXI] + "=" + ::ToString( m_nExit)) ;
case TK_F : return ( sToolKey[TK_F] + "=" + ::ToString( m_dFeed)) ;
case TK_FE : return ( sToolKey[TK_FE] + "=" + ::ToString( m_dEndFeed)) ;
case TK_FS : return ( sToolKey[TK_FS] + "=" + ::ToString( m_dStartFeed)) ;
case TK_FT : return ( sToolKey[TK_FT] + "=" + ::ToString( m_dTipFeed)) ;
case TK_HEA : return ( sToolKey[TK_HEA] + "=" + m_sHead) ;
case TK_L : return ( sToolKey[TK_L] + "=" + ::ToString( m_dLen)) ;
case TK_LT : return ( sToolKey[TK_LT] + "=" + ::ToString( m_dTLen)) ;
case TK_MM : return ( sToolKey[TK_MM] + "=" + ::ToString( m_dMaxMat)) ;
case TK_NAME : return ( sToolKey[TK_NAME] + "=" + m_sName) ;
case TK_NS : return ( sToolKey[TK_NS] + "=" + m_sSysNotes) ;
case TK_NU : return ( sToolKey[TK_NU] + "=" + m_sUserNotes) ;
case TK_OL : return ( sToolKey[TK_OL] + "=" + ::ToString( m_dOffsL)) ;
case TK_OR : return ( sToolKey[TK_OR] + "=" + ::ToString( m_dOffsR)) ;
case TK_S : return ( sToolKey[TK_S] + "=" + ::ToString( m_dSpeed)) ;
case TK_SANG : return ( sToolKey[TK_SANG] + "=" + ::ToString( m_dSideAng)) ;
case TK_SM : return ( sToolKey[TK_SM] + "=" + ::ToString( m_dMaxSpeed)) ;
case TK_SUP : return ( sToolKey[TK_SUP] + "=" + m_sTcPos) ;
case TK_TH : return ( sToolKey[TK_TH] + "=" + ::ToString( m_dThick)) ;
case TK_TYP : return ( sToolKey[TK_TYP] + "=" + ::ToString( m_nType)) ;
case TK_UUID : return ( sToolKey[TK_UUID] + "=" + ::ToString( m_Uuid)) ;
default : return "" ;
}
}