3535#include < list>
3636#include < map>
3737#include < set>
38- #include < sstream>
3938#include < string>
4039#include < vector>
4140
@@ -48,23 +47,23 @@ class TestPreprocessor : public TestFixture {
4847 TestPreprocessor () : TestFixture(" TestPreprocessor" ) {}
4948
5049private:
51- std::string expandMacros ( const char code[]) {
52- std::istringstream istr ( code);
50+ template < size_t size>
51+ std::string expandMacros ( const char (& code)[size]) {
5352 simplecpp::OutputList outputList;
5453 std::vector<std::string> files;
55- const simplecpp::TokenList tokens1 = simplecpp::TokenList (istr , files, " file.cpp" , &outputList);
54+ const simplecpp::TokenList tokens1 = simplecpp::TokenList (code, size- 1 , files, " file.cpp" , &outputList);
5655 const Settings settings;
5756 Preprocessor p (settings, *this );
5857 simplecpp::TokenList tokens2 = p.preprocess (tokens1, " " , files, true );
5958 p.reportOutput (outputList, true );
6059 return tokens2.stringify ();
6160 }
6261
63- std::vector<RemarkComment> getRemarkComments (const char code[])
62+ template <size_t size>
63+ std::vector<RemarkComment> getRemarkComments (const char (&code)[size])
6464 {
6565 std::vector<std::string> files{" test.cpp" };
66- std::istringstream istr (code);
67- const simplecpp::TokenList tokens1 (istr, files, files[0 ]);
66+ const simplecpp::TokenList tokens1 (code, size-1 , files, files[0 ]);
6867
6968 const Settings settings;
7069
@@ -274,16 +273,16 @@ class TestPreprocessor : public TestFixture {
274273 TEST_CASE (standard);
275274 }
276275
277- std::string getConfigsStr (const char filedata[], const char *arg = nullptr ) {
276+ template <size_t size>
277+ std::string getConfigsStr (const char (&code)[size], const char *arg = nullptr) {
278278 Settings settings;
279279 if (arg && std::strncmp (arg," -D" ,2 )==0 )
280280 settings.userDefines = arg + 2 ;
281281 if (arg && std::strncmp (arg," -U" ,2 )==0 )
282282 settings.userUndefs .insert (arg+2 );
283283 Preprocessor preprocessor (settings, *this );
284284 std::vector<std::string> files;
285- std::istringstream istr (filedata);
286- simplecpp::TokenList tokens (istr,files);
285+ simplecpp::TokenList tokens (code, size-1 ,files);
287286 tokens.removeComments ();
288287 const std::set<std::string> configs = preprocessor.getConfigs (tokens);
289288 std::string ret;
@@ -292,12 +291,12 @@ class TestPreprocessor : public TestFixture {
292291 return ret;
293292 }
294293
295- std::size_t getHash (const char filedata[]) {
294+ template <size_t size>
295+ std::size_t getHash (const char (&code)[size]) {
296296 Settings settings;
297297 Preprocessor preprocessor (settings, *this );
298298 std::vector<std::string> files;
299- std::istringstream istr (filedata);
300- simplecpp::TokenList tokens (istr,files);
299+ simplecpp::TokenList tokens (code,size-1 ,files);
301300 tokens.removeComments ();
302301 return preprocessor.calculateHash (tokens, " " );
303302 }
@@ -450,9 +449,8 @@ class TestPreprocessor : public TestFixture {
450449 " #else\n "
451450 " 2\n "
452451 " #endif\n " ;
453- std::istringstream istr (filedata);
454452 std::vector<std::string> files;
455- simplecpp::TokenList tokens (istr , files, " test.c" );
453+ simplecpp::TokenList tokens (filedata, sizeof (filedata) , files, " test.c" );
456454
457455 // preprocess code with unix32 platform..
458456 {
@@ -775,14 +773,14 @@ class TestPreprocessor : public TestFixture {
775773 }
776774
777775 void if_macro_eq_macro () {
778- const char * code = " #define A B\n "
779- " #define B 1\n "
780- " #define C 1\n "
781- " #if A == C\n "
782- " Wilma\n "
783- " #else\n "
784- " Betty\n "
785- " #endif\n " ;
776+ const char code[] = " #define A B\n "
777+ " #define B 1\n "
778+ " #define C 1\n "
779+ " #if A == C\n "
780+ " Wilma\n "
781+ " #else\n "
782+ " Betty\n "
783+ " #endif\n " ;
786784 ASSERT_EQUALS (" \n " , getConfigsStr (code));
787785 }
788786
0 commit comments