Skip to content

Commit 3545fc5

Browse files
committed
istr
1 parent 2d8ee15 commit 3545fc5

12 files changed

Lines changed: 33 additions & 27 deletions

lib/importproject.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -567,8 +567,7 @@ namespace {
567567
// TODO: improve evaluation
568568
const Settings s;
569569
TokenList tokenlist(&s);
570-
std::istringstream istr(c);
571-
tokenlist.createTokens(istr, Standards::Language::C); // TODO: check result
570+
tokenlist.createTokens(c.data(), c.size(), Standards::Language::C); // TODO: check result
572571
// TODO: put in a helper
573572
// generate links
574573
{

test/helpers.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ namespace simplecpp {
4343
// TODO: make Tokenizer private
4444
class SimpleTokenizer : public Tokenizer {
4545
public:
46-
SimpleTokenizer(ErrorLogger& errorlogger, const char code[], bool cpp = true)
46+
template<size_t size>
47+
SimpleTokenizer(ErrorLogger& errorlogger, const char (&code)[size], bool cpp = true)
4748
: Tokenizer{s_settings, errorlogger}
4849
{
4950
if (!tokenize(code, cpp))
@@ -66,17 +67,17 @@ class SimpleTokenizer : public Tokenizer {
6667

6768
/**
6869
* Tokenize code
69-
* @param code The code
70+
* @param data The code
7071
* @param cpp Indicates if the code is C++
7172
* @param configuration E.g. "A" for code where "#ifdef A" is true
7273
* @return false if source code contains syntax errors
7374
*/
74-
bool tokenize(const char code[],
75+
template<size_t size>
76+
bool tokenize(const char (&code)[size],
7577
bool cpp = true,
7678
const std::string &configuration = emptyString)
7779
{
78-
std::istringstream istr(code);
79-
if (!list.createTokens(istr, cpp ? "test.cpp" : "test.c"))
80+
if (!list.createTokens(code, size-1, cpp ? "test.cpp" : "test.c"))
8081
return false;
8182

8283
return simplifyTokens1(configuration);
@@ -91,9 +92,9 @@ class SimpleTokenList
9192
{
9293
public:
9394
template<size_t size>
94-
explicit SimpleTokenList(const char (&data)[size], Standards::Language lang = Standards::Language::CPP)
95+
explicit SimpleTokenList(const char (&code)[size], Standards::Language lang = Standards::Language::CPP)
9596
{
96-
if (!list.createTokens(data, size-1, lang))
97+
if (!list.createTokens(code, size-1, lang))
9798
throw std::runtime_error("creating tokens failed");
9899
}
99100

test/test64bit.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ class Test64BitPortability : public TestFixture {
4040
}
4141

4242
#define check(code) check_(code, __FILE__, __LINE__)
43-
void check_(const char code[], const char* file, int line) {
43+
template<std::size_t size>
44+
void check_(const char (&data)[size], const char* file, int line) {
4445
// Tokenize..
4546
SimpleTokenizer tokenizer(settings, *this);
46-
ASSERT_LOC(tokenizer.tokenize(code), file, line);
47+
ASSERT_LOC(tokenizer.tokenize(data), file, line);
4748

4849
// Check char variable usage..
4950
Check64BitPortability check64BitPortability(&tokenizer, &settings, this);

test/testassert.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,11 @@ class TestAssert : public TestFixture {
3131
const Settings settings = settingsBuilder().severity(Severity::warning).build();
3232

3333
#define check(...) check_(__FILE__, __LINE__, __VA_ARGS__)
34-
void check_(const char* file, int line, const char code[]) {
34+
template<std::size_t size>
35+
void check_(const char* file, int line, const char (&data)[size]) {
3536
// Tokenize..
3637
SimpleTokenizer tokenizer(settings, *this);
37-
ASSERT_LOC(tokenizer.tokenize(code), file, line);
38+
ASSERT_LOC(tokenizer.tokenize(data), file, line);
3839

3940
// Check..
4041
runChecks<CheckAssert>(tokenizer, this);

test/testautovariables.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ class TestAutoVariables : public TestFixture {
3030
const Settings settings = settingsBuilder().severity(Severity::warning).severity(Severity::style).library("std.cfg").library("qt.cfg").build();
3131

3232
#define check(...) check_(__FILE__, __LINE__, __VA_ARGS__)
33-
void check_(const char* file, int line, const char code[], bool inconclusive = true, bool cpp = true) {
33+
template<std::size_t size>
34+
void check_(const char* file, int line, const char (&data)[size], bool inconclusive = true, bool cpp = true) {
3435
const Settings settings1 = settingsBuilder(settings).certainty(Certainty::inconclusive, inconclusive).build();
3536

3637
// Tokenize..
3738
SimpleTokenizer tokenizer(settings1, *this);
38-
ASSERT_LOC(tokenizer.tokenize(code, cpp), file, line);
39+
ASSERT_LOC(tokenizer.tokenize(data, cpp), file, line);
3940

4041
runChecks<CheckAutoVariables>(tokenizer, this);
4142
}

test/testbool.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ class TestBool : public TestFixture {
7474
}
7575

7676
#define check(...) check_(__FILE__, __LINE__, __VA_ARGS__)
77-
void check_(const char* file, int line, const char code[], bool cpp = true) {
77+
template<size_t size>
78+
void check_(const char* file, int line, const char (&code)[size], bool cpp = true) {
7879
// Tokenize..
7980
SimpleTokenizer tokenizer(settings, *this);
8081
ASSERT_LOC(tokenizer.tokenize(code, cpp), file, line);

test/testboost.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ class TestBoost : public TestFixture {
3434
}
3535

3636
#define check(code) check_(code, __FILE__, __LINE__)
37-
void check_(const char code[], const char* file, int line) {
37+
template<std::size_t size>
38+
void check_(const char (&data)[size], const char* file, int line) {
3839
// Tokenize..
3940
SimpleTokenizer tokenizer(settings, *this);
40-
ASSERT_LOC(tokenizer.tokenize(code), file, line);
41+
ASSERT_LOC(tokenizer.tokenize(data), file, line);
4142

4243
// Check..
4344
runChecks<CheckBoost>(tokenizer, this);

test/testbufferoverrun.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,10 @@ class TestBufferOverrun : public TestFixture {
5151
runChecks<CheckBufferOverrun>(tokenizer, this);
5252
}
5353

54-
void check_(const char* file, int line, const char code[], const Settings &settings, bool cpp = true) {
54+
template<size_t size>
55+
void check_(const char* file, int line, const char (&data)[size], const Settings &settings, bool cpp = true) {
5556
SimpleTokenizer tokenizer(settings, *this);
56-
ASSERT_LOC(tokenizer.tokenize(code, cpp), file, line);
57+
ASSERT_LOC(tokenizer.tokenize(data, cpp), file, line);
5758

5859
// Check for buffer overruns..
5960
runChecks<CheckBufferOverrun>(tokenizer, this);

test/testcharvar.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,11 @@ class TestCharVar : public TestFixture {
3737
}
3838

3939
#define check(code) check_(code, __FILE__, __LINE__)
40-
void check_(const char code[], const char* file, int line) {
40+
template<std::size_t size>
41+
void check_(const char (&data)[size], const char* file, int line) {
4142
// Tokenize..
4243
SimpleTokenizer tokenizer(settings, *this);
43-
ASSERT_LOC(tokenizer.tokenize(code), file, line);
44+
ASSERT_LOC(tokenizer.tokenize(data), file, line);
4445

4546
// Check char variable usage..
4647
CheckOther checkOther(&tokenizer, &settings, this);

test/testclass.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ class TestClass : public TestFixture {
248248
}
249249

250250
#define checkCopyCtorAndEqOperator(code) checkCopyCtorAndEqOperator_(code, __FILE__, __LINE__)
251+
template<size_t size>
251252
void checkCopyCtorAndEqOperator_(const char code[], const char* file, int line) {
252253
const Settings settings = settingsBuilder().severity(Severity::warning).build();
253254

@@ -8869,9 +8870,8 @@ class TestClass : public TestFixture {
88698870
std::list<Check::FileInfo*> fileInfo;
88708871
for (const std::string& c: code) {
88718872
Tokenizer tokenizer(settingsDefault, *this);
8872-
std::istringstream istr(c);
88738873
const std::string filename = std::to_string(fileInfo.size()) + ".cpp";
8874-
ASSERT(tokenizer.list.createTokens(istr, filename));
8874+
ASSERT(tokenizer.list.createTokens(c.data(), c.size(), filename));
88758875
ASSERT(tokenizer.simplifyTokens1(""));
88768876
fileInfo.push_back(check.getFileInfo(tokenizer, settingsDefault));
88778877
}

0 commit comments

Comments
 (0)