/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_VINTF_PARSE_STRING_H #define ANDROID_VINTF_PARSE_STRING_H #include #include #include #include "CompatibilityMatrix.h" #include "RuntimeInfo.h" #include "HalManifest.h" namespace android { namespace vintf { std::ostream &operator<<(std::ostream &os, HalFormat hf); std::ostream &operator<<(std::ostream &os, Transport tr); std::ostream &operator<<(std::ostream &os, Arch ar); std::ostream &operator<<(std::ostream &os, KernelConfigType il); std::ostream &operator<<(std::ostream &os, Tristate tr); std::ostream &operator<<(std::ostream &os, SchemaType ksv); std::ostream &operator<<(std::ostream &os, const ManifestHal &hal); std::ostream &operator<<(std::ostream &os, const Version &ver); std::ostream &operator<<(std::ostream &os, const VersionRange &vr); std::ostream &operator<<(std::ostream &os, const VndkVersionRange &vr); std::ostream &operator<<(std::ostream &os, const KernelVersion &ver); std::ostream &operator<<(std::ostream &os, const TransportArch &ta); std::ostream &operator<<(std::ostream &os, const ManifestHal &hal); std::ostream &operator<<(std::ostream &os, const MatrixHal &req); std::ostream &operator<<(std::ostream &os, const KernelConfigTypedValue &kcv); template std::string to_string(const T &obj) { std::ostringstream oss; oss << obj; return oss.str(); } bool parse(const std::string &s, HalFormat *hf); bool parse(const std::string &s, Transport *tr); bool parse(const std::string &s, Arch *ar); bool parse(const std::string &s, KernelConfigType *il); bool parse(const std::string &s, KernelConfigKey *key); bool parse(const std::string &s, Tristate *tr); bool parse(const std::string &s, SchemaType *ver); bool parse(const std::string &s, KernelSepolicyVersion *ksv); bool parse(const std::string &s, Version *ver); bool parse(const std::string &s, VersionRange *vr); bool parse(const std::string &s, VndkVersionRange *vr); bool parse(const std::string &s, KernelVersion *ver); // if return true, ta->isValid() must be true. bool parse(const std::string &s, TransportArch *ta); // if return true, hal->isValid() must be true. bool parse(const std::string &s, ManifestHal *hal); bool parse(const std::string &s, MatrixHal *req); bool parseKernelConfigInt(const std::string &s, int64_t *i); bool parseKernelConfigInt(const std::string &s, uint64_t *i); bool parseRange(const std::string &s, KernelConfigRangeValue *range); // Parse the KernelConfigValue in s, assuming type kctv->type, and store it in // kctv->value. bool parseKernelConfigValue(const std::string &s, KernelConfigTypedValue *kctv); // A string that describes the whole object, with versions of all // its components. For debugging and testing purposes only. This is not // the XML string. std::string dump(const HalManifest &vm); std::string dump(const RuntimeInfo &ki); } // namespace vintf } // namespace android #endif // ANDROID_VINTF_PARSE_STRING_H