MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / fromLibraryType

Method fromLibraryType

lib/symboldatabase.cpp:8257–8333  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8255}
8256
8257bool ValueType::fromLibraryType(const std::string &typestr, const Settings &settings)
8258{
8259 const Library::PodType* podtype = settings.library.podtype(typestr);
8260 if (podtype && (podtype->sign == 's' || podtype->sign == 'u')) {
8261 if (podtype->size == 1)
8262 type = ValueType::Type::CHAR;
8263 else if (podtype->size == settings.platform.sizeof_int)
8264 type = ValueType::Type::INT;
8265 else if (podtype->size == settings.platform.sizeof_short)
8266 type = ValueType::Type::SHORT;
8267 else if (podtype->size == settings.platform.sizeof_long)
8268 type = ValueType::Type::LONG;
8269 else if (podtype->size == settings.platform.sizeof_long_long)
8270 type = ValueType::Type::LONGLONG;
8271 else if (podtype->stdtype == Library::PodType::Type::BOOL)
8272 type = ValueType::Type::BOOL;
8273 else if (podtype->stdtype == Library::PodType::Type::CHAR)
8274 type = ValueType::Type::CHAR;
8275 else if (podtype->stdtype == Library::PodType::Type::SHORT)
8276 type = ValueType::Type::SHORT;
8277 else if (podtype->stdtype == Library::PodType::Type::INT)
8278 type = ValueType::Type::INT;
8279 else if (podtype->stdtype == Library::PodType::Type::LONG)
8280 type = ValueType::Type::LONG;
8281 else if (podtype->stdtype == Library::PodType::Type::LONGLONG)
8282 type = ValueType::Type::LONGLONG;
8283 else
8284 type = ValueType::Type::UNKNOWN_INT;
8285 sign = (podtype->sign == 'u') ? ValueType::UNSIGNED : ValueType::SIGNED;
8286 return true;
8287 }
8288 if (podtype && podtype->stdtype == Library::PodType::Type::NO) {
8289 type = ValueType::Type::POD;
8290 sign = ValueType::UNKNOWN_SIGN;
8291 return true;
8292 }
8293
8294 const Library::PlatformType *platformType = settings.library.platform_type(typestr, settings.platform.toString());
8295 if (platformType) {
8296 if (platformType->mType == "char")
8297 type = ValueType::Type::CHAR;
8298 else if (platformType->mType == "short")
8299 type = ValueType::Type::SHORT;
8300 else if (platformType->mType == "wchar_t")
8301 type = ValueType::Type::WCHAR_T;
8302 else if (platformType->mType == "int")
8303 type = platformType->mLong ? ValueType::Type::LONG : ValueType::Type::INT;
8304 else if (platformType->mType == "long")
8305 type = platformType->mLong ? ValueType::Type::LONGLONG : ValueType::Type::LONG;
8306 if (platformType->mSigned)
8307 sign = ValueType::SIGNED;
8308 else if (platformType->mUnsigned)
8309 sign = ValueType::UNSIGNED;
8310 if (platformType->mPointer)
8311 pointer = 1;
8312 if (platformType->mPtrPtr)
8313 pointer = 2;
8314 if (platformType->mConstPtr)

Callers 4

setValueTypeMethod · 0.80
parsedeclFunction · 0.80
valueType1Method · 0.80

Calls 3

podtypeMethod · 0.45
platform_typeMethod · 0.45
toStringMethod · 0.45

Tested by 1

valueType1Method · 0.64