Revert "Use integers to store major / minor versions for FQName."
This reverts commit 1faabf1e3fa71fc2cb57bd0e0489487a0a43a7b7.
Change-Id: I2749a72ff857193c65001efcbea8f0506c56da53
diff --git a/utils/FQName.cpp b/utils/FQName.cpp
index dd29f48..79d16a1 100644
--- a/utils/FQName.cpp
+++ b/utils/FQName.cpp
@@ -19,7 +19,6 @@
#include "StringHelper.h"
#include <android-base/logging.h>
-#include <android-base/parseint.h>
#include <iostream>
#include <regex>
#include <sstream>
@@ -115,8 +114,9 @@
}
bool FQName::setTo(const std::string &s) {
- clearVersion();
mPackage.clear();
+ mMajor.clear();
+ mMinor.clear();
mName.clear();
mValid = true;
@@ -126,18 +126,21 @@
CHECK_EQ(match.size(), 5u);
mPackage = match.str(1);
- parseVersion(match.str(2), match.str(3));
+ mMajor = match.str(2);
+ mMinor = match.str(3);
mName = match.str(4);
} else if (std::regex_match(s, match, kRE2)) {
CHECK_EQ(match.size(), 4u);
- parseVersion(match.str(1), match.str(2));
+ mMajor = match.str(1);
+ mMinor = match.str(2);
mName = match.str(3);
} else if (std::regex_match(s, match, kRE3)) {
CHECK_EQ(match.size(), 4u);
mPackage = match.str(1);
- parseVersion(match.str(2), match.str(3));
+ mMajor = match.str(2);
+ mMinor = match.str(3);
} else if (std::regex_match(s, match, kRE4)) {
mName = match.str(0);
} else if (std::regex_match(s, match, kRE5)) {
@@ -147,13 +150,15 @@
CHECK_EQ(match.size(), 6u);
mPackage = match.str(1);
- parseVersion(match.str(2), match.str(3));
+ mMajor = match.str(2);
+ mMinor = match.str(3);
mName = match.str(4);
mValueName = match.str(5);
} else if (std::regex_match(s, match, kRE7)) {
CHECK_EQ(match.size(), 5u);
- parseVersion(match.str(1), match.str(2));
+ mMajor = match.str(1);
+ mMinor = match.str(2);
mName = match.str(3);
mValueName = match.str(4);
} else if (std::regex_match(s, match, kRE8)) {
@@ -179,17 +184,19 @@
}
std::string FQName::version() const {
- if (!hasVersion()) {
+ CHECK(mMajor.empty() == mMinor.empty());
+ if (mMajor.empty() && mMinor.empty()) {
return "";
}
- return std::to_string(mMajor) + "." + std::to_string(mMinor);
+ return mMajor + "." + mMinor;
}
std::string FQName::sanitizedVersion() const {
- if (!hasVersion()) {
+ CHECK(mMajor.empty() == mMinor.empty());
+ if (mMajor.empty() && mMinor.empty()) {
return "";
}
- return "V" + std::to_string(mMajor) + "_" + std::to_string(mMinor);
+ return "V" + mMajor + "_" + mMinor;
}
std::string FQName::atVersion() const {
@@ -199,33 +206,21 @@
void FQName::setVersion(const std::string &v) {
if (v.empty()) {
- clearVersion();
+ mMajor.clear();
+ mMinor.clear();
return;
}
std::smatch match;
if (std::regex_match(v, match, kREVer)) {
CHECK_EQ(match.size(), 3u);
- parseVersion(match.str(1), match.str(2));
+ mMajor = match.str(1);
+ mMinor = match.str(2);
} else {
mValid = false;
}
}
-void FQName::clearVersion() {
- mMajor = mMinor = 0;
-}
-
-void FQName::parseVersion(const std::string &majorStr, const std::string &minorStr) {
- bool versionParseSuccess =
- ::android::base::ParseUint(majorStr, &mMajor) &&
- ::android::base::ParseUint(minorStr, &mMinor);
- if (!versionParseSuccess) {
- LOG(ERROR) << "numbers in " << majorStr << "." << minorStr << " are out of range.";
- mValid = false;
- }
-}
-
std::string FQName::name() const {
return mName;
}
@@ -431,33 +426,20 @@
bool cpp_compatible) const {
getPackageComponents(components);
- if (!hasVersion()) {
- LOG(WARNING) << "FQName: getPackageAndVersionComponents expects version.";
- return;
- }
-
if (!cpp_compatible) {
- components->push_back(std::to_string(getPackageMajorVersion()) +
- "." + std::to_string(getPackageMinorVersion()));
+ components->push_back(getPackageMajorVersion() +
+ "." + getPackageMinorVersion());
return;
}
components->push_back(sanitizedVersion());
}
-bool FQName::hasVersion() const {
- return mMajor > 0;
-}
-
-size_t FQName::getPackageMajorVersion() const {
- CHECK(hasVersion()) << "FQName: No version exists at getPackageMajorVersion(). "
- << "Did you check hasVersion()?";
+std::string FQName::getPackageMajorVersion() const {
return mMajor;
}
-size_t FQName::getPackageMinorVersion() const {
- CHECK(hasVersion()) << "FQName: No version exists at getPackageMinorVersion(). "
- << "Did you check hasVersion()?";
+std::string FQName::getPackageMinorVersion() const {
return mMinor;
}
diff --git a/utils/include/hidl-util/FQName.h b/utils/include/hidl-util/FQName.h
index 796e892..1ba7a0a 100644
--- a/utils/include/hidl-util/FQName.h
+++ b/utils/include/hidl-util/FQName.h
@@ -53,8 +53,6 @@
std::string version() const;
// Return version in the form "V1_0" if it is present, otherwise empty string.
std::string sanitizedVersion() const;
- // Return true only if version is present.
- bool hasVersion() const;
// The next two methods return the name part of the FQName, that is, the
// part after the version field. For example:
@@ -201,24 +199,20 @@
std::vector<std::string> *components,
bool cpp_compatible) const;
- // return major and minor version if they exist, else abort program.
- // Existence of version can be checked via hasVersion().
- size_t getPackageMajorVersion() const;
- size_t getPackageMinorVersion() const;
+ std::string getPackageMajorVersion() const;
+
+ std::string getPackageMinorVersion() const;
private:
bool mValid;
bool mIsIdentifier;
std::string mPackage;
- // mMajor == 0 means empty.
- size_t mMajor = 0;
- size_t mMinor = 0;
+ std::string mMajor;
+ std::string mMinor;
std::string mName;
std::string mValueName;
void setVersion(const std::string &v);
- void clearVersion();
- void parseVersion(const std::string &majorStr, const std::string &minorStr);
};
static const FQName gIBaseFqName = FQName{"android.hidl.base@1.0::IBase"};