EgtGeomKernel :

- le funzioni GetFirstNameInGroup, GetNextName, GetLastNameInGroup e GetPrevName ora accettano anche il solo inizio del nome, purchè terminato da *.
This commit is contained in:
Dario Sassi
2017-01-23 17:27:37 +00:00
parent bc8a40c505
commit acb2cea3b8
+32 -8
View File
@@ -666,6 +666,11 @@ GeomDB::GetFirstNameInGroup( int nGroupId, const string& sName) const
// verifico validità minima di stringa con nome
if ( IsEmptyOrSpaces( sName))
return GDB_ID_NULL ;
// determinazione tipo di ricerca
string sToFind = sName ;
bool bWild = ( sToFind.back() == '*') ;
if ( bWild)
sToFind.pop_back() ;
// recupero il gruppo
const GdbGroup* pGdbGroup = GetGdbGroup( nGroupId) ;
if ( pGdbGroup == nullptr)
@@ -673,9 +678,10 @@ GeomDB::GetFirstNameInGroup( int nGroupId, const string& sName) const
// recupero il primo oggetto del gruppo
const GdbObj* pGdbO = pGdbGroup->GetFirstObj() ;
while ( pGdbO != nullptr) {
// se ha il nome cercato
// se ha il nome o la parte iniziale di nome cercato
string sObjName ;
if ( pGdbO->GetName( sObjName) && sObjName == sName)
if ( pGdbO->GetName( sObjName) &&
(( ! bWild && sObjName == sToFind) || ( bWild && sObjName.find( sToFind) == 0)))
return ( pGdbO->m_nId) ;
// passo al successivo
pGdbO = pGdbO->GetNext() ;
@@ -690,6 +696,11 @@ GeomDB::GetNextName( int nId, const string& sName) const
// verifico validità minima di stringa con nome
if ( IsEmptyOrSpaces( sName))
return GDB_ID_NULL ;
// determinazione tipo di ricerca
string sToFind = sName ;
bool bWild = ( sToFind.back() == '*') ;
if ( bWild)
sToFind.pop_back() ;
// recupero l'oggetto
const GdbObj* pGdbObj = GetGdbObj( nId) ;
if ( pGdbObj == nullptr)
@@ -697,9 +708,10 @@ GeomDB::GetNextName( int nId, const string& sName) const
// recupero il successivo
const GdbObj* pGdbNext = pGdbObj->GetNext() ;
while ( pGdbNext != nullptr) {
// se ha il nome cercato
// se ha il nome o la parte iniziale di nome cercato
string sObjName ;
if ( pGdbNext->GetName( sObjName) && sObjName == sName)
if ( pGdbNext->GetName( sObjName) &&
(( ! bWild && sObjName == sToFind) || ( bWild && sObjName.find( sToFind) == 0)))
return ( pGdbNext->m_nId) ;
// passo al successivo
pGdbNext = pGdbNext->GetNext() ;
@@ -714,6 +726,11 @@ GeomDB::GetLastNameInGroup( int nGroupId, const string& sName) const
// verifico validità minima di stringa con nome
if ( IsEmptyOrSpaces( sName))
return GDB_ID_NULL ;
// determinazione tipo di ricerca
string sToFind = sName ;
bool bWild = ( sToFind.back() == '*') ;
if ( bWild)
sToFind.pop_back() ;
// recupero il gruppo
const GdbGroup* pGdbGroup = GetGdbGroup( nGroupId) ;
if ( pGdbGroup == nullptr)
@@ -721,9 +738,10 @@ GeomDB::GetLastNameInGroup( int nGroupId, const string& sName) const
// recupero l'ultimo oggetto del gruppo
const GdbObj* pGdbO = pGdbGroup->GetLastObj() ;
while ( pGdbO != nullptr) {
// se ha il nome cercato
// se ha il nome o la parte iniziale di nome cercato
string sObjName ;
if ( pGdbO->GetName( sObjName) && sObjName == sName)
if ( pGdbO->GetName( sObjName) &&
(( ! bWild && sObjName == sToFind) || ( bWild && sObjName.find( sToFind) == 0)))
return ( pGdbO->m_nId) ;
// passo al precedente
pGdbO = pGdbO->GetPrev() ;
@@ -738,6 +756,11 @@ GeomDB::GetPrevName( int nId, const string& sName) const
// verifico validità minima di stringa con nome
if ( IsEmptyOrSpaces( sName))
return GDB_ID_NULL ;
// determinazione tipo di ricerca
string sToFind = sName ;
bool bWild = ( sToFind.back() == '*') ;
if ( bWild)
sToFind.pop_back() ;
// recupero l'oggetto
const GdbObj* pGdbObj = GetGdbObj( nId) ;
if ( pGdbObj == nullptr)
@@ -745,9 +768,10 @@ GeomDB::GetPrevName( int nId, const string& sName) const
// recupero il precedente
const GdbObj* pGdbPrev = pGdbObj->GetPrev() ;
while ( pGdbPrev != nullptr) {
// se ha il nome cercato
// se ha il nome o la parte iniziale di nome cercato
string sObjName ;
if ( pGdbPrev->GetName( sObjName) && sObjName == sName)
if ( pGdbPrev->GetName( sObjName) &&
(( ! bWild && sObjName == sToFind) || ( bWild && sObjName.find( sToFind) == 0)))
return ( pGdbPrev->m_nId) ;
// passo al precedente
pGdbPrev = pGdbPrev->GetPrev() ;