71 lines
1.5 KiB
C++
71 lines
1.5 KiB
C++
|
/*
|
||
|
|
||
|
Copyright (c) 1997-1999 Microsoft Corporation
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include "sdppch.h"
|
||
|
|
||
|
#include "sdpgen.h"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
// Isolates tokens by searching for one of the separators
|
||
|
// and returns the first separator thats found
|
||
|
CHAR *
|
||
|
GetToken(
|
||
|
IN CHAR *String,
|
||
|
IN BYTE NumSeparators,
|
||
|
IN const CHAR *SeparatorChars,
|
||
|
OUT CHAR &Separator
|
||
|
)
|
||
|
{
|
||
|
// validate the input parameters
|
||
|
|
||
|
ASSERT(NULL != String);
|
||
|
ASSERT(NULL != SeparatorChars);
|
||
|
ASSERT(0 != NumSeparators);
|
||
|
|
||
|
if ( (NULL == String) ||
|
||
|
(NULL == SeparatorChars) ||
|
||
|
(0 == NumSeparators) )
|
||
|
{
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
// advance character by character until the string ends or
|
||
|
// one of the separators is found
|
||
|
for ( UINT i=0; ; i++ )
|
||
|
{
|
||
|
// check each separator
|
||
|
for ( UINT j=0; j < NumSeparators; j++ )
|
||
|
{
|
||
|
// if the separator matches the current string character
|
||
|
if ( SeparatorChars[j] == String[i] )
|
||
|
{
|
||
|
// copy the separator character
|
||
|
Separator = String[i];
|
||
|
|
||
|
// terminate the token with an end of string character
|
||
|
String[i] = EOS;
|
||
|
|
||
|
// return the start of the token
|
||
|
return String;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// check if the end of string has been reached
|
||
|
if ( EOS == String[i] )
|
||
|
{
|
||
|
return NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// should never reach here
|
||
|
ASSERT(FALSE);
|
||
|
|
||
|
return NULL;
|
||
|
}
|
||
|
|