reactos/modules/rosapps/applications/sysutils/utils/sdkparse/strip_comments.cpp

44 lines
772 B
C++

// strip_comments.cpp
#ifdef _MSC_VER
#pragma warning ( disable : 4786 )
#endif//_MSC_VER
#include "strip_comments.h"
void strip_comments ( std::string& s, bool strip_lf )
{
char* src = &s[0];
char* dst = src;
while ( *src )
{
if ( src[0] == '/' && src[1] == '/' )
{
src += 2;
while ( *src && *src != '\n' )
src++;
if ( *src )
src++; // skip newline
}
else if ( src[0] == '/' && src[1] == '*' )
{
src += 2;
char* newsrc = strstr ( src, "*/" );
if ( !newsrc )
break;
src = newsrc;
//while ( *src && ( src[0] != '*' || src[1] != '/' ) )
// src++;
if ( *src ) src++;
if ( *src ) src++;
}
else if ( src[0] == '\r' && strip_lf )
src++;
else
*dst++ = *src++;
}
*dst = '\0';
s.resize ( dst-&s[0] );
}