And we know what rules we need to check to make sure that Domain is valid:
bool EmailDomain::Parse()
{
// We do not assume anything, so check UserName string
if ( !Name.IsValid() )
return false;
// Contains at least one ‘.’
if ( Name.IndexOf(‘.’, 0) == -1 )
return false;
// Reset SubdomainCount
SubdomainCount = 0;
// Extract subdomains
int startPosition = 0;
do
{
int nextPosition = Name.IndexOf(‘.’, StartPosition);
if ( nextPosition != -1 )
Name.CopyTo(startPosition + 1, nextPosition - startPosition, Subdomain[SubdomainCount++]);
else
Name.CopyTo(startPosition + 1, nextPosition - startPosition, Tld)
startPosition = nextPosition + 1;
} while ( startPosition != 0 );
return true;
}