/*

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;
}