Create StringToken.cpp

This commit is contained in:
vxunderground 2022-07-14 22:28:38 -05:00 committed by GitHub
parent 36dd02c039
commit b0832681e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,91 @@
PCHAR StringTokenA(PCHAR String, CONST PCHAR Delim)
{
PCHAR Last;
PCHAR SpanP, Token;
INT C, SC;
if (String == NULL)
return NULL;
CONTINUE:
C = *String++;
for (SpanP = (PCHAR)Delim; (SC = *SpanP++) != ERROR_SUCCESS;)
{
if (C == SC)
goto CONTINUE;
}
if (C == ERROR_SUCCESS) { Last = NULL; return NULL; }
Token = String - 1;
for (;;)
{
C = *String++;
SpanP = (PCHAR)Delim;
do {
if ((SC = *SpanP++) == C)
{
if (C == ERROR_SUCCESS)
String = NULL;
else
String[-1] = '\0';
Last = String;
return Token;
}
} while (SC != ERROR_SUCCESS);
}
return NULL;
}
PWCHAR StringTokenW(PWCHAR String, CONST PWCHAR Delim)
{
PWCHAR Last;
PWCHAR SpanP, Token;
INT C, SC;
if (String == NULL)
return NULL;
CONTINUE:
C = *String++;
for (SpanP = (PWCHAR)Delim; (SC = *SpanP++) != ERROR_SUCCESS;)
{
if (C == SC)
goto CONTINUE;
}
if (C == ERROR_SUCCESS) { Last = NULL; return NULL; }
Token = String - 1;
for (;;)
{
C = *String++;
SpanP = (PWCHAR)Delim;
do {
if ((SC = *SpanP++) == C)
{
if (C == ERROR_SUCCESS)
String = NULL;
else
String[-1] = '\0';
Last = String;
return Token;
}
} while (SC != ERROR_SUCCESS);
}
return NULL;
}