work save
This commit is contained in:
parent
e44b2999e1
commit
c6fb11d130
|
@ -1402,6 +1402,35 @@ PStatement CppParser::addStatement(const PStatement &parent,
|
||||||
properties);
|
properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CppParser::addMethodParameterStatement(QStringList words, int line, const PStatement &functionStatement)
|
||||||
|
{
|
||||||
|
if (words.isEmpty())
|
||||||
|
return;
|
||||||
|
QString args,suffix;
|
||||||
|
QString cmd=words.last();
|
||||||
|
parseCommandTypeAndArgs(cmd,suffix,args);
|
||||||
|
words.pop_back();
|
||||||
|
if (!cmd.isEmpty()) {
|
||||||
|
PStatement statement = doFindStatementOf(mCurrentFile,cmd,functionStatement);
|
||||||
|
bool noCmd = (statement && isTypeStatement(statement->kind));
|
||||||
|
if (!noCmd) {
|
||||||
|
addStatement(
|
||||||
|
functionStatement,
|
||||||
|
mCurrentFile,
|
||||||
|
words.join(" ")+" "+suffix, // 'int*'
|
||||||
|
cmd, // a
|
||||||
|
args,
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
line,
|
||||||
|
StatementKind::skParameter,
|
||||||
|
StatementScope::Local,
|
||||||
|
StatementAccessibility::None,
|
||||||
|
StatementProperty::spHasDefinition);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CppParser::setInheritance(int index, const PStatement& classStatement, bool isStruct)
|
void CppParser::setInheritance(int index, const PStatement& classStatement, bool isStruct)
|
||||||
{
|
{
|
||||||
int tokenCount = mTokenizer.tokenCount();
|
int tokenCount = mTokenizer.tokenCount();
|
||||||
|
@ -5338,7 +5367,7 @@ void CppParser::scanMethodArgs(const PStatement& functionStatement, int argStart
|
||||||
int paramStart = argStart+1;
|
int paramStart = argStart+1;
|
||||||
int i = paramStart ; // assume it starts with ( and ends with )
|
int i = paramStart ; // assume it starts with ( and ends with )
|
||||||
// Keep going and stop on top of the variable name
|
// Keep going and stop on top of the variable name
|
||||||
QString varType = "";
|
QStringList words;
|
||||||
while (i < argEnd) {
|
while (i < argEnd) {
|
||||||
if (mTokenizer[i]->text=='('
|
if (mTokenizer[i]->text=='('
|
||||||
&& mTokenizer[i]->matchIndex+1<argEnd
|
&& mTokenizer[i]->matchIndex+1<argEnd
|
||||||
|
@ -5352,7 +5381,7 @@ void CppParser::scanMethodArgs(const PStatement& functionStatement, int argStart
|
||||||
addStatement(
|
addStatement(
|
||||||
functionStatement,
|
functionStatement,
|
||||||
mCurrentFile,
|
mCurrentFile,
|
||||||
varType, // 'int*'
|
words.join(" "), // 'int*'
|
||||||
cmd, // a
|
cmd, // a
|
||||||
args,
|
args,
|
||||||
"",
|
"",
|
||||||
|
@ -5364,51 +5393,28 @@ void CppParser::scanMethodArgs(const PStatement& functionStatement, int argStart
|
||||||
StatementProperty::spHasDefinition);
|
StatementProperty::spHasDefinition);
|
||||||
}
|
}
|
||||||
i=argEnd+1;
|
i=argEnd+1;
|
||||||
varType="";
|
words.clear();
|
||||||
} else if (mTokenizer[i]->text=='{') {
|
} else if (mTokenizer[i]->text=='{') {
|
||||||
i=mTokenizer[i]->matchIndex+1;
|
i=mTokenizer[i]->matchIndex+1;
|
||||||
} else if (mTokenizer[i]->text=='(') {
|
|
||||||
i=mTokenizer[i]->matchIndex+1;
|
|
||||||
} else if (mTokenizer[i]->text.endsWith('=')) {
|
} else if (mTokenizer[i]->text.endsWith('=')) {
|
||||||
|
addMethodParameterStatement(words,mTokenizer[i]->line,functionStatement);
|
||||||
i=skipAssignment(i,argEnd);
|
i=skipAssignment(i,argEnd);
|
||||||
} else if (mTokenizer[i]->text=="::") {
|
} else if (mTokenizer[i]->text=="::") {
|
||||||
varType+=mTokenizer[i]->text;
|
words.append(mTokenizer[i]->text);
|
||||||
i++;
|
i++;
|
||||||
|
} else if (mTokenizer[i]->text==',') {
|
||||||
|
addMethodParameterStatement(words,mTokenizer[i]->line,functionStatement);
|
||||||
|
i++;
|
||||||
|
words.clear();
|
||||||
} else if (isWordChar(mTokenizer[i]->text[0])) {
|
} else if (isWordChar(mTokenizer[i]->text[0])) {
|
||||||
QString cmd=mTokenizer[i]->text;
|
QString cmd=mTokenizer[i]->text;
|
||||||
if (i+1==argEnd || mTokenizer[i+1]->text==',' || mTokenizer[i+1]->text=='=') {
|
words.append(cmd);
|
||||||
QString args,suffix;
|
|
||||||
parseCommandTypeAndArgs(cmd,suffix,args);
|
|
||||||
if (!cmd.isEmpty()) {
|
|
||||||
PStatement statement = doFindStatementOf(mCurrentFile,cmd,functionStatement);
|
|
||||||
bool noCmd = (statement && isTypeStatement(statement->kind));
|
|
||||||
if (!noCmd) {
|
|
||||||
addStatement(
|
|
||||||
functionStatement,
|
|
||||||
mCurrentFile,
|
|
||||||
varType+suffix, // 'int*'
|
|
||||||
cmd, // a
|
|
||||||
args,
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
mTokenizer[i]->line,
|
|
||||||
StatementKind::skParameter,
|
|
||||||
StatementScope::Local,
|
|
||||||
StatementAccessibility::None,
|
|
||||||
StatementProperty::spHasDefinition);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!varType.isEmpty())
|
|
||||||
varType+=' ';
|
|
||||||
varType+=cmd;
|
|
||||||
}
|
|
||||||
i++;
|
i++;
|
||||||
} else {
|
} else {
|
||||||
i++;
|
i++;
|
||||||
varType="";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
addMethodParameterStatement(words,mTokenizer[i-1]->line,functionStatement);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,6 +196,7 @@ private:
|
||||||
const StatementScope& scope,
|
const StatementScope& scope,
|
||||||
const StatementAccessibility& classScope,
|
const StatementAccessibility& classScope,
|
||||||
StatementProperties properties);
|
StatementProperties properties);
|
||||||
|
void addMethodParameterStatement(QStringList words,int line, const PStatement& functionStatement);
|
||||||
void setInheritance(int index, const PStatement& classStatement, bool isStruct);
|
void setInheritance(int index, const PStatement& classStatement, bool isStruct);
|
||||||
bool isCurrentScope(const QString& command) const;
|
bool isCurrentScope(const QString& command) const;
|
||||||
void addSoloScopeLevel(PStatement& statement, int line, bool shouldResetBlock=false); // adds new solo level
|
void addSoloScopeLevel(PStatement& statement, int line, bool shouldResetBlock=false); // adds new solo level
|
||||||
|
|
|
@ -236,7 +236,7 @@ void BookmarkModel::save(const QString &filename, const QString& projectFolder)
|
||||||
QFile file(filename);
|
QFile file(filename);
|
||||||
if (file.open(QFile::WriteOnly | QFile::Truncate)) {
|
if (file.open(QFile::WriteOnly | QFile::Truncate)) {
|
||||||
|
|
||||||
QList<PBookmark> saveBookmarks;
|
// QList<PBookmark> saveBookmarks;
|
||||||
|
|
||||||
QDir dir(projectFolder);
|
QDir dir(projectFolder);
|
||||||
foreach (const PBookmark& bookmark, fileBookmarks) {
|
foreach (const PBookmark& bookmark, fileBookmarks) {
|
||||||
|
|
Loading…
Reference in New Issue