#ifndef COM_ANDROID_APEX_H #define COM_ANDROID_APEX_H #include #include #include #include #include #include #include #if __has_include() #include #include #else #error Require libxml2 library. Please add libxml2 to shared_libs or static_libs #endif #include "com_android_apex_enums.h" namespace com { namespace android { namespace apex { class ApexInfoList; class ApexInfo; std::optional readApexInfoList(const char* configFile); std::optional parseApexInfoList(const char* xml); void write(std::ostream& _out, const ApexInfoList& apexInfoList); class ApexInfoList { private: const std::vector apexInfo_; public: explicit ApexInfoList(std::vector apexInfo); const std::vector& getApexInfo() const; bool hasApexInfo() const; const ApexInfo* getFirstApexInfo() const; static ApexInfoList read(xmlNode *root); void write(std::ostream& _out, const std::string& _name) const; }; class ApexInfo { private: const std::string moduleName_; const std::string modulePath_; const std::optional preinstalledModulePath_; const int64_t versionCode_; const std::string versionName_; const bool isFactory_; const bool isActive_; const std::optional lastUpdateMillis_; const bool provideSharedApexLibs_; public: ApexInfo(std::string moduleName, std::string modulePath, std::optional preinstalledModulePath, int64_t versionCode, std::string versionName, bool isFactory, bool isActive, std::optional lastUpdateMillis, bool provideSharedApexLibs); const std::string& getModuleName() const; bool hasModuleName() const; const std::string& getModulePath() const; bool hasModulePath() const; const std::string& getPreinstalledModulePath() const; bool hasPreinstalledModulePath() const; const int64_t& getVersionCode() const; bool hasVersionCode() const; const std::string& getVersionName() const; bool hasVersionName() const; const bool& getIsFactory() const; bool hasIsFactory() const; const bool& getIsActive() const; bool hasIsActive() const; const int64_t& getLastUpdateMillis() const; bool hasLastUpdateMillis() const; const bool& getProvideSharedApexLibs() const; bool hasProvideSharedApexLibs() const; static ApexInfo read(xmlNode *root); void write(std::ostream& _out, const std::string& _name) const; }; } // apex } // android } // com #endif // COM_ANDROID_APEX_H