Use more Effective C++ code style in SymbolDatabase class:
1)The SymbolDatabase::findScope code is moved to the const-version. The non-const version is reimplemented as the combination with const_cast and static_cast. 2)Unrelated: change style of the declaration of some functions (the '*' is moved near the function name).
This commit is contained in:
parent
4b386986fc
commit
c9fb7f529d
|
@ -2377,7 +2377,7 @@ const Function* SymbolDatabase::findFunctionByNameAndArgs(const Token *tok, cons
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
const Scope* SymbolDatabase::findScopeByName(const std::string& name) const
|
const Scope *SymbolDatabase::findScopeByName(const std::string& name) const
|
||||||
{
|
{
|
||||||
for (std::list<Scope>::const_iterator it = scopeList.begin(); it != scopeList.end(); ++it) {
|
for (std::list<Scope>::const_iterator it = scopeList.begin(); it != scopeList.end(); ++it) {
|
||||||
if (it->className == name)
|
if (it->className == name)
|
||||||
|
@ -2388,7 +2388,7 @@ const Scope* SymbolDatabase::findScopeByName(const std::string& name) const
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
Scope * Scope::findInNestedList(const std::string & name)
|
Scope *Scope::findInNestedList(const std::string & name)
|
||||||
{
|
{
|
||||||
std::list<Scope *>::iterator it;
|
std::list<Scope *>::iterator it;
|
||||||
|
|
||||||
|
@ -2401,7 +2401,7 @@ Scope * Scope::findInNestedList(const std::string & name)
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
Scope * Scope::findRecordInNestedList(const std::string & name)
|
const Scope *Scope::findRecordInNestedList(const std::string & name) const
|
||||||
{
|
{
|
||||||
std::list<Scope *>::const_iterator it;
|
std::list<Scope *>::const_iterator it;
|
||||||
|
|
||||||
|
@ -2414,7 +2414,7 @@ Scope * Scope::findRecordInNestedList(const std::string & name)
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
Scope * Scope::findInNestedListRecursive(const std::string & name)
|
Scope *Scope::findInNestedListRecursive(const std::string & name)
|
||||||
{
|
{
|
||||||
std::list<Scope *>::iterator it;
|
std::list<Scope *>::iterator it;
|
||||||
|
|
||||||
|
@ -2433,7 +2433,7 @@ Scope * Scope::findInNestedListRecursive(const std::string & name)
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
const Scope * Scope::findQualifiedScope(const std::string & name) const
|
const Scope *Scope::findQualifiedScope(const std::string & name) const
|
||||||
{
|
{
|
||||||
if (type == Scope::eClass || type == Scope::eStruct || type == Scope::eNamespace) {
|
if (type == Scope::eClass || type == Scope::eStruct || type == Scope::eNamespace) {
|
||||||
if (name.compare(0, className.size(), className) == 0) {
|
if (name.compare(0, className.size(), className) == 0) {
|
||||||
|
@ -2490,17 +2490,12 @@ bool SymbolDatabase::isCPP() const
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
const Scope * SymbolDatabase::findScope(const Token *tok, const Scope *startScope) const
|
const Scope *SymbolDatabase::findScope(const Token *tok, const Scope *startScope) const
|
||||||
{
|
|
||||||
return const_cast<SymbolDatabase*>(this)->findScope(tok, const_cast<Scope*>(startScope));
|
|
||||||
}
|
|
||||||
|
|
||||||
Scope * SymbolDatabase::findScope(const Token *tok, Scope *startScope)
|
|
||||||
{
|
{
|
||||||
// absolute path
|
// absolute path
|
||||||
if (tok->str() == "::") {
|
if (tok->str() == "::") {
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
Scope *scope = &scopeList.front();
|
const Scope *scope = &scopeList.front();
|
||||||
|
|
||||||
while (scope && tok && tok->isName()) {
|
while (scope && tok && tok->isName()) {
|
||||||
scope = scope->findRecordInNestedList(tok->str());
|
scope = scope->findRecordInNestedList(tok->str());
|
||||||
|
@ -2519,7 +2514,7 @@ Scope * SymbolDatabase::findScope(const Token *tok, Scope *startScope)
|
||||||
|
|
||||||
// relative path
|
// relative path
|
||||||
else if (tok->isName()) {
|
else if (tok->isName()) {
|
||||||
Scope *scope = startScope;
|
const Scope *scope = startScope;
|
||||||
|
|
||||||
while (scope && tok && tok->isName()) {
|
while (scope && tok && tok->isName()) {
|
||||||
scope = scope->findRecordInNestedList(tok->str());
|
scope = scope->findRecordInNestedList(tok->str());
|
||||||
|
|
|
@ -509,17 +509,20 @@ public:
|
||||||
* @brief find if name is in nested list
|
* @brief find if name is in nested list
|
||||||
* @param name name of nested scope
|
* @param name name of nested scope
|
||||||
*/
|
*/
|
||||||
Scope * findInNestedList(const std::string & name);
|
Scope *findInNestedList(const std::string & name);
|
||||||
|
|
||||||
Scope * findRecordInNestedList(const std::string & name);
|
const Scope *findRecordInNestedList(const std::string & name) const;
|
||||||
|
Scope *findRecordInNestedList(const std::string & name) {
|
||||||
|
return const_cast<Scope *>(static_cast<const Scope *>(this)->findRecordInNestedList(name));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief find if name is in nested list
|
* @brief find if name is in nested list
|
||||||
* @param name name of nested scope
|
* @param name name of nested scope
|
||||||
*/
|
*/
|
||||||
Scope * findInNestedListRecursive(const std::string & name);
|
Scope *findInNestedListRecursive(const std::string & name);
|
||||||
|
|
||||||
const Scope * findQualifiedScope(const std::string & name) const;
|
const Scope *findQualifiedScope(const std::string & name) const;
|
||||||
|
|
||||||
void addVariable(const Token *token_, const Token *start_,
|
void addVariable(const Token *token_, const Token *start_,
|
||||||
const Token *end_, AccessControl access_, const Scope *type_,
|
const Token *end_, AccessControl access_, const Scope *type_,
|
||||||
|
@ -599,7 +602,7 @@ public:
|
||||||
|
|
||||||
const Function *findFunctionByToken(const Token *tok) const;
|
const Function *findFunctionByToken(const Token *tok) const;
|
||||||
|
|
||||||
const Function* findFunctionByName(const std::string& str, const Scope* startScope) const;
|
const Function *findFunctionByName(const std::string& str, const Scope* startScope) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief find a function by name and arguments
|
* @brief find a function by name and arguments
|
||||||
|
@ -607,13 +610,16 @@ public:
|
||||||
* @param startScope scope to start looking in
|
* @param startScope scope to start looking in
|
||||||
* @return pointer to function if found or NULL if not found
|
* @return pointer to function if found or NULL if not found
|
||||||
*/
|
*/
|
||||||
const Function* findFunctionByNameAndArgs(const Token *tok, const Scope *startScope) const;
|
const Function *findFunctionByNameAndArgs(const Token *tok, const Scope *startScope) const;
|
||||||
|
|
||||||
const Function* findFunctionByNameAndArgsInScope(const Token *tok, const Scope *scope) const;
|
const Function *findFunctionByNameAndArgsInScope(const Token *tok, const Scope *scope) const;
|
||||||
|
|
||||||
const Scope* findScopeByName(const std::string& name) const;
|
const Scope *findScopeByName(const std::string& name) const;
|
||||||
|
|
||||||
const Scope *findScope(const Token *tok, const Scope *startScope) const;
|
const Scope *findScope(const Token *tok, const Scope *startScope) const;
|
||||||
|
Scope *findScope(const Token *tok, Scope *startScope) const {
|
||||||
|
return const_cast<Scope *>(this->findScope(tok, static_cast<const Scope *>(startScope)));
|
||||||
|
}
|
||||||
|
|
||||||
bool isClassOrStruct(const std::string &type) const {
|
bool isClassOrStruct(const std::string &type) const {
|
||||||
return bool(classAndStructTypes.find(type) != classAndStructTypes.end());
|
return bool(classAndStructTypes.find(type) != classAndStructTypes.end());
|
||||||
|
@ -643,13 +649,11 @@ private:
|
||||||
friend class Scope;
|
friend class Scope;
|
||||||
|
|
||||||
void addClassFunction(Scope **info, const Token **tok, const Token *argStart);
|
void addClassFunction(Scope **info, const Token **tok, const Token *argStart);
|
||||||
Function* addGlobalFunctionDecl(Scope*& scope, const Token *argStart, const Token* funcStart);
|
Function *addGlobalFunctionDecl(Scope*& scope, const Token *argStart, const Token* funcStart);
|
||||||
Function* addGlobalFunction(Scope*& scope, const Token*& tok, const Token *argStart, const Token* funcStart);
|
Function *addGlobalFunction(Scope*& scope, const Token*& tok, const Token *argStart, const Token* funcStart);
|
||||||
void addNewFunction(Scope **info, const Token **tok);
|
void addNewFunction(Scope **info, const Token **tok);
|
||||||
static bool isFunction(const Token *tok, const Scope* outerScope, const Token **funcStart, const Token **argStart);
|
static bool isFunction(const Token *tok, const Scope* outerScope, const Token **funcStart, const Token **argStart);
|
||||||
|
|
||||||
Scope *findScope(const Token *tok, Scope *startScope);
|
|
||||||
|
|
||||||
/** class/struct types */
|
/** class/struct types */
|
||||||
std::set<std::string> classAndStructTypes;
|
std::set<std::string> classAndStructTypes;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue