@@ -86,10 +86,10 @@ static std::string readfile(const char code[], int sz=-1, simplecpp::OutputList
8686 return simplecpp::TokenList (istr,files,std::string (),outputList).stringify ();
8787}
8888
89- static simplecpp::TokenList makeTokenList (const char code[], std::vector<std::string> &files , const std::string &file )
89+ static simplecpp::TokenList makeTokenList (const char code[], std::vector<std::string> &filenames , const std::string &filename=std::string(), simplecpp::OutputList *outputList=nullptr )
9090{
9191 std::istringstream istr (code);
92- return simplecpp::TokenList (istr,files,file );
92+ return simplecpp::TokenList (istr,filenames,filename,outputList );
9393}
9494
9595static simplecpp::TokenList makeTokenList (const char code[])
@@ -100,10 +100,9 @@ static simplecpp::TokenList makeTokenList(const char code[])
100100
101101static std::string preprocess (const char code[], const simplecpp::DUI &dui, simplecpp::OutputList *outputList)
102102{
103- std::istringstream istr (code);
104103 std::vector<std::string> files;
105104 std::map<std::string, simplecpp::TokenList*> filedata;
106- simplecpp::TokenList tokens (istr ,files);
105+ simplecpp::TokenList tokens = makeTokenList (code ,files);
107106 tokens.removeComments ();
108107 simplecpp::TokenList tokens2 (files);
109108 simplecpp::preprocess (tokens2, tokens, files, filedata, dui, outputList);
@@ -803,10 +802,9 @@ static void error3()
803802{
804803 const char code[] = " #error \" bla bla\\\n "
805804 " bla bla.\"\n " ;
806- std::istringstream istr (code);
807805 std::vector<std::string> files;
808806 simplecpp::OutputList outputList;
809- simplecpp::TokenList rawtokens (istr , files, " test.c" , &outputList);
807+ const simplecpp::TokenList rawtokens = makeTokenList (code , files, " test.c" , &outputList);
810808 ASSERT_EQUALS (" " , toString (outputList));
811809}
812810
@@ -1557,13 +1555,13 @@ static void missingHeader1()
15571555static void missingHeader2 ()
15581556{
15591557 const char code[] = " #include \" foo.h\"\n " ; // this file exists
1560- std::istringstream istr (code);
15611558 std::vector<std::string> files;
15621559 std::map<std::string, simplecpp::TokenList*> filedata;
15631560 filedata[" foo.h" ] = nullptr ;
15641561 simplecpp::OutputList outputList;
15651562 simplecpp::TokenList tokens2 (files);
1566- simplecpp::preprocess (tokens2, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI (), &outputList);
1563+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
1564+ simplecpp::preprocess (tokens2, rawtokens, files, filedata, simplecpp::DUI (), &outputList);
15671565 ASSERT_EQUALS (" " , toString (outputList));
15681566}
15691567
@@ -1578,9 +1576,8 @@ static void missingHeader3()
15781576static void nestedInclude ()
15791577{
15801578 const char code[] = " #include \" test.h\"\n " ;
1581- std::istringstream istr (code);
15821579 std::vector<std::string> files;
1583- simplecpp::TokenList rawtokens (istr ,files," test.h" );
1580+ simplecpp::TokenList rawtokens = makeTokenList (code ,files," test.h" );
15841581 std::map<std::string, simplecpp::TokenList*> filedata;
15851582 filedata[" test.h" ] = &rawtokens;
15861583
@@ -1604,9 +1601,8 @@ static void multiline2()
16041601 const char code[] = " #define A /*\\\n "
16051602 " */1\n "
16061603 " A" ;
1607- std::istringstream istr (code);
16081604 std::vector<std::string> files;
1609- simplecpp::TokenList rawtokens (istr ,files);
1605+ simplecpp::TokenList rawtokens = makeTokenList (code ,files);
16101606 ASSERT_EQUALS (" # define A /**/ 1\n\n A" , rawtokens.stringify ());
16111607 rawtokens.removeComments ();
16121608 std::map<std::string, simplecpp::TokenList*> filedata;
@@ -1620,9 +1616,8 @@ static void multiline3() // #28 - macro with multiline comment
16201616 const char code[] = " #define A /*\\\n "
16211617 " */ 1\n "
16221618 " A" ;
1623- std::istringstream istr (code);
16241619 std::vector<std::string> files;
1625- simplecpp::TokenList rawtokens (istr ,files);
1620+ simplecpp::TokenList rawtokens = makeTokenList (code ,files);
16261621 ASSERT_EQUALS (" # define A /* */ 1\n\n A" , rawtokens.stringify ());
16271622 rawtokens.removeComments ();
16281623 std::map<std::string, simplecpp::TokenList*> filedata;
@@ -1637,9 +1632,8 @@ static void multiline4() // #28 - macro with multiline comment
16371632 " /*\\\n "
16381633 " */ 1\n "
16391634 " A" ;
1640- std::istringstream istr (code);
16411635 std::vector<std::string> files;
1642- simplecpp::TokenList rawtokens (istr ,files);
1636+ simplecpp::TokenList rawtokens = makeTokenList (code ,files);
16431637 ASSERT_EQUALS (" # define A /* */ 1\n\n\n A" , rawtokens.stringify ());
16441638 rawtokens.removeComments ();
16451639 std::map<std::string, simplecpp::TokenList*> filedata;
@@ -2057,9 +2051,9 @@ static void tokenMacro1()
20572051 " A" ;
20582052 std::vector<std::string> files;
20592053 std::map<std::string, simplecpp::TokenList*> filedata;
2060- std::istringstream istr (code);
20612054 simplecpp::TokenList tokenList (files);
2062- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
2055+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
2056+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
20632057 ASSERT_EQUALS (" A" , tokenList.cback ()->macro );
20642058}
20652059
@@ -2069,9 +2063,9 @@ static void tokenMacro2()
20692063 " ADD(1,2)" ;
20702064 std::vector<std::string> files;
20712065 std::map<std::string, simplecpp::TokenList*> filedata;
2072- std::istringstream istr (code);
20732066 simplecpp::TokenList tokenList (files);
2074- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
2067+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
2068+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
20752069 const simplecpp::Token *tok = tokenList.cfront ();
20762070 ASSERT_EQUALS (" 1" , tok->str ());
20772071 ASSERT_EQUALS (" " , tok->macro );
@@ -2090,9 +2084,9 @@ static void tokenMacro3()
20902084 " ADD(FRED,2)" ;
20912085 std::vector<std::string> files;
20922086 std::map<std::string, simplecpp::TokenList*> filedata;
2093- std::istringstream istr (code);
20942087 simplecpp::TokenList tokenList (files);
2095- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
2088+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
2089+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
20962090 const simplecpp::Token *tok = tokenList.cfront ();
20972091 ASSERT_EQUALS (" 1" , tok->str ());
20982092 ASSERT_EQUALS (" FRED" , tok->macro );
@@ -2111,9 +2105,9 @@ static void tokenMacro4()
21112105 " A" ;
21122106 std::vector<std::string> files;
21132107 std::map<std::string, simplecpp::TokenList*> filedata;
2114- std::istringstream istr (code);
21152108 simplecpp::TokenList tokenList (files);
2116- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
2109+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
2110+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
21172111 const simplecpp::Token *tok = tokenList.cfront ();
21182112 ASSERT_EQUALS (" 1" , tok->str ());
21192113 ASSERT_EQUALS (" A" , tok->macro );
@@ -2126,9 +2120,9 @@ static void tokenMacro5()
21262120 " SET_BPF_JUMP(A | B | C);" ;
21272121 std::vector<std::string> files;
21282122 std::map<std::string, simplecpp::TokenList*> filedata;
2129- std::istringstream istr (code);
21302123 simplecpp::TokenList tokenList (files);
2131- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
2124+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
2125+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
21322126 const simplecpp::Token *tok = tokenList.cfront ()->next ;
21332127 ASSERT_EQUALS (" D" , tok->str ());
21342128 ASSERT_EQUALS (" SET_BPF_JUMP" , tok->macro );
0 commit comments