HFAEntry *HFAEntry::GetNamedChild( const char * pszName ) { int nNameLen; HFAEntry *poEntry; /* -------------------------------------------------------------------- */ /* Establish how much of this name path is for the next child. */ /* Up to the '.' or end of estring. */ /* -------------------------------------------------------------------- */ for( nNameLen = 0; pszName[nNameLen] != '.' && pszName[nNameLen] != '\0' && pszName[nNameLen] != ':'; nNameLen++ ) {} /* -------------------------------------------------------------------- */ /* Scan children looking for this name. */ /* -------------------------------------------------------------------- */ for( poEntry = GetChild(); poEntry != NULL; poEntry = poEntry->GetNext() ) { if( EQUALN(poEntry->GetName(),pszName,nNameLen) && (int) strlen(poEntry->GetName()) == nNameLen ) { if( pszName[nNameLen] == '.' ) { HFAEntry *poResult; poResult = poEntry->GetNamedChild( pszName+nNameLen+1 ); if( poResult != NULL ) return poResult; } else return poEntry; } } return NULL; }
HFAEntry *HFAEntry::GetNamedChild( const char * pszName ) { int nNameLen; HFAEntry *poEntry; /* -------------------------------------------------------------------- */ /* Establish how much of this name path is for the next child. */ /* Up to the '.' or end of estring. */ /* -------------------------------------------------------------------- */ for( nNameLen = 0; pszName[nNameLen] != '.' && pszName[nNameLen] != '\0' && pszName[nNameLen] != ':'; nNameLen++ ) {} /* -------------------------------------------------------------------- */ /* Scan children looking for this name. */ /* -------------------------------------------------------------------- */ for( poEntry = GetChild(); poEntry != NULL; poEntry = poEntry->GetNext() ) { if( EQUALN(poEntry->GetName(),pszName,nNameLen) && (int) strlen(poEntry->GetName()) == nNameLen ) { break; } } /* -------------------------------------------------------------------- */ /* Is there a remainder to process? */ /* -------------------------------------------------------------------- */ if( poEntry != NULL && pszName[nNameLen] == '.' ) return( poEntry->GetNamedChild( pszName+nNameLen+1 ) ); else return( poEntry ); }