// This file is part of OpenCV project. // It is subject to the license terms in the LICENSE file found in the top-level directory // of this distribution and at http://opencv.org/license.html. #include "../precomp.hpp" #include "../dnn_common.hpp" namespace cv { namespace dnn { CV__DNN_INLINE_NS_BEGIN namespace detail { class NotImplementedImpl CV_FINAL : public NotImplemented { public: NotImplementedImpl(const LayerParams& params) { setParamsFrom(params); CV_Assert(params.has("type")); std::stringstream ss; ss << "Node for layer '" << params.name << "' of type '" << params.get("type") << "' wasn't initialized."; msg = ss.str(); } CV_DEPRECATED_EXTERNAL virtual void finalize(const std::vector &input, std::vector &output) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual void finalize(InputArrayOfArrays inputs, OutputArrayOfArrays outputs) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } CV_DEPRECATED_EXTERNAL virtual void forward(std::vector &input, std::vector &output, std::vector &internals) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual void forward(InputArrayOfArrays inputs_arr, OutputArrayOfArrays outputs_arr, OutputArrayOfArrays internals_arr) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } void forward_fallback(InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals) { CV_Error(Error::StsNotImplemented, msg); } CV_DEPRECATED_EXTERNAL void finalize(const std::vector &inputs, CV_OUT std::vector &outputs) { CV_Error(Error::StsNotImplemented, msg); } CV_DEPRECATED std::vector finalize(const std::vector &inputs) { CV_Error(Error::StsNotImplemented, msg); } CV_DEPRECATED void run(const std::vector &inputs, CV_OUT std::vector &outputs, CV_IN_OUT std::vector &internals) { CV_Error(Error::StsNotImplemented, msg); } virtual int inputNameToIndex(String inputName) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual int outputNameToIndex(const String& outputName) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual bool supportBackend(int backendId) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual Ptr initHalide(const std::vector > &inputs) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual Ptr initInfEngine(const std::vector > &inputs) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual Ptr initNgraph(const std::vector > &inputs, const std::vector >& nodes) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual Ptr initVkCom(const std::vector > &inputs) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual Ptr initCUDA( void *context, const std::vector>& inputs, const std::vector>& outputs ) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual void applyHalideScheduler(Ptr& node, const std::vector &inputs, const std::vector &outputs, int targetId) const CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual Ptr tryAttach(const Ptr& node) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual bool setActivation(const Ptr& layer) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual bool tryFuse(Ptr& top) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual void getScaleShift(Mat& scale, Mat& shift) const CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual void unsetAttached() CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual bool getMemoryShapes(const std::vector &inputs, const int requiredOutputs, std::vector &outputs, std::vector &internals) const CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual int64 getFLOPS(const std::vector &inputs, const std::vector &outputs) const CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } virtual bool updateMemoryShapes(const std::vector &inputs) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } private: std::string msg; }; Ptr NotImplemented::create(const LayerParams& params) { return makePtr(params); } Ptr notImplementedRegisterer(LayerParams ¶ms) { return detail::NotImplemented::create(params); } void NotImplemented::Register() { LayerFactory::registerLayer("NotImplemented", detail::notImplementedRegisterer); } void NotImplemented::unRegister() { LayerFactory::unregisterLayer("NotImplemented"); } } // namespace detail CV__DNN_INLINE_NS_END }} // namespace cv::dnn