Include :

- per SelData e SELVECTOR aggiunte funzioni FromUiString e ToUiString.
This commit is contained in:
Dario Sassi
2026-07-07 19:34:43 +02:00
parent c668a261d9
commit 190cd9e032
+36 -2
View File
@@ -46,14 +46,28 @@ typedef std::vector<SelData> SELVECTOR ; // vettore di SelData
typedef std::list<SelData> SELLIST ; // lista di SelData
//----------------------------------------------------------------------------
// Conversione di SelData da e verso stringhe
// Conversione di SelData da e verso stringhe (Id,Sub)
inline bool FromString( const std::string& sVal, SelData& Val)
{ return FromString( sVal, Val.v) ; }
inline const std::string ToString( const SelData& Val, int nPrec = 1)
{ return ToString( Val.v, nPrec) ; }
//----------------------------------------------------------------------------
// Conversione di vettori di SelData da e verso stringhe
// Conversione di SelData da e verso stringhe utente (Id:Sub oppure Id)
inline bool FromUiString( const std::string& sVal, SelData& Val)
{ std::string sId , sSub ;
SplitFirst( sVal, ":", sId, sSub) ;
Val = { GDB_ID_NULL, SEL_SUB_ALL} ;
FromString( sSub, Val.nSub) ;
return FromString( sId, Val.nId) ; }
inline const std::string ToUiString( const SelData& Val, int nPrec = 1)
{ if ( Val.nSub != SEL_SUB_ALL)
return ToString( Val.nId, nPrec) + ":" + ToString( Val.nSub, nPrec) ;
else
return ToString( Val.nId, nPrec) ; }
//----------------------------------------------------------------------------
// Conversione di vettori di SelData da e verso stringhe (Id1,Sub1,Id2,Sub2,...)
inline bool FromString( const std::string& sVal, SELVECTOR& vVal)
{ INTVECTOR vI ;
if ( ! FromString( sVal, vI) || ( vI.size() % 2) != 0)
@@ -69,3 +83,23 @@ inline const std::string ToString( const SELVECTOR& vVal, int nPrec = 1)
if ( ! sDest.empty())
sDest.pop_back() ;
return sDest ; }
//----------------------------------------------------------------------------
// Conversione di vettori di SelData da e verso stringhe utente (Id1:Sub1,Id2,...)
inline bool FromUiString( const std::string& sVal, SELVECTOR& vVal)
{ STRVECTOR vsTokens ;
Tokenize( sVal, ",", vsTokens) ;
vVal.reserve( vsTokens.size()) ;
for ( const auto& sToken : vsTokens) {
SelData Val ;
if ( FromUiString( sToken, Val))
vVal.emplace_back( Val) ;
}
return true ; }
inline const std::string ToUiString( const SELVECTOR& vVal, int nPrec = 1)
{ std::string sDest ; sDest.reserve( 2 * 8 * vVal.size()) ;
for ( const auto& Val : vVal)
sDest += ToUiString( Val, nPrec) + "," ;
if ( ! sDest.empty())
sDest.pop_back() ;
return sDest ; }