@@ -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
@@ -1438,13 +1436,13 @@ static void missingHeader1()
14381436static void missingHeader2 ()
14391437{
14401438 const char code[] = " #include \" foo.h\"\n " ; // this file exists
1441- std::istringstream istr (code);
14421439 std::vector<std::string> files;
14431440 std::map<std::string, simplecpp::TokenList*> filedata;
14441441 filedata[" foo.h" ] = nullptr ;
14451442 simplecpp::OutputList outputList;
14461443 simplecpp::TokenList tokens2 (files);
1447- simplecpp::preprocess (tokens2, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI (), &outputList);
1444+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
1445+ simplecpp::preprocess (tokens2, rawtokens, files, filedata, simplecpp::DUI (), &outputList);
14481446 ASSERT_EQUALS (" " , toString (outputList));
14491447}
14501448
@@ -1459,9 +1457,8 @@ static void missingHeader3()
14591457static void nestedInclude ()
14601458{
14611459 const char code[] = " #include \" test.h\"\n " ;
1462- std::istringstream istr (code);
14631460 std::vector<std::string> files;
1464- simplecpp::TokenList rawtokens (istr ,files," test.h" );
1461+ simplecpp::TokenList rawtokens = makeTokenList (code ,files," test.h" );
14651462 std::map<std::string, simplecpp::TokenList*> filedata;
14661463 filedata[" test.h" ] = &rawtokens;
14671464
@@ -1485,9 +1482,8 @@ static void multiline2()
14851482 const char code[] = " #define A /*\\\n "
14861483 " */1\n "
14871484 " A" ;
1488- std::istringstream istr (code);
14891485 std::vector<std::string> files;
1490- simplecpp::TokenList rawtokens (istr ,files);
1486+ simplecpp::TokenList rawtokens = makeTokenList (code ,files);
14911487 ASSERT_EQUALS (" # define A /**/ 1\n\n A" , rawtokens.stringify ());
14921488 rawtokens.removeComments ();
14931489 std::map<std::string, simplecpp::TokenList*> filedata;
@@ -1501,9 +1497,8 @@ static void multiline3() // #28 - macro with multiline comment
15011497 const char code[] = " #define A /*\\\n "
15021498 " */ 1\n "
15031499 " A" ;
1504- std::istringstream istr (code);
15051500 std::vector<std::string> files;
1506- simplecpp::TokenList rawtokens (istr ,files);
1501+ simplecpp::TokenList rawtokens = makeTokenList (code ,files);
15071502 ASSERT_EQUALS (" # define A /* */ 1\n\n A" , rawtokens.stringify ());
15081503 rawtokens.removeComments ();
15091504 std::map<std::string, simplecpp::TokenList*> filedata;
@@ -1518,9 +1513,8 @@ static void multiline4() // #28 - macro with multiline comment
15181513 " /*\\\n "
15191514 " */ 1\n "
15201515 " A" ;
1521- std::istringstream istr (code);
15221516 std::vector<std::string> files;
1523- simplecpp::TokenList rawtokens (istr ,files);
1517+ simplecpp::TokenList rawtokens = makeTokenList (code ,files);
15241518 ASSERT_EQUALS (" # define A /* */ 1\n\n\n A" , rawtokens.stringify ());
15251519 rawtokens.removeComments ();
15261520 std::map<std::string, simplecpp::TokenList*> filedata;
@@ -1938,9 +1932,9 @@ static void tokenMacro1()
19381932 " A" ;
19391933 std::vector<std::string> files;
19401934 std::map<std::string, simplecpp::TokenList*> filedata;
1941- std::istringstream istr (code);
19421935 simplecpp::TokenList tokenList (files);
1943- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
1936+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
1937+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
19441938 ASSERT_EQUALS (" A" , tokenList.cback ()->macro );
19451939}
19461940
@@ -1950,9 +1944,9 @@ static void tokenMacro2()
19501944 " ADD(1,2)" ;
19511945 std::vector<std::string> files;
19521946 std::map<std::string, simplecpp::TokenList*> filedata;
1953- std::istringstream istr (code);
19541947 simplecpp::TokenList tokenList (files);
1955- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
1948+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
1949+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
19561950 const simplecpp::Token *tok = tokenList.cfront ();
19571951 ASSERT_EQUALS (" 1" , tok->str ());
19581952 ASSERT_EQUALS (" " , tok->macro );
@@ -1971,9 +1965,9 @@ static void tokenMacro3()
19711965 " ADD(FRED,2)" ;
19721966 std::vector<std::string> files;
19731967 std::map<std::string, simplecpp::TokenList*> filedata;
1974- std::istringstream istr (code);
19751968 simplecpp::TokenList tokenList (files);
1976- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
1969+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
1970+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
19771971 const simplecpp::Token *tok = tokenList.cfront ();
19781972 ASSERT_EQUALS (" 1" , tok->str ());
19791973 ASSERT_EQUALS (" FRED" , tok->macro );
@@ -1992,9 +1986,9 @@ static void tokenMacro4()
19921986 " A" ;
19931987 std::vector<std::string> files;
19941988 std::map<std::string, simplecpp::TokenList*> filedata;
1995- std::istringstream istr (code);
19961989 simplecpp::TokenList tokenList (files);
1997- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
1990+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
1991+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
19981992 const simplecpp::Token *tok = tokenList.cfront ();
19991993 ASSERT_EQUALS (" 1" , tok->str ());
20001994 ASSERT_EQUALS (" A" , tok->macro );
@@ -2007,9 +2001,9 @@ static void tokenMacro5()
20072001 " SET_BPF_JUMP(A | B | C);" ;
20082002 std::vector<std::string> files;
20092003 std::map<std::string, simplecpp::TokenList*> filedata;
2010- std::istringstream istr (code);
20112004 simplecpp::TokenList tokenList (files);
2012- simplecpp::preprocess (tokenList, simplecpp::TokenList (istr,files), files, filedata, simplecpp::DUI ());
2005+ const simplecpp::TokenList rawtokens = makeTokenList (code,files);
2006+ simplecpp::preprocess (tokenList, rawtokens, files, filedata, simplecpp::DUI ());
20132007 const simplecpp::Token *tok = tokenList.cfront ()->next ;
20142008 ASSERT_EQUALS (" D" , tok->str ());
20152009 ASSERT_EQUALS (" SET_BPF_JUMP" , tok->macro );
0 commit comments