mirror of
https://github.com/open-mmlab/mmdeploy.git
synced 2025-01-14 08:09:43 +08:00
* minor changes * support windows * fix GCC build * fix lint * reformat * fix Windows build * fix GCC build * search backend ops for onnxruntime * fix lint * fix lint * code clean-up * code clean-up * fix clang build * fix trt support * fix cmake for ncnn * fix cmake for openvino * fix SDK Python API * handle ops for other backends (ncnn, trt) * handle SDK Python API library location * robustify linkage * fix cuda * minor fix for openvino & ncnn * use CMAKE_CUDA_ARCHITECTURES if set * fix cuda preprocessor * fix misc * fix pplnn & pplcv, drop support for pplcv<0.6.0 * robustify cmake * update build.md (#2) * build dynamic modules as module library & fix demo (partially) * fix candidate path for mmdeploy_python * move "enable CUDA" to cmake config for demo * refine demo cmake * add comment * fix ubuntu build * revert docs/en/build.md * fix C API * fix lint * Windows build doc (#3) * check in docs related to mmdeploy build on windows * update build guide on windows platform * update build guide on windows platform * make path of thirdparty libraries consistent * make path consistency * correct build command for custom ops * correct build command for sdk * update sdk build instructions * update doc * correct build command * fix lint * correct build command and fix lint Co-authored-by: lvhan <lvhan@pjlab.org> * trailing whitespace (#4) * minor fix * fix sr sdk model * fix type deduction * fix cudaFree after driver shutting down * update ppl.cv installation warning (#5) * fix device allocator threshold & fix lint * update doc (#6) * update ppl.cv installation warning * missing 'git clone' Co-authored-by: chenxin <chenxin2@sensetime.com> Co-authored-by: zhangli <zhangli@sensetime.com> Co-authored-by: lvhan028 <lvhan_028@163.com> Co-authored-by: lvhan <lvhan@pjlab.org>
94 lines
2.6 KiB
C++
94 lines
2.6 KiB
C++
//// Copyright (c) OpenMMLab. All rights reserved.
|
|
//
|
|
//#ifndef MMDEPLOY_SRC_EXPERIMENTAL_COLLECTION_H_
|
|
//#define MMDEPLOY_SRC_EXPERIMENTAL_COLLECTION_H_
|
|
//
|
|
//#include "token.h"
|
|
//
|
|
// namespace mmdeploy {
|
|
//
|
|
// class Collection {
|
|
// public:
|
|
// template <typename... Args>
|
|
// friend Collection& operator<<(Collection& c, const Token<Args...>& value) {
|
|
// c.put(value);
|
|
// return c;
|
|
// }
|
|
//
|
|
// template <typename... Args>
|
|
// friend const Collection& operator>>(const Collection& c, Token<Args...>& value) {
|
|
// c.get(value);
|
|
// return c;
|
|
// }
|
|
//
|
|
// template <typename T>
|
|
// Result<T> maybe() const {
|
|
// T token;
|
|
// if (get(token)) {
|
|
// return token;
|
|
// }
|
|
// return Status(eFail);
|
|
// }
|
|
//
|
|
// private:
|
|
// std::vector<std::string> keys_;
|
|
// std::vector<std::shared_ptr<void>> values_;
|
|
//
|
|
// template <typename... Args>
|
|
// void put(const Token<Args...>& value) {
|
|
// keys_.push_back(Token<Args...>::key());
|
|
// values_.push_back(std::make_shared<Token<Args...>>(value));
|
|
// }
|
|
//
|
|
// template <typename... Args>
|
|
// bool get(Token<Args...>& value) const {
|
|
// for (int i = 0; i < keys_.size(); ++i) {
|
|
// if (keys_[i] == Token<Args...>::key()) {
|
|
// value = *static_cast<Token<Args...>*>(values_[i].get());
|
|
// return true;
|
|
// }
|
|
// }
|
|
// return false;
|
|
// }
|
|
//};
|
|
//
|
|
// namespace detail {
|
|
//
|
|
// template <typename T>
|
|
// struct function_traits {
|
|
// template <typename R, typename... As>
|
|
// static std::tuple<As...> get_args(std::function<R(As...)>);
|
|
//
|
|
// template <typename R, typename... Args>
|
|
// static R get_ret(std::function<R(Args...)>);
|
|
//
|
|
// using args_t = decltype(get_args(std::function{std::declval<T>()}));
|
|
// using ret_t = decltype(get_ret(std::function{std::declval<T>()}));
|
|
//};
|
|
//
|
|
//// TODO: obtain first error
|
|
//// TODO: combine all errors
|
|
// template <typename F, typename... Args, typename Ret = std::invoke_result_t<F, Args...>>
|
|
// Result<Ret> Apply(F&& f, const Result<Args>&... args) {
|
|
// if ((... && args)) {
|
|
// return std::invoke(std::forward<F>(f), args.value()...);
|
|
// }
|
|
// return Status(eFail);
|
|
// }
|
|
//
|
|
// template <typename F, typename... Args, typename Ret = std::invoke_result_t<F, Args...>>
|
|
// Result<Ret> ApplyImpl(F&& f, const Collection& c, std::tuple<Args...>*) {
|
|
// return Apply(std::forward<F>(f), c.maybe<Args>()...);
|
|
// }
|
|
//
|
|
// } // namespace detail
|
|
//
|
|
// template <typename F, typename Args = typename detail::function_traits<F>::args_t>
|
|
// decltype(auto) Apply(F&& f, const Collection& c) {
|
|
// return detail::ApplyImpl(std::forward<F>(f), c, std::add_pointer_t<Args>{});
|
|
// }
|
|
//
|
|
// } // namespace mmdeploy
|
|
//
|
|
//#endif // MMDEPLOY_SRC_EXPERIMENTAL_COLLECTION_H_
|