| 4134 | } |
| 4135 | |
| 4136 | void SymbolDatabase::printVariable(const Variable *var, const char *indent) const |
| 4137 | { |
| 4138 | std::cout << indent << "mNameToken: " << tokenToString(var->nameToken(), mTokenizer) << std::endl; |
| 4139 | if (var->nameToken()) { |
| 4140 | std::cout << indent << " declarationId: " << var->declarationId() << std::endl; |
| 4141 | } |
| 4142 | std::cout << indent << "mTypeStartToken: " << tokenToString(var->typeStartToken(), mTokenizer) << std::endl; |
| 4143 | std::cout << indent << "mTypeEndToken: " << tokenToString(var->typeEndToken(), mTokenizer) << std::endl; |
| 4144 | |
| 4145 | if (var->typeStartToken()) { |
| 4146 | const Token * autoTok = nullptr; |
| 4147 | std::cout << indent << " "; |
| 4148 | for (const Token * tok = var->typeStartToken(); tok != var->typeEndToken()->next(); tok = tok->next()) { |
| 4149 | std::cout << " " << tokenType(tok); |
| 4150 | if (tok->str() == "auto") |
| 4151 | autoTok = tok; |
| 4152 | } |
| 4153 | std::cout << std::endl; |
| 4154 | if (autoTok) { |
| 4155 | const ValueType * valueType = autoTok->valueType(); |
| 4156 | std::cout << indent << " auto valueType: " << valueType << std::endl; |
| 4157 | if (var->typeStartToken()->valueType()) { |
| 4158 | std::cout << indent << " " << valueType->str() << std::endl; |
| 4159 | } |
| 4160 | } |
| 4161 | } else if (var->valueType()) { |
| 4162 | std::cout << indent << " " << var->valueType()->str() << std::endl; |
| 4163 | } |
| 4164 | std::cout << indent << "mIndex: " << var->index() << std::endl; |
| 4165 | std::cout << indent << "mAccess: " << accessControlToString(var->accessControl()) << std::endl; |
| 4166 | std::cout << indent << "mFlags: " << std::endl; |
| 4167 | std::cout << indent << " isMutable: " << var->isMutable() << std::endl; |
| 4168 | std::cout << indent << " isStatic: " << var->isStatic() << std::endl; |
| 4169 | std::cout << indent << " isExtern: " << var->isExtern() << std::endl; |
| 4170 | std::cout << indent << " isLocal: " << var->isLocal() << std::endl; |
| 4171 | std::cout << indent << " isConst: " << var->isConst() << std::endl; |
| 4172 | std::cout << indent << " isClass: " << var->isClass() << std::endl; |
| 4173 | std::cout << indent << " isArray: " << var->isArray() << std::endl; |
| 4174 | std::cout << indent << " isPointer: " << var->isPointer() << std::endl; |
| 4175 | std::cout << indent << " isReference: " << var->isReference() << std::endl; |
| 4176 | std::cout << indent << " isRValueRef: " << var->isRValueReference() << std::endl; |
| 4177 | std::cout << indent << " hasDefault: " << var->hasDefault() << std::endl; |
| 4178 | std::cout << indent << " isStlType: " << var->isStlType() << std::endl; |
| 4179 | std::cout << indent << "mType: "; |
| 4180 | if (var->type()) { |
| 4181 | std::cout << var->type()->type() << " " << var->type()->name(); |
| 4182 | std::cout << " " << mTokenizer.list.fileLine(var->type()->classDef); |
| 4183 | std::cout << " " << var->type() << std::endl; |
| 4184 | } else |
| 4185 | std::cout << "none" << std::endl; |
| 4186 | |
| 4187 | if (var->nameToken()) { |
| 4188 | const ValueType * valueType = var->nameToken()->valueType(); |
| 4189 | std::cout << indent << "valueType: " << valueType << std::endl; |
| 4190 | if (valueType) { |
| 4191 | std::cout << indent << " " << valueType->str() << std::endl; |
| 4192 | } |
| 4193 | } |
nothing calls this directly
no test coverage detected