reduce: remove more stuff. unneeded #define , unneeded constructors, unneeded #ifndef etc
This commit is contained in:
parent
9455542e81
commit
ed803b302b
|
@ -231,13 +231,19 @@ static bool removeBlocksOfCode(std::vector<std::string> &filedata, const char fi
|
||||||
if (filedata[pos2].find_first_of("({}")!=std::string::npos || filedata[pos2].find(")") == std::string::npos)
|
if (filedata[pos2].find_first_of("({}")!=std::string::npos || filedata[pos2].find(")") == std::string::npos)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (pos2+2U >= filedata.size() || filedata[pos2+1U] != "{")
|
pos2++;
|
||||||
|
if (pos2 < filedata.size() && !filedata[pos2].empty() && filedata[pos2].at(filedata[pos2].find_first_not_of(" ")) == ':') {
|
||||||
|
pos2++;
|
||||||
|
while (pos2 < filedata.size() && !filedata[pos2].empty() && filedata[pos2].at(filedata[pos2].find_first_not_of(" ")) == ',')
|
||||||
|
pos2++;
|
||||||
|
}
|
||||||
|
if (pos2+2U >= filedata.size() || filedata[pos2] != "{")
|
||||||
break;
|
break;
|
||||||
pos2 += 2;
|
pos2++;
|
||||||
|
|
||||||
// find end of block..
|
// find end of block..
|
||||||
int level = 0;
|
int level = 0;
|
||||||
while ((pos2 < filedata.size()) && (filedata[pos2].empty() || std::isspace(filedata[pos2].at(0)) || (std::isalpha(filedata[pos2].at(0)) && filedata[pos2].at(filedata[pos2].size()-1U) == ':') || filedata[pos2].compare(0,3,"#if")==0 || filedata[pos2]=="#else" || filedata[pos2]=="#endif")) {
|
while ((pos2 < filedata.size()) && (filedata[pos2].empty() || std::isspace(filedata[pos2].at(0)) || (std::isalpha(filedata[pos2].at(0)) && filedata[pos2].at(filedata[pos2].size()-1U) == ':') || filedata[pos2].compare(0,3,"#if")==0 || filedata[pos2].compare(0,3,"#el")==0 || filedata[pos2]=="#endif")) {
|
||||||
if (filedata[pos2].compare(0,3,"#if") == 0)
|
if (filedata[pos2].compare(0,3,"#if") == 0)
|
||||||
++level;
|
++level;
|
||||||
else if (filedata[pos2] == "#endif")
|
else if (filedata[pos2] == "#endif")
|
||||||
|
@ -342,6 +348,76 @@ static bool removeIfEndIf(std::vector<std::string> &filedata, const char filenam
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #ifndef UNUSED_ID
|
||||||
|
for (std::size_t i = 0; i < filedata.size(); ++i) {
|
||||||
|
if (filedata[i].compare(0,8,"#ifndef ") == 0) {
|
||||||
|
bool erase = true;
|
||||||
|
bool def = false;
|
||||||
|
const std::string id(filedata[i].substr(8));
|
||||||
|
for (std::size_t i2 = 0; i2 < filedata.size(); i2++) {
|
||||||
|
if (i2 == i)
|
||||||
|
continue;
|
||||||
|
if (filedata[i2].find(id) != std::string::npos) {
|
||||||
|
if (!def && filedata[i2].compare(0,8,"#define ")==0)
|
||||||
|
def = true;
|
||||||
|
else
|
||||||
|
erase = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (erase) {
|
||||||
|
unsigned int level = 0;
|
||||||
|
for (std::size_t i2 = i + 1U; i2 < filedata.size(); i2++) {
|
||||||
|
if (filedata[i2].compare(0,3,"#if")==0)
|
||||||
|
++level;
|
||||||
|
else if (filedata[i2] == "#else")
|
||||||
|
break;
|
||||||
|
else if (filedata[i2] == "#endif") {
|
||||||
|
if (level > 0)
|
||||||
|
--level;
|
||||||
|
else {
|
||||||
|
std::vector<std::string> filedata2(filedata);
|
||||||
|
filedata2[i].clear();
|
||||||
|
filedata2[i2].clear();
|
||||||
|
|
||||||
|
if (test(filename, linenr, filedata2, i)) {
|
||||||
|
std::cout << "Removed #ifndef at line " << i << std::endl;
|
||||||
|
filedata.swap(filedata2);
|
||||||
|
changed = true;
|
||||||
|
} else {
|
||||||
|
std::cout << "Kept #ifndef at line " << i << std::endl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return changed;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool removeUnusedDefines(std::vector<std::string> &filedata, const char filename[], const std::size_t linenr)
|
||||||
|
{
|
||||||
|
bool changed = false;
|
||||||
|
|
||||||
|
for (std::size_t i = 0; i < filedata.size(); ++i) {
|
||||||
|
if (filedata[i].compare(0,8,"#define ")==0 && filedata[i].find("\\")==std::string::npos) {
|
||||||
|
// Try to remove macro..
|
||||||
|
|
||||||
|
if (test(filename, linenr, filedata, i)) {
|
||||||
|
std::cout << "Removed #define at line " << i << std::endl;
|
||||||
|
filedata[i].clear();
|
||||||
|
changed = true;
|
||||||
|
} else {
|
||||||
|
std::cout << "Kept #define at line " << i << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,6 +507,7 @@ int main(int argc, char *argv[])
|
||||||
changed |= removeBlocksOfCode(filedata, filename, linenr);
|
changed |= removeBlocksOfCode(filedata, filename, linenr);
|
||||||
changed |= removeClassAndStructMembers(filedata, filename, linenr);
|
changed |= removeClassAndStructMembers(filedata, filename, linenr);
|
||||||
changed |= removeIfEndIf(filedata, filename, linenr);
|
changed |= removeIfEndIf(filedata, filename, linenr);
|
||||||
|
changed |= removeUnusedDefines(filedata, filename, linenr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write resulting code..
|
// Write resulting code..
|
||||||
|
|
Loading…
Reference in New Issue