// Copyright (c) OpenMMLab. All rights reserved. #ifndef MMDEPLOY_MODEL_IMPL_H #define MMDEPLOY_MODEL_IMPL_H #include "model.h" namespace mmdeploy { /** * @class ModelImpl * @brief sdk model's implementation interface */ class ModelImpl { public: virtual ~ModelImpl() = default; /** * @brief Check the sdk model file's format, to find whether this `ModelImpl` * can read it. * @param sdk_model_path file path of sdk model. It can be a directory, or a * file. * @return status with an error code. */ // virtual bool Accept(const std::string& sdk_model_path) = 0; /** * @brief Load an sdk model. * @param sdk_model_path file path of an sdk model. It can be a file or a * directory. * @note MAKE SURE `Accept` is called before invoking `Load` * @return status with an error code. */ virtual Result Init(const std::string& sdk_model_path) { return Status(eNotSupported); } virtual Result Init(const void* buffer, size_t size) { return Status(eNotSupported); } /** * @brief Read specified file from an sdk model * @param file_path path relative to the root directory of an sdk model. * @return the content of specified file if success, which can be accessed by * `Result.value()`. Otherwise, error code is returned that can be obtained * by `Result.error()` */ virtual Result ReadFile(const std::string& file_path) const = 0; /** * @brief get meta information of an sdk model * @return sdk model's meta information */ virtual Result ReadMeta() const = 0; }; } // namespace mmdeploy #endif // MMDEPLOY_MODEL_IMPL_H