SerializeFlags: Remove legacy APIs

Remove legacy bitwise operators and boolean conversions
that are meant to be compatible with the old negative flags
usage. Also fix all such usages.

Bug: 110711640
Test: libvintf_test
Change-Id: Ic69a7066dd3ae320aeb0a1848eb7719f67da29d3
diff --git a/SerializeFlags.cpp b/SerializeFlags.cpp
index bbbb276..78839c9 100644
--- a/SerializeFlags.cpp
+++ b/SerializeFlags.cpp
@@ -22,23 +22,6 @@
 SerializeFlags::SerializeFlags(uint32_t value) : mValue(value) {}
 SerializeFlags::SerializeFlags(const SerializeFlags& other) : mValue(other.mValue) {}
 
-SerializeFlags SerializeFlags::operator|(SerializeFlags other) const {
-    return SerializeFlags(mValue & other.mValue);
-}
-
-SerializeFlags SerializeFlags::operator&(SerializeFlags other) const {
-    return SerializeFlags(mValue | other.mValue);
-}
-
-SerializeFlags& SerializeFlags::operator|=(SerializeFlags other) {
-    *this = (*this | other);
-    return *this;
-}
-
-SerializeFlags::operator bool() const {
-    return ~mValue;
-}
-
 #define VINTF_SERIALIZE_FLAGS_FIELD_DEFINE(name, bit)      \
     SerializeFlags SerializeFlags::enable##name() const {  \
         SerializeFlags ret(*this);                         \
diff --git a/include/vintf/SerializeFlags.h b/include/vintf/SerializeFlags.h
index ddd2e96..f39910a 100644
--- a/include/vintf/SerializeFlags.h
+++ b/include/vintf/SerializeFlags.h
@@ -67,14 +67,6 @@
    private:
     uint32_t mValue;
 
-    // Legacy APIs to be compatible with old SerializeFlags usage.
-   public:
-    SerializeFlags operator|(SerializeFlags other) const;
-    SerializeFlags operator&(SerializeFlags other) const;
-    SerializeFlags& operator|=(SerializeFlags other);
-    operator bool() const;
-
-   private:
     SerializeFlags(uint32_t value);
 };
 
diff --git a/main.cpp b/main.cpp
index d7f6630..f766358 100644
--- a/main.cpp
+++ b/main.cpp
@@ -268,8 +268,7 @@
 
     SerializeFlags flags = SerializeFlags::EVERYTHING;
     if (!options.verbose) {
-        flags |= SerializeFlags::NO_HALS;
-        flags |= SerializeFlags::NO_KERNEL;
+        flags = flags.disableHals().disableKernel();
     }
     std::cout << "======== Device HAL Manifest =========" << std::endl;
     if (vm != nullptr) std::cout << gHalManifestConverter(*vm, flags);
diff --git a/parse_xml.cpp b/parse_xml.cpp
index fba8dfd..0aec6b8 100644
--- a/parse_xml.cpp
+++ b/parse_xml.cpp
@@ -607,7 +607,7 @@
     void mutateNode(const MatrixKernel& kernel, NodeType* root, DocType* d,
                     SerializeFlags flags) const override {
         KernelVersion kv = kernel.mMinLts;
-        if (flags & SerializeFlags::NO_KERNEL_MINOR_REVISION) {
+        if (!flags.isKernelMinorRevisionEnabled()) {
             kv.minorRev = 0u;
         }
         appendAttr(root, "version", kv);
@@ -615,7 +615,7 @@
         if (!kernel.mConditions.empty()) {
             appendChild(root, matrixKernelConditionsConverter(kernel.mConditions, d));
         }
-        if (!(flags & SerializeFlags::NO_KERNEL_CONFIGS)) {
+        if (flags.isKernelConfigsEnabled()) {
             appendChildren(root, kernelConfigConverter, kernel.mConfigs, d);
         }
     }
@@ -650,7 +650,7 @@
             appendAttr(root, "override", hal.isOverride());
         }
 
-        if (!(flags & SerializeFlags::NO_FQNAME)) {
+        if (flags.isFqnameEnabled()) {
             std::set<FqInstance> fqInstances;
             hal.forEachInstance([&fqInstances](const auto& manifestInstance) {
                 fqInstances.emplace(manifestInstance.getFqInstanceNoPackage());
@@ -868,18 +868,18 @@
         appendAttr(root, "version", m.getMetaVersion());
         appendAttr(root, "type", m.mType);
 
-        if (!(flags & SerializeFlags::NO_HALS)) {
+        if (flags.isHalsEnabled()) {
             appendChildren(root, manifestHalConverter, m.getHals(), d, flags);
         }
         if (m.mType == SchemaType::DEVICE) {
-            if (!(flags & SerializeFlags::NO_SEPOLICY)) {
+            if (flags.isSepolicyEnabled()) {
                 appendChild(root, halManifestSepolicyConverter(m.device.mSepolicyVersion, d));
             }
             if (m.mLevel != Level::UNSPECIFIED) {
                 this->appendAttr(root, "target-level", m.mLevel);
             }
         } else if (m.mType == SchemaType::FRAMEWORK) {
-            if (!(flags & SerializeFlags::NO_VNDK)) {
+            if (flags.isVndkEnabled()) {
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
                 appendChildren(root, vndkConverter, m.framework.mVndks, d);
@@ -887,14 +887,14 @@
 
                 appendChildren(root, vendorNdkConverter, m.framework.mVendorNdks, d);
             }
-            if (!(flags & SerializeFlags::NO_SSDK)) {
+            if (flags.isSsdkEnabled()) {
                 if (!m.framework.mSystemSdk.empty()) {
                     appendChild(root, systemSdkConverter(m.framework.mSystemSdk, d));
                 }
             }
         }
 
-        if (!(flags & SerializeFlags::NO_XMLFILES)) {
+        if (flags.isXmlFilesEnabled()) {
             appendChildren(root, manifestXmlFileConverter, m.getXmlFiles(), d);
         }
     }
@@ -1029,19 +1029,19 @@
         appendAttr(root, "version", m.getMinimumMetaVersion());
         appendAttr(root, "type", m.mType);
 
-        if (!(flags & SerializeFlags::NO_HALS)) {
+        if (flags.isHalsEnabled()) {
             appendChildren(root, matrixHalConverter, iterateValues(m.mHals), d);
         }
         if (m.mType == SchemaType::FRAMEWORK) {
-            if (!(flags & SerializeFlags::NO_KERNEL)) {
+            if (flags.isKernelEnabled()) {
                 appendChildren(root, matrixKernelConverter, m.framework.mKernels, d, flags);
             }
-            if (!(flags & SerializeFlags::NO_SEPOLICY)) {
+            if (flags.isSepolicyEnabled()) {
                 if (!(m.framework.mSepolicy == Sepolicy{})) {
                     appendChild(root, sepolicyConverter(m.framework.mSepolicy, d));
                 }
             }
-            if (!(flags & SerializeFlags::NO_AVB)) {
+            if (flags.isAvbEnabled()) {
                 if (!(m.framework.mAvbMetaVersion == Version{})) {
                     appendChild(root, avbConverter(m.framework.mAvbMetaVersion, d));
                 }
@@ -1050,7 +1050,7 @@
                 this->appendAttr(root, "level", m.mLevel);
             }
         } else if (m.mType == SchemaType::DEVICE) {
-            if (!(flags & SerializeFlags::NO_VNDK)) {
+            if (flags.isVndkEnabled()) {
 #pragma clang diagnostic push
 #pragma clang diagnostic ignored "-Wdeprecated-declarations"
                 if (!(m.device.mVndk == Vndk{})) {
@@ -1063,14 +1063,14 @@
                 }
             }
 
-            if (!(flags & SerializeFlags::NO_SSDK)) {
+            if (flags.isSsdkEnabled()) {
                 if (!m.device.mSystemSdk.empty()) {
                     appendChild(root, systemSdkConverter(m.device.mSystemSdk, d));
                 }
             }
         }
 
-        if (!(flags & SerializeFlags::NO_XMLFILES)) {
+        if (flags.isXmlFilesEnabled()) {
             appendChildren(root, matrixXmlFileConverter, m.getXmlFiles(), d);
         }
     }
diff --git a/test/LibVintfTest.cpp b/test/LibVintfTest.cpp
index 7f6ce78..ce186fe 100644
--- a/test/LibVintfTest.cpp
+++ b/test/LibVintfTest.cpp
@@ -260,7 +260,7 @@
 TEST_F(LibVintfTest, HalManifestConverter) {
     HalManifest vm = testDeviceManifest();
     std::string xml =
-        gHalManifestConverter(vm, SerializeFlags::HALS_NO_FQNAME & SerializeFlags::SEPOLICY_ONLY);
+        gHalManifestConverter(vm, SerializeFlags::NO_TAGS.enableHals().enableSepolicy());
     EXPECT_EQ(xml,
         "<manifest version=\"1.0\" type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
@@ -297,8 +297,7 @@
 
 TEST_F(LibVintfTest, HalManifestConverterFramework) {
     HalManifest vm = testFrameworkManfiest();
-    std::string xml =
-        gHalManifestConverter(vm, SerializeFlags::HALS_NO_FQNAME & SerializeFlags::VNDK_ONLY);
+    std::string xml = gHalManifestConverter(vm, SerializeFlags::NO_TAGS.enableHals().enableVndk());
     EXPECT_EQ(xml,
         "<manifest version=\"1.0\" type=\"framework\">\n"
         "    <hal format=\"hidl\">\n"
@@ -1285,9 +1284,8 @@
 
 TEST_F(LibVintfTest, HalManifestConverterXmlFile) {
     HalManifest vm = testDeviceManifestWithXmlFile();
-    std::string xml =
-        gHalManifestConverter(vm, SerializeFlags::HALS_NO_FQNAME & SerializeFlags::SEPOLICY_ONLY &
-                                      SerializeFlags::XMLFILES_ONLY);
+    std::string xml = gHalManifestConverter(
+        vm, SerializeFlags::NO_TAGS.enableHals().enableSepolicy().enableXmlFiles());
     EXPECT_EQ(xml,
               "<manifest version=\"1.0\" type=\"device\">\n"
               "    <hal format=\"hidl\">\n"